Add FreeRTOS-Plus directory.

This commit is contained in:
Richard Barry 2012-08-11 21:34:11 +00:00
parent 7bd5f21ad5
commit f508a5f653
6798 changed files with 134949 additions and 19 deletions

View file

@ -0,0 +1,152 @@
/*
FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong? *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest information,
license and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
#include "iodefine.h"
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*
* See http://www.freertos.org/a00110.html.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 1
#define configUSE_TICK_HOOK 1 /* Must be set to one for the timer interrupt to be cleared. */
#define configCPU_CLOCK_HZ ( 200000000UL )
#define configPERIPHERAL_CLOCK_HZ ( 50000000UL )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 36 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 12 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
#define configUSE_CO_ROUTINES 0
#define configUSE_MUTEXES 1
#define configGENERATE_RUN_TIME_STATS 1
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configUSE_RECURSIVE_MUTEXES 1
#define configQUEUE_REGISTRY_SIZE 0
#define configUSE_MALLOC_FAILED_HOOK 1
#define configUSE_APPLICATION_TASK_TAG 1 /* Must be set to one for floating point support in this port. */
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#define INCLUDE_uxTaskGetStackHighWaterMark 1
#define INCLUDE_xTaskGetSchedulerState 1
void vSetupClockForRunTimeStats( void );
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vSetupClockForRunTimeStats()
extern unsigned long ulRunTime;
#define portGET_RUN_TIME_COUNTER_VALUE() ulRunTime
/*-----------------------------------------------------------
* Ethernet configuration.
*-----------------------------------------------------------*/
/* MAC address configuration. */
#define configMAC_ADDR0 0x00
#define configMAC_ADDR1 0x12
#define configMAC_ADDR2 0x13
#define configMAC_ADDR3 0x10
#define configMAC_ADDR4 0x15
#define configMAC_ADDR5 0x11
/* IP address configuration. */
#define configIP_ADDR0 192
#define configIP_ADDR1 168
#define configIP_ADDR2 0
#define configIP_ADDR3 201
/* Netmask configuration. */
#define configNET_MASK0 255
#define configNET_MASK1 255
#define configNET_MASK2 255
#define configNET_MASK3 0
#endif /* FREERTOS_CONFIG_H */

View file

@ -0,0 +1,153 @@
/*
FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong? *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest information,
license and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/*-----------------------------------------------------------
* Simple IO routines to control the LEDs.
*-----------------------------------------------------------*/
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo includes. */
#include "partest.h"
#define partestNUM_LEDS ( 6 )
#define partestALL_LEDS ( usLEDMasks[ 0 ] | usLEDMasks[ 1 ] | usLEDMasks[ 2 ] | usLEDMasks[ 3 ] | usLEDMasks[ 4 ] | usLEDMasks[ 5 ] )
static const unsigned short usLEDMasks[ partestNUM_LEDS ] = { ( 1 << 9 ), ( 1 << 11 ), ( 1 << 12 ), ( 1 << 13 ), ( 1 << 14 ), ( 1 << 15 ) };
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
/* Select port functions for PE9 to PE15. */
PFC.PECRL3.WORD &= ( unsigned short ) ~partestALL_LEDS;
/* Turn all LEDs off. */
PE.DR.WORD &= ( unsigned short ) ~partestALL_LEDS;
/* Set all LEDs to output. */
PFC.PEIORL.WORD |= ( unsigned short ) partestALL_LEDS;
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
if( uxLED < partestNUM_LEDS )
{
if( xValue )
{
/* Turn the LED on. */
taskENTER_CRITICAL();
{
PE.DR.WORD |= usLEDMasks[ uxLED ];
}
taskEXIT_CRITICAL();
}
else
{
/* Turn the LED off. */
taskENTER_CRITICAL();
{
PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ];
}
taskEXIT_CRITICAL();
}
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
if( uxLED < partestNUM_LEDS )
{
taskENTER_CRITICAL();
{
if( ( PE.DR.WORD & usLEDMasks[ uxLED ] ) != 0x00 )
{
PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ];
}
else
{
PE.DR.WORD |= usLEDMasks[ uxLED ];
}
}
taskEXIT_CRITICAL();
}
}
/*-----------------------------------------------------------*/
long lParTestGetLEDState( void )
{
/* Returns the state of the fifth LED. */
return !( PE.DR.WORD & usLEDMasks[ 4 ] );
}
/*-----------------------------------------------------------*/

View file

@ -0,0 +1,15 @@
void main(void);
void main(void)
{
volatile unsigned long ul;
for( ;; )
{
ul++;
ul++;
}
}

View file

@ -0,0 +1,239 @@
[HIMDBVersion]
2.0
[DATABASE_VERSION]
"2.8"
[PROJECT_DETAILS]
"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RTOSDemo.hwp" "SuperH RISC engine" "Renesas SuperH Standard" "Application" "SH2A-FPU" "Other"
[INFORMATION]
"No project information available"
[TOOL_CHAIN]
"Renesas SuperH RISC engine Standard Toolchain" "9.3.2.0"
[CONFIGURATIONS]
"Debug_SH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\Debug_SH7216_E10A-USB_SYSTEM__SH"
[BUILD_PHASES]
"Renesas OptLinker" 1
"Renesas SH Assembler" 1
"Renesas SH C/C++ Compiler" 1
"Renesas SH C/C++ Library Generator" 1
[TOOL_ENVIRONMENT]
[EXTENSIONS]
"Absolute file" "ABS"
"Assembly include file" "INC"
"Assembly list file" "LIS"
"Assembly source file" "ASM"
"Assembly source file" "SRC"
"Binary file" "BIN"
"C header file" "H"
"C list file" "LST"
"C source file" "C"
"C++ header file" "HPP"
"C++ list file" "LPP"
"C++ source file" "CC"
"C++ source file" "CP"
"C++ source file" "CPP"
"CPU information file" "CPU"
"Calling information file" "CAL"
"Debug information file" "DBG"
"Expanded assembly source file" "EXP"
"Hex file" "HEX"
"Library file" "LIB"
"Library information file" "LBP"
"Linkage map file" "MAP"
"Linkage symbol file" "FSY"
"Object file" "OBJ"
"Optimize map file" "bls"
"Preprocessed C source file" "P"
"Preprocessed C++ source file" "PP"
"Profile file" "PRO"
"Relocatable file" "REL"
"Rts information file" "RTS"
"S-Record file" "MOT"
"Stack information file" "SNI"
"TD include object file" "RTI"
[FILE_GROUPS]
"Absolute file" "BIN" "NONE" ""
"Assembly include file" "TEXT" "EDITOR" ""
"Assembly list file" "TEXT" "EDITOR" ""
"Assembly source file" "TEXT" "EDITOR" ""
"Binary file" "BIN" "NONE" ""
"C header file" "TEXT" "EDITOR" ""
"C list file" "TEXT" "EDITOR" ""
"C source file" "TEXT" "EDITOR" ""
"C++ header file" "TEXT" "EDITOR" ""
"C++ list file" "TEXT" "EDITOR" ""
"C++ source file" "TEXT" "EDITOR" ""
"CPU information file" "BIN" "NONE" ""
"Calling information file" "BIN" "NONE" ""
"Debug information file" "BIN" "NONE" ""
"Expanded assembly source file" "TEXT" "EDITOR" ""
"Hex file" "TEXT" "EDITOR" ""
"Library file" "BIN" "NONE" ""
"Library information file" "TEXT" "EDITOR" ""
"Linkage map file" "TEXT" "EDITOR" ""
"Linkage symbol file" "TEXT" "EDITOR" ""
"Object file" "BIN" "NONE" ""
"Optimize map file" "BIN" "NONE" ""
"Preprocessed C source file" "TEXT" "EDITOR" ""
"Preprocessed C++ source file" "TEXT" "EDITOR" ""
"Profile file" "BIN" "NONE" ""
"Relocatable file" "BIN" "NONE" ""
"Rts information file" "BIN" "NONE" ""
"S-Record file" "TEXT" "EDITOR" ""
"Stack information file" "BIN" "NONE" ""
"TD include object file" "BIN" "NONE" ""
[ASSOCIATED_APPLICATIONS]
[TOOLCHAIN_PHASE]
"Renesas OptLinker"
"Renesas SH Assembler"
"Renesas SH C/C++ Compiler"
"Renesas SH C/C++ Library Generator"
[UTILITY_PHASE]
[CUSTOM_PHASES]
[CUSTOM_PHASE_INPUT_GROUP]
[CUSTOM_PHASE_OUTPUT_SYNTAX]
[BUILD_ORDER]
"Renesas SH C/C++ Library Generator" 1
"Renesas SH C/C++ Compiler" 1
"Renesas SH Assembler" 1
"Renesas OptLinker" 1
[BUILD_PHASE_DETAILS]
"Renesas OptLinker" "Object file|Library file|Relocatable file" 0
"Renesas SH Assembler" "Assembly source file|Linkage symbol file" 1
"Renesas SH C/C++ Compiler" "C source file|C++ source file" 1
"Renesas SH C/C++ Library Generator" "" 0
[BUILD_FILE_ORDER_Assembly source file]
"Renesas SH Assembler" 1
[BUILD_FILE_ORDER_C source file]
"Renesas SH C/C++ Compiler" 1
[BUILD_FILE_ORDER_C++ source file]
"Renesas SH C/C++ Compiler" 1
[BUILD_FILE_ORDER_Linkage symbol file]
"Renesas SH Assembler" 1
[SCRAP]
"Project Generator Setup File" "$(PROJDIR)\RTOSDemo.pgs"
[MAPPINGS]
"Assembly source file" "Renesas SH Assembler" "Renesas SH C/C++ Compiler"
"Library file" "Renesas OptLinker" "Renesas SH C/C++ Library Generator"
"Object file" "Renesas OptLinker" "Renesas SH Assembler"
"Object file" "Renesas OptLinker" "Renesas SH C/C++ Compiler"
[PROJECT_FILES]
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "User" "C source file|RenesasCode" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "User" "C source file|Standard Demo Tasks" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "User" "Assembly source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "User" "Assembly source file" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "User" "C source file|FreeRTOS" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "User" "C source file|FreeRTOS" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2
[FOLDER]
"Assembly source file" "Assembly source file"
"C header file" "C header file"
"C source file" "C source file"
"C source file|FreeRTOS" ""
"C source file|FreeTCPIP" ""
"C source file|RenesasCode" ""
"C source file|Standard Demo Tasks" ""
[GENERAL_DATA_PROJECT]
"USE_CUSTOM_LINKAGE_ORDER" "0"
[ON_DEMAND_COMPONENTS_LOADED]
[SYNC_SESSION_NAMES]
[SESSIONS]
"SessionSH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\SessionSH7216_E10A-USB_SYSTEM__SH.hsf" 0
[GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH]
[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas OptLinker]
"Single Shot" "02ce8974bdcaac10" 5
[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH Assembler]
"Assembly source file" "099e0cfb35eaac10" 3
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "099e0cfb35eaac10" 3
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "099e0cfb35eaac10" 3
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "099e0cfb35eaac10" 3
"Linkage symbol file" "05db08d6f178ac10" 4
[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Compiler]
"C source file" "0e01c1b7cefaac10" 2
"C++ source file" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0e01c1b7cefaac10" 2
"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0e01c1b7cefaac10" 2
[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Library Generator]
"Single Shot" "0a60f44dc2baac10" 1
[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH]
"" 0
"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|LITERAL|POOL|BRANCH|JUMP|RETURN] [S|DISPSIZE|12] [I|TAB|8] [B|ERRORPATH|1] [B|CHGINCPATH|1] [S|CPU|SH2AFPU] [S|ENDIAN|BIG] [S|ROUND|NEAREST] [B|DENORMALIZE|0] [B|SKIPDEPENDENCY|1]
" 4
"[V|VERSION|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|LITERAL|POOL|BRANCH|JUMP|RETURN] [S|DISPSIZE|12] [I|TAB|8] [B|ERRORPATH|1] [B|CHGINCPATH|1] [S|CPU|SH2AFPU] [S|ENDIAN|BIG] [S|ROUND|NEAREST] [B|DENORMALIZE|0] [B|SKIPDEPENDENCY|1]
" 3
"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)] [S|CRC|NONE|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [I|CACHESIZE|000000008] [I|CACHELINE|000000020] [S|START|DVECTTBL,DINTTBL(00)|PResetPRG,PIntPRG(0800)|P,C,C$BSEC,C$DSEC,D(01000)|B,R(0FFF80000)|BTX_DESCR(0FFF91100)|BRX_DESCR(0FFF91200)|B_ETHERNET_BUFFERS(0FFF93100)|S(0FFF9FC00)] [B|SKIPDEPENDENCY|1]
" 5
"[V|VERSION|7] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\RenesasCode^"] [S|DEFINE|PACK_STRUCT_END=UNPACK] [S|NOMESSAGE|5|6|8] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|ALIGN4|ALL] [S|ASSEMBLY|^"[V|VERSION|1]] [S|OUTPUTPATH|^"^"$(CONFIGDIR)\$(FILELEAF).obj^"^"]] [S|LITERAL|POOL|BRANCH|JUMP|RETURN]] [S|DISPSIZE|12]] [I|TAB|8]] [B|CHGINCPATH|1]] [S|CPU|SH2AFPU]] [S|ENDIAN|BIG]] [S|ROUND|NEAREST]] [B|DENORMALIZE|0]]^"] [B|TBR|0] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|MXGEN_MEM0|00000000] [S|MXGEN_MEM1|00000000] [B|LIST|0] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [S|FPSCR|SAFE] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|CHGINCPATH|1] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1]
" 2
"[V|VERSION|7] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDARG|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|REENT|1] [S|ALIGN4|ALL] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [B|SAVE_CONT_REG|1] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|SKIPDEPENDENCY|1]
" 1
[EXCLUDED_FILES_Debug_SH7216_E10A-USB_SYSTEM__SH]
[LINKAGE_ORDER_Debug_SH7216_E10A-USB_SYSTEM__SH]
[GENERAL_DATA_CONFIGURATION_Debug_SH7216_E10A-USB_SYSTEM__SH]
[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH]
[SESSION_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH]
"MEMORY_MAPPING_OPTIONS" "Unknown Options"
[EXT_DEBUGGER_INFO]
0 "" "" "" ""
[END]

View file

@ -0,0 +1,35 @@
; Project Generator Setup Infomation
[PGS Version]
Version=1.0
[Toolchain]
Toolchain=Renesas SuperH Standard
Toolchain Name=Renesas SuperH RISC engine Standard Toolchain
Toolchain Version=9.3.2.0
[CPU]
CPU Family=SuperH RISC engine
CPU Series=SH2A-FPU
CPU Type=Other
Operating Mode=Not Support
Address Space=Not Support
Multiple=Not Support
Divide=Not Support
[Project]
Project Name=RTOSDemo
Project Type=Application
[Stack Settings]
Stack Pointer Address=H'FFFC0000
Stack Size=H'400
Stack Section Name=S
Stack Section Address=
Source File Name=stacksct.h
Description=#pragma stacksize 0x400 /* Do not modify this line. */
Default Stack Pointer Address=H'FFFC0000
Default Stack Size=H'400
[Initial Settings]
Simulator I/O=disable

View file

@ -0,0 +1,20 @@
[HIMDBVersion]
2.0
[DATABASE_VERSION]
"1.1"
[SESSIONS_]
"SessionSH7216_E10A-USB_SYSTEM__SH"
[CONFIGURATIONS]
"Debug_SH7216_E10A-USB_SYSTEM__SH"
[CURRENT_CONFIGURATION]
"Debug_SH7216_E10A-USB_SYSTEM__SH"
[CURRENT_SESSION]
"SessionSH7216_E10A-USB_SYSTEM__SH"
[GENERAL_DATA_PROJECT]
[GENERAL_DATA_CONFIGURATION_Debug_SH7216_E10A-USB_SYSTEM__SH]
"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE"
[SESSIONS_Debug_SH7216_E10A-USB_SYSTEM__SH]
"SessionSH7216_E10A-USB_SYSTEM__SH"
[GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH]
[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH]
[END]

View file

@ -0,0 +1,94 @@
/******************************************************************************
* File Name : compiler.h
* Version : 1.0
* Device(s) : Renesas
* Tool-Chain : Renesas SH2A V9+
* OS : None
* H/W Platform : SH2A
* Description : Compiler specific defines for abstraction
*******************************************************************************
* History : DD.MM.YYYY Ver. Description
* : 01.08.2009 1.00 MAB First Release
******************************************************************************/
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************/
/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */
/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */
/*****************************************************************************/
#ifndef COMPILER_H_INCLUDED
#define COMPILER_H_INCLUDED
/******************************************************************************
Defines
******************************************************************************/
/* Embedded CPU data type definitions */
/* Set a few #defines for potential compilers used */
#define MCS 0 /* Hitachi */
#define GNU 1 /* Hitachi + many other devices */
#define IAR 2 /* Hitachi + some other devices */
#define MSV 3 /* Microsoft Visual C */
/* Test the compiler intrinisic defs */
#ifdef __GNUC__ /* GNU compiler - C mode */
#define COMPILER GNU
#elif defined(__GNUG__) /* GNU compiler - C++ mode */
#define COMPILER GNU
#elif defined __IAR_SYSTEMS_ICC /* IAR compiler */
#define COMPILER IAR
#elif defined _MSC_VER /* Microsoft c compiler */
#define COMPILER MSV
#else
#define COMPILER MCS /* MCS compiler */
/* MCS compiler has MSB first even in little
endian mode unless #pragma or command
line switch used to change it */
#define _BITFIELDS_MSB_FIRST_
#endif
/******************************************************************************
Pragma macros
******************************************************************************/
/* Visual Cpp */
#if COMPILER == MSV
#define PACK1 pack(1)
#define UNPACK pack()
#else
/* MCS SH & H8S series recently got unified
pragma syntax */
#define PACK1 # ## pragma pack 1
#define UNPACK # ## pragma unpack
#endif
#endif /* COMPILER_H_INCLUDED */
/******************************************************************************
End Of File
******************************************************************************/

View file

@ -0,0 +1,152 @@
/******************************************************************************
* DISCLAIMER
* Please refer to http://www.renesas.com/disclaimer
******************************************************************************
Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved.
*******************************************************************************
* File Name : hwEthernet.h
* Version : 1.00
* Description : Ethernet module device driver
******************************************************************************
* History : DD.MM.YYYY Version Description
* : 06.10.2009 1.00 First Release
******************************************************************************/
#ifndef HWETHERNET_H_INCLUDED
#define HWETHERNET_H_INCLUDED
/******************************************************************************
Includes <System Includes> , "Project Includes"
******************************************************************************/
#include "typedefine.h"
/******************************************************************************
Typedef definitions
******************************************************************************/
typedef struct Discript
{
uint32_t status;
ushort16_t bufsize;
ushort16_t size;
char8_t *buf_p;
struct Discript *next;
} ethfifo;
/******************************************************************************
Macro definitions
******************************************************************************/
#define BUFSIZE 256
#define ENTRY 8
#define ACT 0x80000000
#define DL 0x40000000
#define FP1 0x20000000
#define FP0 0x10000000
#define FE 0x08000000
#define RFOVER 0x00000200
#define RMAF 0x00000080
#define RRF 0x00000010
#define RTLF 0x00000008
#define RTSF 0x00000004
#define PRE 0x00000002
#define CERF 0x00000001
#define ITF 0x00000010
#define CND 0x00000008
#define DLC 0x00000004
#define CD 0x00000002
#define TRO 0x00000001
/**
* Renesas Ethernet API return defines
**/
#define R_ETHER_OK 0
#define R_ETHER_ERROR -1
/******************************************************************************
Variable Externs
******************************************************************************/
/******************************************************************************
Functions Prototypes
******************************************************************************/
/**
* Renesas Ethernet API prototypes
**/
#ifdef __cplusplus
extern "C" {
#endif
extern int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]);
extern int32_t R_Ether_Close(uint32_t ch);
extern int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len);
extern int32_t R_Ether_Read(uint32_t ch, void *buf);
/* Added for the FreeRTOS demo project. */
unsigned long ulEMACRead( void );
void vEMACWrite( void );
void vInitEmac( void );
long lEMACWaitForLink( void );
/* Extension of the API functions added to allow PnP link */
/* R_Ether_OpenEx opens irrispective of link status */
extern int32_t R_Ether_OpenEx(uint32_t ch, uint8_t mac_addr[]);
/* Enables/disables operation for the current link */
extern int32_t R_Ether_EnableEx(uint32_t ch, int iEnable);
#ifdef __cplusplus
}
#endif
/****************************************************/
/* Ethernet statistic collection data */
struct enet_stats
{
uint32_t rx_packets; /* total packets received */
uint32_t tx_packets; /* total packets transmitted */
uint32_t rx_errors; /* bad packets received */
uint32_t tx_errors; /* packet transmit problems */
uint32_t rx_dropped; /* no space in buffers */
uint32_t tx_dropped; /* no space available */
uint32_t multicast; /* multicast packets received */
uint32_t collisions;
/* detailed rx_errors: */
uint32_t rx_length_errors;
uint32_t rx_over_errors; /* receiver ring buffer overflow */
uint32_t rx_crc_errors; /* recved pkt with crc error */
uint32_t rx_frame_errors; /* recv'd frame alignment error */
uint32_t rx_fifo_errors; /* recv'r fifo overrun */
uint32_t rx_missed_errors; /* receiver missed packet */
/* detailed tx_errors */
uint32_t tx_aborted_errors;
uint32_t tx_carrier_errors;
uint32_t tx_fifo_errors;
uint32_t tx_heartbeat_errors;
uint32_t tx_window_errors;
};
struct ei_device
{
const char8_t *name;
uchar8_t open;
uchar8_t Tx_act;
uchar8_t Rx_act;
uchar8_t txing; /* Transmit Active */
uchar8_t irqlock; /* EDMAC's interrupt disabled when '1'. */
uchar8_t dmaing; /* EDMAC Active */
ethfifo *rxcurrent; /* current receive discriptor */
ethfifo *txcurrent; /* current transmit discriptor */
uchar8_t save_irq; /* Original dev->irq value. */
struct enet_stats stat;
uchar8_t mac_addr[6];
};
#endif /* HWETHERNET_H_INCLUDED */

View file

@ -0,0 +1,91 @@
/******************************************************************************
* File Name : hwEthernetPhy.h
* Version : 1.0
* Device(s) : Renesas
* Tool-Chain : Renesas SH2A V9+
* OS : None
* H/W Platform : SH2A
* Description : Hardware driver for the LAN8700 PHY
*******************************************************************************
* History : DD.MM.YYYY Ver. Description
* : 01.08.2009 1.00 MAB First Release
******************************************************************************/
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************/
/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */
/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */
/*****************************************************************************/
#ifndef HWETHERNETPHY_H_INCLUDED
#define HWETHERNETPHY_H_INCLUDED
/*****************************************************************************
Enumerated Types
******************************************************************************/
typedef enum _NETLNK
{
PHY_NO_LINK = 0,
PHY_LINK_10H,
PHY_LINK_10F,
PHY_LINK_100H,
PHY_LINK_100F
} NETLNK;
/*****************************************************************************
Public Functions
******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************
Function Name: phyReset
Description: Executes software reset of PHY and sets to auto negotiate link
Parameters: None
Return value: 0 for success -1 on error
******************************************************************************/
extern int phyReset(void);
/*****************************************************************************
Function Name: phyStatus
Description: Function to reurn the type of physical link
Parameters: none
Return value: The link type
*****************************************************************************/
extern NETLNK phyStatus(void);
#ifdef __cplusplus
}
#endif
#endif /* HWETHERNETPHY_H_INCLUDED */
/*****************************************************************************
End Of File
******************************************************************************/

View file

@ -0,0 +1,435 @@
/******************************************************************************
* File Name : hwEthernetPhy.c
* Version : 1.0
* Device(s) : Renesas
* Tool-Chain : Renesas SH2A V9+
* OS : None
* H/W Platform : SH2A
* Description : Hardware driver for the LAN8700 PHY
*******************************************************************************
* History : DD.MM.YYYY Ver. Description
* : 01.08.2009 1.00 MAB First Release
******************************************************************************/
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************/
/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */
/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */
/*****************************************************************************/
/*****************************************************************************
System Includes
******************************************************************************/
#include <stdio.h>
/* Header file for sleep() and nop() functions */
#include <machine.h>
/*****************************************************************************
User Includes
******************************************************************************/
/* Defines for I/O registers */
#include "iodefine.h"
/* rsk7216def.h provides common defines for widely used items. */
#include "rsk7216def.h"
/* Physical layer functions */
#include "hwEthernetPhy.h"
#include "Trace.h"
#include "FreeRTOS.h"
#include "task.h"
/*****************************************************************************
Constant Macros
******************************************************************************/
/* Preamble */
#define PHY_ST 0x0001
/* Operation to be executed on PHY registers */
#define PHY_READ 0x0002
#define PHY_WRITE 0x0001
/* Physical address of PHY device */
#define PHY_ADDR 0x001F
/* Description of PHY data registers */
#define PHY_BASIC_MODE_CONTROL 0x0000
#define PHY_BASIC_MODE_STATUS 0x0001
#define PHY_IDENTIFIER1 0x0002
#define PHY_IDENTIFIER2 0x0003
#define PHY_AN_ADVERTISEMENT 0x0004
#define PHY_AN_LINK_PARTNER_ABILITY 0x0005
/* Definitions of some configuration bits */
#define PHY_RESET 0x8000
#define PHY_AN_ENABLE 0x1200
/* Bits for auto negotiation for 100, 10 half and full duplex set */
#define PHY_AN_10_100_F_H 0xDE1
/* Link partner ability register bits for establising the result of the
auto negotiation */
#define PHY_AN_100F BIT_8
#define PHY_AN_100H BIT_7
#define PHY_AN_10F BIT_6
#define PHY_AN_10H BIT_5
/*****************************************************************************
Function Prototypes
******************************************************************************/
static USHORT phyReadReg(USHORT usRegAddr);
static void phyWriteReg(USHORT usRegAddr, USHORT usData);
static void phyPreamble(void);
static void phyMiiWrite1(void);
static void phyMiiWrite0(void);
static void phyRegSet(USHORT usRegAddr, long lOption);
static void phyRegRead(PUSHORT pusData);
static void phyRegWrite(USHORT usData);
static void phyTaZ0(void);
static void phyTa10(void);
static void phyDelay(void);
/*****************************************************************************
Public Functions
******************************************************************************/
/*****************************************************************************
Function Name: phyReset
Description: Executes software reset of PHY and sets to auto negotiate link
Parameters: None
Return value: 0 for success -1 on error
******************************************************************************/
int phyReset(void)
{
/* One second of attempting to reset the PHY */
int iCount = 1000;
/* Set software reset */
phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_RESET);
while (iCount--)
{
USHORT usData;
vTaskDelay( 2 / portTICK_RATE_MS );
/* Read the status of the PHY */
usData = phyReadReg(PHY_BASIC_MODE_CONTROL);
/* Wait for the reset flag to be cleared */
if ((usData & PHY_RESET) == 0)
{
/* Set auto negoatiation for 10,100 full and half duplex */
phyWriteReg(PHY_AN_ADVERTISEMENT, PHY_AN_10_100_F_H);
/* Set auto negotiate and restart auto negotiate bits */
phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_AN_ENABLE);
/* Auto negotiation will now take place wait for two seconds */
vTaskDelay( 2000 / portTICK_RATE_MS );
/* Success */
return 0;
}
}
/* Phy did not respond to software reset */
return -1;
}
/*****************************************************************************
End of function phyReset
******************************************************************************/
/*****************************************************************************
Function Name: phyStatus
Description: Function to reurn the type of physical link
Parameters: none
Return value: The link type
*****************************************************************************/
NETLNK phyStatus(void)
{
/* The state of this flag depens on the hardware connection to the MAC */
if (!EtherC.PSR.BIT.LMON)
{
/* Read the auto negotiation link partner ability register to establish
the type of link */
USHORT usData = phyReadReg(PHY_AN_LINK_PARTNER_ABILITY);
if (usData & PHY_AN_100F)
{
return PHY_LINK_100F;
}
if (usData & PHY_AN_100H)
{
return PHY_LINK_100H;
}
if (usData & PHY_AN_10F)
{
return PHY_LINK_10F;
}
if (usData & PHY_AN_10H)
{
return PHY_LINK_10H;
}
}
return PHY_NO_LINK;
}
/*****************************************************************************
End of function phyStatus
******************************************************************************/
/*****************************************************************************
Private Functions
******************************************************************************/
/*****************************************************************************
Function Name: phyReadReg
Description: Reads data from a register with the address usRegAddr
Parameters: (USHORT) usRegAddr - address to be read;
Return value: (USHORT) - value from read register;
******************************************************************************/
static USHORT phyReadReg(USHORT usRegAddr)
{
USHORT usData;
phyPreamble();
phyRegSet(usRegAddr, PHY_READ);
phyTaZ0();
phyRegRead(&usData);
phyTaZ0();
return usData;
}
/*****************************************************************************
End of function phyReadReg
******************************************************************************/
/*****************************************************************************
Function Name: phyWriteReg
Description: Write data to register with the address usRegAddr
Parameters: (USHORT) usRegAddr - address of register where to be written;
(USHORT) usData - value to write;
Return value: None
******************************************************************************/
static void phyWriteReg(USHORT usRegAddr, USHORT usData)
{
phyPreamble();
phyRegSet(usRegAddr, PHY_WRITE);
phyTa10();
phyRegWrite(usData);
phyTaZ0();
}
/*****************************************************************************
End of function phyWriteReg
******************************************************************************/
/*****************************************************************************
Function Name: phyPreamble
Description: Writing 32 bits of '1'
Parameters: None
Return value: None
******************************************************************************/
static void phyPreamble(void)
{
int iCount = 32;
while (iCount--)
{
phyMiiWrite1();
}
}
/*****************************************************************************
End of function phyPreamble
******************************************************************************/
/*****************************************************************************
Function Name: phyRegSet
Description: Sets the address of register
Parameters: (USHORT) usRegAddr - address to be set;
(long) lOption - PHY_READ or PHY_WRITE;
Return value: None
******************************************************************************/
static void phyRegSet(USHORT usRegAddr, long lOption)
{
int iBit = 14;
USHORT usData;
/* Format of PHY Address Set Transmission */
/* ST R/W PAddress Address */
/* 1 10 11111 xxxx 00 */ //Read
/* 1 01 11111 xxxx 00 */ //Write
usData = 0;
/* ST code */
usData = (PHY_ST << 14);
if (lOption == PHY_READ)
{
/* Option code (RD) */
usData |= (PHY_READ << 12);
}
else
{
/* Option code (WT) */
usData |= (PHY_WRITE << 12);
}
/* PHY Address */
usData |= ((BYTE)PHY_ADDR << 7);
/* Reg Address */
usData |= (USHORT)(usRegAddr << 2);
while (iBit--)
{
if ((usData & 0x8000) == 0)
{
phyMiiWrite0();
}
else
{
phyMiiWrite1();
}
usData <<= 1;
}
}
/*****************************************************************************
End of function phyRegSet
******************************************************************************/
/*****************************************************************************
Function Name: phyRegRead
Description: Read data from register
Parameters: IN pusDest - value to be read;
Return value: None
******************************************************************************/
static void phyRegRead(PUSHORT pusDest)
{
USHORT usData = 0;
int iBit = 16;
while (iBit--)
{
EtherC.PIR.LONG = 0x00UL;
EtherC.PIR.LONG = 0x01UL;
usData <<= 1;
/* MDI read */
usData |= (USHORT)((EtherC.PIR.LONG & 0x08UL) >> 3);
EtherC.PIR.LONG = 0x01UL;
EtherC.PIR.LONG = 0x00UL;
}
*pusDest = usData;
}
/*****************************************************************************
End of function phyRegRead
******************************************************************************/
/*****************************************************************************
Function Name: phyRegWrite
Description: Write 2 bytes (16 bit) to MII
Parameters: IN usData - value to be written;
Return value: None
******************************************************************************/
static void phyRegWrite(USHORT usData)
{
int iBit = 16;
while (iBit--)
{
if ((usData & 0x8000) == 0)
{
phyMiiWrite0();
}
else
{
phyMiiWrite1();
}
usData <<= 1;
}
}
/*****************************************************************************
End of function phyRegWrite
******************************************************************************/
/*****************************************************************************
Function Name: phyTaZ0
Description: Set bus to high Z
Parameters: None
Return value: None
******************************************************************************/
static void phyTaZ0(void)
{
EtherC.PIR.LONG = 0x00UL;
EtherC.PIR.LONG = 0x01UL;
EtherC.PIR.LONG = 0x01UL;
EtherC.PIR.LONG = 0x00UL;
}
/*****************************************************************************
End of function phyTaZ0
******************************************************************************/
/*****************************************************************************
Function Name: phyTa10
Description: Set bus to output
Parameters: None
Return value: None
******************************************************************************/
static void phyTa10(void)
{
EtherC.PIR.LONG = 0x06UL;
EtherC.PIR.LONG = 0x07UL;
EtherC.PIR.LONG = 0x07UL;
EtherC.PIR.LONG = 0x06UL;
EtherC.PIR.LONG = 0x02UL;
EtherC.PIR.LONG = 0x03UL;
EtherC.PIR.LONG = 0x03UL;
EtherC.PIR.LONG = 0x02UL;
}
/*****************************************************************************
End of function phyTa10
******************************************************************************/
/*****************************************************************************
Function Name: phyMiiWrite1
Description: Write 1 to MII
Parameters: None
Return value: None
******************************************************************************/
static void phyMiiWrite1(void)
{
EtherC.PIR.LONG = 0x06UL;
EtherC.PIR.LONG = 0x07UL;
EtherC.PIR.LONG = 0x07UL;
EtherC.PIR.LONG = 0x06UL;
}
/*****************************************************************************
End of function phyMiiWrite1
******************************************************************************/
/*****************************************************************************
Function Name: phyMiiWrite0
Description: Write 0 to MII
Parameters: None
Return value: None
******************************************************************************/
static void phyMiiWrite0(void)
{
EtherC.PIR.LONG = 0x02UL;
EtherC.PIR.LONG = 0x03UL;
EtherC.PIR.LONG = 0x03UL;
EtherC.PIR.LONG = 0x02UL;
}
/*****************************************************************************
End of function phyMiiWrite0
******************************************************************************/
/*****************************************************************************
End Of File
******************************************************************************/

View file

@ -0,0 +1,106 @@
/******************************************************************************
* File Name : rsk7670def.h
* Version : 1.0
* Device(s) : SH2A/7670
* Tool-Chain : Renesas SH2A V9+
* OS : None
* H/W Platform : RSK+SH7670
* Description : Defines for RSK2+SH7670 kit.
*******************************************************************************
* History : DD.MM.YYYY Ver. Description
* : 01.08.2009 1.00 MAB First Release
******************************************************************************/
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************/
/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */
/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */
/*****************************************************************************/
#ifndef RSK7216DEF_H
#define RSK7216DEF_H
/******************************************************************************
Macro Defines
******************************************************************************/
/* General Values */
#define LED_ON (1)
#define LED_OFF (0)
#define SET_BIT_HIGH (1)
#define SET_BIT_LOW (0)
#define SET_BYTE_HIGH (0xFF)
#define SET_BYTE_LOW (0x00)
/* Define switches to be polled if not available as interrupts */
#define SW_ACTIVE FALSE
#define SW1 PORT.PDDRL.BIT.PD16DR //"IRQ0" PD16
#define SW2 PORT.PADRL.BIT.PA20DR //"IRQ6" PA20
/* LEDs */
#define LED0 PE.DR.BIT.B9
#define LED1 PE.DR.BIT.B11
#define LED2 PE.DR.BIT.B12
#define LED3 PE.DR.BIT.B13
#define LED4 PE.DR.BIT.B14
#define LED5 PE.DR.BIT.B15
#define ID_LED1 1
#define ID_LED2 2
#define ID_LED3 4
#define ID_LED4 8
#define ID_LED5 16
#define ID_LED6 32
#define ID_LED_ALL (ID_LED1 | ID_LED2 | ID_LED3 | ID_LED4 | ID_LED5 | ID_LED6)
#define PERIPHERAL_CLOCK_FREQUENCY 50000000UL
/******************************************************************************
Constant Macros
******************************************************************************/
#define BOARD_NAME "SH7216 CPU BOARD"
/******************************************************************************
Public Functions
******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
extern void led_init(void);
extern void led_on(unsigned short ledno);
extern void led_off(unsigned short ledno);
#ifdef __cplusplus
}
#endif
#endif /* RSK7216DEF_H */
/******************************************************************************
End Of File
******************************************************************************/

View file

@ -0,0 +1,104 @@
/******************************************************************************
* File Name : trace.h
* Version : 1.0
* Device(s) : Renesas
* Tool-Chain : Renesas SH2A V9+
* OS : None
* H/W Platform : SH2A
* Description : Debug formatted output routine
* TRACE print function enabled with define _TRACE_ON_
*******************************************************************************
* History : DD.MM.YYYY Ver. Description
* : 01.08.2009 1.00 MAB First Release
******************************************************************************/
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************/
/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */
/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */
/*****************************************************************************/
#ifndef TRACE_H_INCLUDED
#define TRACE_H_INCLUDED
/******************************************************************************
User Includes
******************************************************************************/
#include "types.h"
/******************************************************************************
Function Macros
******************************************************************************/
/* Some function macros for TRACE output
NOTE: debugging TRACE statements require double braces
so the debug strings can be removed from the output load module:
TRACE(("My Variable = %u\r\n", uiMyVariable));
See ANSI C formatted output for more detail on the format specifiers */
#ifdef _TRACE_ON_ /* Trace ON */
#define TRACE(_x_) Trace _x_
#else /* _NO_TRACE_ON_ */
#define TRACE(_x_) /* TRACE REMOVED */
#endif /* _TRACE_ON_ */
/******************************************************************************
Public Functions
******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/******************************************************************************
Function Name: Trace
Description: Function to perform a formatted print output for debugging
Parameters: IN pszFormat - Pointer to a null terminated format string
I/O ... - The parameters
Return value: The number of chars output
******************************************************************************/
#ifdef _TRACE_ON_ /* Trace ON */
extern int Trace(const char *pszFormat, ...);
#endif
/******************************************************************************
Function Name: dbgPrintBuffer
Description: Function to print a data buffer in hex format
Parameters: IN pbyBuffer - Pointer to the buffer
IN stLength - The length of the buffer
Return value: none
******************************************************************************/
#ifdef _TRACE_ON_ /* Trace ON */
extern void dbgPrintBuffer(PBYTE pbyBuffer, size_t stLength);
#endif
#ifdef __cplusplus
}
#endif
#endif /* TRACE_H_INCLUDED */
/******************************************************************************
End Of File
******************************************************************************/

View file

@ -0,0 +1,59 @@
/******************************************************************************
* File Name : typedefine.h
* Version : 1.0
* Device(s) : Renesas
* Tool-Chain : Renesas SH2A V9+
* OS : None
* H/W Platform : SH2A
* Description : Type Definition File
*******************************************************************************
* History : DD.MM.YYYY Ver. Description
* : 01.08.2009 1.00 MAB First Release
******************************************************************************/
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************/
/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */
/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */
/*****************************************************************************/
#ifndef _TYPE_DEFINE_H_
#define _TYPE_DEFINE_H_
typedef unsigned char Bool;
// type defs for API standard
typedef signed char char8_t;
typedef unsigned char uchar8_t;
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short short16_t;
typedef unsigned short ushort16_t;
typedef signed long int32_t;
typedef unsigned long uint32_t;
typedef signed long long32_t;
typedef unsigned long ulong32_t;
#endif /* TYPEDEFINE_H */

View file

@ -0,0 +1,476 @@
/******************************************************************************
* File Name : types.h
* Version : 1.0
* Device(s) : Renesas
* Tool-Chain : Renesas SH2A V9+
* OS : None
* H/W Platform : SH2A
* Description : User Defined Type Definition File
*******************************************************************************
* History : DD.MM.YYYY Ver. Description
* : 01.08.2009 1.00 MAB First Release
******************************************************************************/
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************/
/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */
/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */
/*****************************************************************************/
#ifndef TYPES_H_INCLUDED
#define TYPES_H_INCLUDED
/******************************************************************************
User Includes
******************************************************************************/
#include "Compiler.h"
/******************************************************************************
Function Macros
******************************************************************************/
#ifndef SWAPWORD
#define SWAPWORD(x) (WORD)((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
#endif
#ifndef LOBYTE
#define LOBYTE(x) (BYTE)(x)
#endif
#ifndef HIBYTE
#define HIBYTE(x) (BYTE)((x) >> 8)
#endif
#ifndef MAKEWORD
#define MAKEWORD(a, b) ((WORD) (((BYTE) (a)) |\
((WORD) ((BYTE) (b))) << 8))
#endif
/******************************************************************************
Typedefs
******************************************************************************/
/* Generic definitions */
#ifndef NULL /* set null ((void *)0) */
#define NULL 0
#endif
#ifndef PNULL
#define PNULL ((PVOID)0)
#endif
#ifndef BIT_0 /* set bits */
#define BIT_0 0x1
#define BIT_1 0x2
#define BIT_2 0x4
#define BIT_3 0x8
#define BIT_4 0x10
#define BIT_5 0x20
#define BIT_6 0x40
#define BIT_7 0x80
#define BIT_8 0x100
#define BIT_9 0x200
#define BIT_10 0x400
#define BIT_11 0x800
#define BIT_12 0x1000
#define BIT_13 0x2000
#define BIT_14 0x4000
#define BIT_15 0x8000
#define BIT_16 0x10000L
#define BIT_17 0x20000L
#define BIT_18 0x40000L
#define BIT_19 0x80000L
#define BIT_20 0x100000L
#define BIT_21 0x200000L
#define BIT_22 0x400000L
#define BIT_23 0x800000L
#define BIT_24 0x1000000L
#define BIT_25 0x2000000L
#define BIT_26 0x4000000L
#define BIT_27 0x8000000L
#define BIT_28 0x10000000L
#define BIT_29 0x20000000L
#define BIT_30 0x40000000L
#define BIT_31 0x80000000L
#endif
#ifndef TRUE /* true and false */
#define TRUE (BOOL)1
#endif
#ifndef FALSE
#define FALSE (BOOL)0
#endif
#if defined(WIN32_SH4) && defined(__cplusplus)
#define _SIZE_T
#else
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned long size_t;
#endif
#endif
#ifndef BOOL
#define BOOL BOOL
typedef unsigned char BOOL;
#endif
#ifndef PBOOL
#define PBOOL PBOOL
typedef unsigned char *PBOOL;
#endif
#ifndef TCHAR
#define TCHAR TCHAR
typedef char TCHAR;
#endif
#ifndef PTCHAR
#define PTCHAR PTCHAR
typedef char *PTCHAR;
#endif
#ifndef PCTCHAR
#define PCTCHAR PCTCHAR
typedef char *const PCTCHAR;
#endif
#ifndef CPCTCHAR
#define CPCTCHAR CPCTCHAR
typedef const char *const CPCTCHAR;
#endif
#ifndef CHAR
#define CHAR CHAR
typedef char CHAR;
#endif
#ifndef CCHAR
#define CCHAR CCHAR
typedef const char CCHAR;
#endif
#ifndef PCHAR
#define PCHAR PCHAR
typedef char *PCHAR;
#endif
#ifndef CPCHAR
#define CPCHAR CPCHAR
typedef const char *CPCHAR;
#endif
#ifndef PCCHAR
#define PCCHAR PCCHAR
typedef char *const PCCHAR;
#endif
#ifndef CPCCHAR
#define CPCCHAR CPCCHAR
typedef const char *const CPCCHAR;
#endif
#ifndef PTSTR
#define PTSTR PTSTR
typedef const char *PTSTR;
#endif
#ifndef PCTSTR
#define PCTSTR PCTSTR
typedef char *const PCTSTR;
#endif
#ifndef PCTSTR
#define PCTSTR PCTSTR
typedef const char *PCTSTR;
#endif
#ifndef PTSTR
#define PTSTR PTSTR
typedef char *PTSTR;
#endif
#ifndef BYTE
#define BYTE BYTE
typedef unsigned char BYTE;
#endif
#ifndef PBYTE
#define PBYTE PBYTE
typedef unsigned char *PBYTE;
#endif
#ifndef PCBYTE
#define PCBYTE PCBYTE
typedef unsigned char *const PCBYTE;
#endif
#ifndef CPBYTE
#define CPBYTE CPBYTE
typedef const unsigned char *CPBYTE;
#endif
#ifndef SHORT
#define SHORT SHORT
typedef short SHORT;
#endif
#ifndef PSHORT
#define PSHORT PSHORT
typedef short *PSHORT;
#endif
#ifndef PCSHORT
#define PCSHORT PCSHORT
typedef short *const PCSHORT;
#endif
#ifndef CPSHORT
#define CPSHORT CPSHORT
typedef const short *CPSHORT;
#endif
#ifndef USHORT
#define USHORT USHORT
typedef unsigned short USHORT;
#endif
#ifndef PUSHORT
#define PUSHORT PUSHORT
typedef unsigned short *PUSHORT;
#endif
#ifndef PCUSHORT
#define PCUSHORT PCUSHORT
typedef unsigned short *const PCUSHORT;
#endif
#ifndef CPUSHORT
#define CPUSHORT CPUSHORT
typedef const unsigned short *CPUSHORT;
#endif
#ifndef WORD
#define WORD WORD
typedef unsigned short WORD;
#endif
#ifndef PWORD
#define PWORD PWORD
typedef unsigned short *PWORD;
#endif
#ifndef PCWORD
#define PCWORD PCWORD
typedef unsigned short *const PCWORD;
#endif
#ifndef INT
#define INT INT
typedef int INT;
#endif
#ifndef CINT
#define CINT CINT
typedef const int CINT;
#endif
#ifndef PINT
#define PINT PINT
typedef int *PINT;
#endif
#ifndef PCINT
#define PCINT PCINT
typedef int *const PCINT;
#endif
#ifndef CPINT
#define CPINT CPINT
typedef const int *CPINT;
#endif
#ifndef UINT
#define UINT UINT
typedef unsigned int UINT;
#endif
#ifndef PUINT
#define PUINT PUINT
typedef unsigned int *PUINT;
#endif
#ifndef PCUINT
#define PCUINT PCUINT
typedef unsigned int *const PCUINT;
#endif
#ifndef CPUINT
#define CPUINT CPUINT
typedef const unsigned int *CPUINT;
#endif
#ifndef DWORD
#define DWORD DWORD
typedef unsigned long DWORD;
#endif
#ifndef PDWORD
#define PDWORD PDWORD
typedef unsigned long *PDWORD;
#endif
#ifndef PCDWORD
#define PCDWORD PCDWORD
typedef unsigned long *const PCDWORD;
#endif
#ifndef CPDWORD
#define CPDWORD CPDWORD
typedef const unsigned long *CPDWORD;
#endif
#ifndef LONG
#define LONG LONG
typedef long LONG;
#endif
#ifndef PLONG
#define PLONG PLONG
typedef long *PLONG;
#endif
#ifndef PCLONG
#define PCLONG PCLONG
typedef long *const PCLONG;
#endif
#ifndef CPLONG
#define CPLONG CPLONG
typedef const long *CPLONG;
#endif
#ifndef ULONG
#define ULONG ULONG
typedef unsigned long ULONG;
#endif
#ifndef PULONG
#define PULONG PULONG
typedef unsigned long *PULONG;
#endif
#ifndef PCULONG
#define PCULONG PCULONG
typedef unsigned long *const PCULONG;
#endif
#ifndef CPULONG
#define CPULONG CPULONG
typedef const unsigned long *CPULONG;
#endif
#ifndef FLOAT
#define FLOAT FLOAT
typedef float FLOAT;
#endif
#ifndef DOUBLE
#define DOUBLE DOUBLE
typedef long double DOUBLE;
#endif
#ifndef PDOUBLE
#define PDOUBLE PDOUBLE
typedef long double *PDOUBLE;
#endif
#ifndef CPDOUBLE
#define CPDOUBLE CPDOUBLE
typedef const long double *CPDOUBLE;
#endif
#ifndef PCDOUBLE
#define PCDOUBLE PCDOUBLE
typedef long double *const PCDOUBLE;
#endif
#ifndef PVOID
#define PVOID PVOID
typedef void *PVOID;
#endif
#ifndef VOID
#define VOID VOID
typedef void VOID;
#endif
#ifndef IOID
#define IOID IOID
typedef unsigned short IOID;
#endif
#ifndef PIOID
#define PIOID PIOID
typedef unsigned short *PIOID;
#endif
#ifndef BBYTE
#define BBYTE BBYTE
typedef union {
unsigned char BYTE; /*lint -e46 */
/* this is correct */
struct {
#ifdef _BITFIELDS_MSB_FIRST_
unsigned char B7:1;
unsigned char B6:1;
unsigned char B5:1;
unsigned char B4:1;
unsigned char B3:1;
unsigned char B2:1;
unsigned char B1:1;
unsigned char B0:1;
#else
unsigned char B0:1;
unsigned char B1:1;
unsigned char B2:1;
unsigned char B3:1;
unsigned char B4:1;
unsigned char B5:1;
unsigned char B6:1;
unsigned char B7:1;
#endif
} BIT;
} BBYTE;
#endif
#endif /* TYPES_H_INCLUDED */
/******************************************************************************
End Of File
******************************************************************************/

View file

@ -0,0 +1,527 @@
[HIMDBVersion]
2.0
[DATABASE_VERSION]
"2.3"
[SESSION_DETAILS]
""
[INFORMATION]
""
[GENERAL_DATA]
"FIRST_CONNECTION_TAG" "NO"
"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|FFFE4305|fff80300|fff80688"
"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG"
"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlLabelAddress" ""
"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlMonitorLastSaveLogDirectory" ""
"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlViews" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" ""
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSCT" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSYM" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth0" "124"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth1" "156"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth2" "132"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth3" "129"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth4" "84"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp0" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp1" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp10" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp11" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp12" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp13" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp14" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp15" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp16" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp17" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp18" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp19" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp2" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp20" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp21" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp3" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp4" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp5" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp6" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp7" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp8" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp9" "1"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollHorz" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollVert" "0"
"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWndInstanceKey0" "{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH"
"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" ""
"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" ""
"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" ""
"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "1"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ColWidth0" "224"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ColWidth1" "152"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ScrollHorz" "0"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ScrollVert" "0"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ColWidth0" "160"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ColWidth1" "512"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ScrollHorz" "0"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ScrollVert" "0"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ColWidth0" "80"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ColWidth1" "360"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ScrollHorz" "0"
"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ScrollVert" "0"
"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlSaveFileDir" ""
"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlSaveFileName" ""
"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlViews" "0"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" ""
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 "
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 "
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" ""
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" ""
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}"
"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "FFFE4305"
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF"
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000"
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" ""
"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0"
"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" ""
"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" ""
"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0"
"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlChartMultiOpen" "0"
"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlEnable" "0"
"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileDir" ""
"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileName" ""
"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileDir" ""
"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileName" ""
"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlViews" "0"
"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" ""
"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" ""
"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0"
"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0"
"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0"
"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" ""
"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,,"
"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,,"
"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000"
"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "50,171,144"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "82"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "1"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" ""
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "50,456,35"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "82"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "1"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" ""
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,"
"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SHViewB"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" ""
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,,"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,,"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" ""
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0"
"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "175"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "341"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "us, 10, 0, P, Col, Hex, N"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "xCurrentRxDesc, 10, 0, P, Col, Hex, N"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "uip_len, 2, 0, P, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "uip_buf[21], 2, 0, P, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "xEventListItem, 11, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "uxPriority, 2, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "pxStack, 4, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0007" "pcTaskName, 6, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0008" "uxCriticalNesting, 2, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0009" "uxTCBNumber, 2, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0010" "uxBasePriority, 2, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0011" "pxTaskTag, 9, 0, C0001, Col, Hex, N"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0012" "ulRunTimeCounter, 2, 0, C0001, Col, Hex, MN"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "1"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" ""
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" ""
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100"
"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1"
"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1"
"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_1" "0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_2" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_3" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_AUDCLOCK" "2 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_AUDINIT_PININFO" "00000000"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_EEPROM_MODE" "0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_0" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_1" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_2" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_3" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_4" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_5" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_6" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_7" "0 0 0 0 "
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_INFO" "0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FCU_ERROR" "0 1"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FLASHMODE" "0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FLO_INFO" "0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FM_FILE" ""
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FM_LOAD" "0 0 3 0 0 0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_GOOPTION" "0 0 0 1 0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_MEMORYAREA" "0 0 0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_RECOVERY" "0 0 0 0 0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ROUND" "RM_ZERO"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_RW_ON_THE_FLY" "1"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_SBSTK_INFO" "1"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_START_FUNC" "0, H'0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_STEPOPTION" "0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_STOP_FUNC" "0, H'0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC10_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC10_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC11_1" "0,0,1,0,0,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_1" "0,0,1,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_2" "1,0,0,0,0,0,0,1,1,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_3" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_1" "0,0,1,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_2" "1,0,0,0,0,0,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_3" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC3_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC3_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC4_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC4_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC5_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC5_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC6_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC6_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC7_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC7_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC8_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC8_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC9_1" "0,0,1,0,1,0,"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC9_2" "1,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_SEQPTOP_0" "0 0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_PERFORM_PERFORM_SET" "0,0,0,0,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_PROFILE_PROFILE_SELECT" "0,0,0,0"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_SESSION_IS_SAVED" "YES"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION" "0,0,1,0,0,0,2,0,0,0,0,2,0,0,0,2,0,1,1,1,1,1,1"
"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION2" "1,0,1,1,1,1,1,0,0,0,0,0,0"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_DENORMAL_MODE" "16777216"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_ROUND_MODE" "768"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_0" "0000000000000001"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_1" "00000000FFFE771B"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_10" "00000000FFFFFFFD"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_11" "0000000092492493"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_12" "0000000000039447"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_13" "00000000FFFE771B"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_14" "0000000000000000"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_15" "00000000FFF83C38"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_16" "00000000000065FE"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_17" "0000000000000001"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_18" "0000000000000000"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_19" "0000000000000000"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_2" "000000000000007B"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_20" "0000000000000000"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_21" "0000000000049AB0"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_22" "00000000491CE5CE"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_23" "0000000000003760"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_24" "0000000000000070"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_25" "0000000000040001"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_26" "0000000000000000"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_27" "000000000000000C"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_28" "000000000000000D"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_29" "000000000000000E"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_3" "0000000000000003"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_30" "000000000000000F"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_31" "0000000000000010"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_32" "0000000000000011"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_33" "0000000000000012"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_34" "0000000000000013"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_35" "000000000000006E"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_36" "000000000000006F"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_37" "0000000000000070"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_38" "0000000000000071"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_39" "0000000000000072"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_4" "00000000000394C2"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_40" "000000000000000E"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_41" "0000000000000000"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_42" "000000000000000C"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_43" "0000000D0000000E"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_44" "0000000F00000010"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_45" "0000001100000012"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_46" "000000130000006E"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_47" "0000006F00000070"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_48" "0000007100000072"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_49" "0000000E00000000"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_5" "00000000FFF541BA"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_6" "00000000FFFE771B"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_7" "00000000FFF541BA"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_8" "00000000000065FC"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_9" "000000000000661E"
"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_COUNT" "50"
"{D595F9C0-EF22-11D5-B7DB-0000E10B3DA9}EventCtrlViews" "0"
"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0"
"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" ""
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" ""
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" ""
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "381"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "100"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0"
"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0"
"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0"
"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" ""
"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0"
"{FB0C49C2-C2FE-4E92-BCC1-56FE7254C804}CacheCtrlCacheLastSaveDirectory" ""
"{FB0C49C2-C2FE-4E92-BCC1-56FE7254C804}CacheCtrlViews" "0"
[LANGUAGE]
"English"
[CONFIG_INFO_VD1]
1
[CONFIG_INFO_VD2]
0
[CONFIG_INFO_VD3]
0
[CONFIG_INFO_VD4]
0
[WINDOW_POSITION_STATE_DATA_VD1]
"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_00000001_CmdLine}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.23" 220 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0"
"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.08" 324 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0"
"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -23 892 659 9 0 "" "0.0"
"{WK_00000001_EVENT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 292 0 0 350 200 2065 0 "32774|32775|32777|<<separator>>|32780|<<separator>>" "0.0"
"{WK_00000001_IO}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 3 "0.31" 324 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0"
"{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.86" 316 0 0 350 200 2065 0 "32812|<<separator>>|32813|32814|<<separator>>|32816|<<separator>>|32822|32821|<<separator>>|32796|32797|<<separator>>|32833|<<separator>>|32825|32829|<<separator>>|32852" "31.7"
"{WK_00000001_MEMORY}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.85" 391 0 0 350 200 2065 0 "42202|42203|42204|42233|<<separator>>|42206|42205|42230|42229|42207|<<separator>>|42208|42209|42210|49076|42228|42227|<<separator>>|42231|42232|42234|42235|<<separator>>|42211|<<separator>>" "0.0"
"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 2 "0.55" 324 560 340 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0"
"{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59421 0 0 "1.00" 360 0 0 350 200 2065 0 "" "0.0"
"{WK_00000001_STACKTRACE}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 219 0 0 350 200 2065 0 "" "0.0"
"{WK_00000001_STATUS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 4 "0.50" 324 0 0 350 200 17 0 "" "0.0"
"{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.45" 324 0 0 350 200 18 0 "32781|32783|<<separator>>|32771|32829|32772|32827|32773|<<separator>>|32786|<<separator>>|32810|32811|32831" "0.0"
"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 340 560 340 350 200 18 0 "" "0.0"
"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0"
"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0"
[WINDOW_POSITION_STATE_DATA_VD2]
[WINDOW_POSITION_STATE_DATA_VD3]
[WINDOW_POSITION_STATE_DATA_VD4]
[WINDOW_Z_ORDER]
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c"
[TARGET_NAME]
"SH7216 E10A-USB SYSTEM (SH2A-FPU)" "" 0
[STATUSBAR_STATEINFO_VD1]
"MasterShowState" 1
"ApplicationShowState" 1
"DebuggerShowState" 1
[STATUSBAR_STATEINFO_VD2]
"MasterShowState" 1
"ApplicationShowState" 1
"DebuggerShowState" 1
[STATUSBAR_STATEINFO_VD3]
"MasterShowState" 1
"ApplicationShowState" 1
"DebuggerShowState" 1
[STATUSBAR_STATEINFO_VD4]
"MasterShowState" 1
"ApplicationShowState" 1
"DebuggerShowState" 1
[STATUSBAR_DEBUGGER_PANESTATE_VD1]
[STATUSBAR_DEBUGGER_PANESTATE_VD2]
[STATUSBAR_DEBUGGER_PANESTATE_VD3]
[STATUSBAR_DEBUGGER_PANESTATE_VD4]
[DEBUGGER_OPTIONS]
"[B|SIMIOF|1] [I|SIMIOADR|0x00000000] [S|ROM_MODE|^"^"] [S|MAP|^"^"] [S|RESOURCE|^"^"]"
[DOWNLOAD_MODULES]
"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0
[CONNECT_ON_GO]
"FALSE"
[DOWNLOAD_MODULES_AFTER_BUILD]
"TRUE"
[REMOVE_BREAKPOINTS_ON_DOWNLOAD]
"FALSE"
[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION]
"FALSE"
[LIMIT_DISASSEMBLY_MEMORY_ACCESS]
"TRUE"
[DISABLE_MEMORY_ACCESS_DURING_EXECUTION]
"FALSE"
[DEBUGGER_OPTIONS_PROPERTIES]
"1"
[COMMAND_FILES]
[DEFAULT_DEBUG_FORMAT]
"Elf/Dwarf2"
[FLASH_DETAILS]
"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" ""
[BREAKPOINTS]
"c:\e\dev\freertos\workingcopy\demo\superh_sh7216_renesas\rtosdemo\main.c" 221 0 1 "{00000000-0000-0000-C000-000000000046}" ""
[END]

View file

@ -0,0 +1,4 @@
[E10A USB Cpu Select]
FREQUENCY=12.50
[Key]
Key=1

View file

@ -0,0 +1,3 @@
[E10A USB Cpu Select]
CPU Select=5
FREQUENCY=12.50

View file

@ -0,0 +1,30 @@
/***********************************************************************/
/* */
/* FILE :dbsct.c */
/* DATE :Sun, Dec 27, 2009 */
/* DESCRIPTION :Setting of B,R Section */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.16). */
/* */
/***********************************************************************/
#include "typedefine.h"
#pragma section $DSEC
static const struct {
_UBYTE *rom_s; /* Start address of the initialized data section in ROM */
_UBYTE *rom_e; /* End address of the initialized data section in ROM */
_UBYTE *ram_s; /* Start address of the initialized data section in RAM */
} DTBL[] = {
{ __sectop("D"), __secend("D"), __sectop("R") }
};
#pragma section $BSEC
static const struct {
_UBYTE *b_s; /* Start address of non-initialized data section */
_UBYTE *b_e; /* End address of non-initialized data section */
} BTBL[] = {
{ __sectop("B"), __secend("B") }
};

View file

@ -0,0 +1,362 @@
/*
FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong? *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest information,
license and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/*
* Creates eight tasks, each of which loops continuously performing a floating
* point calculation and in so doing test the floating point context switching.
* This file also demonstrates the use of the xPortUsesFloatingPoint() function
* which informs the kernel that the task requires its floating point context
* saved on each switch.
*
* All the tasks run at the idle priority and never block or yield. This causes
* all eight tasks to time slice with the idle task. Running at the idle
* priority means that these tasks will get pre-empted any time another task is
* ready to run or a time slice occurs. More often than not the pre-emption
* will occur mid calculation, creating a good test of the schedulers context
* switch mechanism - a calculation producing an unexpected result could be a
* symptom of a corruption in the context of a task.
*/
#include <stdlib.h>
#include <math.h>
/* Scheduler include files. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo program include files. */
#include "flop.h"
#define mathSTACK_SIZE configMINIMAL_STACK_SIZE
#define mathNUMBER_OF_TASKS ( 8 )
/* Four tasks, each of which performs a different floating point calculation.
Each of the four is created twice. */
static void vCompetingMathTask1( void *pvParameters );
static void vCompetingMathTask2( void *pvParameters );
static void vCompetingMathTask3( void *pvParameters );
static void vCompetingMathTask4( void *pvParameters );
/* These variables are used to check that all the tasks are still running. If a
task gets a calculation wrong it will stop incrementing its check variable,
otherwise the check variable will get incremented on each iteration of the
tasks execution. */
static volatile unsigned short usTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 };
/*-----------------------------------------------------------*/
void vStartMathTasks( unsigned portBASE_TYPE uxPriority )
{
xTaskHandle xCreatedTask;
/* Create one of the floating point tasks... */
xTaskCreate( vCompetingMathTask1, ( signed char * ) "Math1", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, &xCreatedTask );
/* ... then enable floating point support for the created task so its flop
flop registers are maintained in a consistent state. */
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vCompetingMathTask2, ( signed char * ) "Math2", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vCompetingMathTask3, ( signed char * ) "Math3", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vCompetingMathTask4, ( signed char * ) "Math4", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vCompetingMathTask1, ( signed char * ) "Math5", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vCompetingMathTask2, ( signed char * ) "Math6", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vCompetingMathTask3, ( signed char * ) "Math7", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vCompetingMathTask4, ( signed char * ) "Math8", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
}
/*-----------------------------------------------------------*/
static void vCompetingMathTask1( void *pvParameters )
{
volatile double d1, d2, d3, d4;
volatile unsigned short *pusTaskCheckVariable;
volatile double dAnswer;
short sError = pdFALSE;
d1 = 123.4567;
d2 = 2345.6789;
d3 = -918.222;
/* Calculate the expected answer. */
dAnswer = ( d1 + d2 ) * d3;
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
/* Keep performing a calculation and checking the result against a constant. */
for(;;)
{
/* Perform the calculation. */
d1 = 123.4567;
d2 = 2345.6789;
d3 = -918.222;
d4 = ( d1 + d2 ) * d3;
/* If the calculation does not match the expected constant, stop the
increment of the check variable. */
if( fabs( d4 - dAnswer ) > 0.001 )
{
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static void vCompetingMathTask2( void *pvParameters )
{
volatile double d1, d2, d3, d4;
volatile unsigned short *pusTaskCheckVariable;
volatile double dAnswer;
short sError = pdFALSE;
d1 = -389.38;
d2 = 32498.2;
d3 = -2.0001;
/* Calculate the expected answer. */
dAnswer = ( d1 / d2 ) * d3;
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
/* Keep performing a calculation and checking the result against a constant. */
for( ;; )
{
/* Perform the calculation. */
d1 = -389.38;
d2 = 32498.2;
d3 = -2.0001;
d4 = ( d1 / d2 ) * d3;
/* If the calculation does not match the expected constant, stop the
increment of the check variable. */
if( fabs( d4 - dAnswer ) > 0.001 )
{
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know
this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static void vCompetingMathTask3( void *pvParameters )
{
volatile double *pdArray, dTotal1, dTotal2, dDifference;
volatile unsigned short *pusTaskCheckVariable;
const size_t xArraySize = 10;
size_t xPosition;
short sError = pdFALSE;
/* The variable this task increments to show it is still running is passed
in as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
/* Allocate memory for use as an array. */
pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) );
/* Keep filling an array, keeping a running total of the values placed in
the array. Then run through the array adding up all the values. If the two
totals do not match, stop the check variable from incrementing. */
for( ;; )
{
dTotal1 = 0.0;
dTotal2 = 0.0;
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
pdArray[ xPosition ] = ( double ) xPosition + 5.5;
dTotal1 += ( double ) xPosition + 5.5;
}
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
dTotal2 += pdArray[ xPosition ];
}
dDifference = dTotal1 - dTotal2;
if( fabs( dDifference ) > 0.001 )
{
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
static void vCompetingMathTask4( void *pvParameters )
{
volatile double *pdArray, dTotal1, dTotal2, dDifference;
volatile unsigned short *pusTaskCheckVariable;
const size_t xArraySize = 10;
size_t xPosition;
short sError = pdFALSE;
/* The variable this task increments to show it is still running is passed in
as the parameter. */
pusTaskCheckVariable = ( unsigned short * ) pvParameters;
/* Allocate RAM for use as an array. */
pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) );
/* Keep filling an array, keeping a running total of the values placed in the
array. Then run through the array adding up all the values. If the two totals
do not match, stop the check variable from incrementing. */
for( ;; )
{
dTotal1 = 0.0;
dTotal2 = 0.0;
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
pdArray[ xPosition ] = ( double ) xPosition * 12.123;
dTotal1 += ( double ) xPosition * 12.123;
}
for( xPosition = 0; xPosition < xArraySize; xPosition++ )
{
dTotal2 += pdArray[ xPosition ];
}
dDifference = dTotal1 - dTotal2;
if( fabs( dDifference ) > 0.001 )
{
sError = pdTRUE;
}
if( sError == pdFALSE )
{
/* If the calculation has always been correct, increment the check
variable so we know this task is still running okay. */
( *pusTaskCheckVariable )++;
}
}
}
/*-----------------------------------------------------------*/
/* This is called to check that all the created tasks are still running. */
portBASE_TYPE xAreMathsTaskStillRunning( void )
{
/* Keep a history of the check variables so we know if they have been
incremented since the last call. */
static unsigned short usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 };
portBASE_TYPE xReturn = pdTRUE, xTask;
/* Check the maths tasks are still running by ensuring their check variables
are still incrementing. */
for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )
{
if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] )
{
/* The check has not incremented so an error exists. */
xReturn = pdFALSE;
}
usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ];
}
return xReturn;
}

View file

@ -0,0 +1,526 @@
/***********************************************************************/
/* */
/* FILE :intprg.c */
/* DATE :Sun, Dec 27, 2009 */
/* DESCRIPTION :Interrupt Program */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.16). */
/* */
/***********************************************************************/
#include <machine.h>
#include "vect.h"
#pragma section IntPRG
// 4 Illegal code
void INT_Illegal_code(void){for( ;; ); /* sleep(); */}
// 5 Reserved
// 6 Illegal slot
void INT_Illegal_slot(void){for( ;; ); /* sleep(); */}
// 7 Reserved
// 8 Reserved
// 9 CPU Address error
void INT_CPU_Address(void){for( ;; ); /* sleep(); */}
// 10 DMAC Address error
void INT_DMAC_Address(void){for( ;; ); /* sleep(); */}
// 11 NMI
void INT_NMI(void){for( ;; ); /* sleep(); */}
// 12 User breakpoint trap
void INT_User_Break(void){for( ;; ); /* sleep(); */}
// 13 Reserved
// 14 H-UDI
void INT_HUDI(void){for( ;; ); /* sleep(); */}
// 15 Register bank over
void INT_Bank_Overflow(void){for( ;; ); /* sleep(); */}
// 16 Register bank under
void INT_Bank_Underflow(void){for( ;; ); /* sleep(); */}
// 17 ZERO DIV
void INT_Divide_by_Zero(void){for( ;; ); /* sleep(); */}
// 18 OVER DIV
void INT_Divide_Overflow(void){for( ;; ); /* sleep(); */}
// 19 Reserved
// 20 Reserved
// 21 Reserved
// 22 Reserved
// 23 Reserved
// 24 Reserved
// 25 Reserved
// 26 Reserved
// 27 Reserved
// 28 Reserved
// 29 Reserved
// 30 Reserved
// 31 Reserved
// 32 TRAPA (User Vecter)
void INT_TRAPA32(void){ for( ;; ); /* sleep(); */ }
// 33 TRAPA (User Vecter)
void INT_TRAPA33(void){for( ;; ); /* sleep(); */}
// 34 TRAPA (User Vecter)
void INT_TRAPA34(void){for( ;; ); /* sleep(); */}
// 35 TRAPA (User Vecter)
void INT_TRAPA35(void){for( ;; ); /* sleep(); */}
// 36 TRAPA (User Vecter)
void INT_TRAPA36(void){for( ;; ); /* sleep(); */}
// 37 TRAPA (User Vecter)
void INT_TRAPA37(void){for( ;; ); /* sleep(); */}
// 38 TRAPA (User Vecter)
void INT_TRAPA38(void){for( ;; ); /* sleep(); */}
// 39 TRAPA (User Vecter)
void INT_TRAPA39(void){for( ;; ); /* sleep(); */}
// 40 TRAPA (User Vecter)
void INT_TRAPA40(void){for( ;; ); /* sleep(); */}
// 41 TRAPA (User Vecter)
void INT_TRAPA41(void){for( ;; ); /* sleep(); */}
// 42 TRAPA (User Vecter)
void INT_TRAPA42(void){for( ;; ); /* sleep(); */}
// 43 TRAPA (User Vecter)
void INT_TRAPA43(void){for( ;; ); /* sleep(); */}
// 44 TRAPA (User Vecter)
void INT_TRAPA44(void){for( ;; ); /* sleep(); */}
// 45 TRAPA (User Vecter)
void INT_TRAPA45(void){for( ;; ); /* sleep(); */}
// 46 TRAPA (User Vecter)
void INT_TRAPA46(void){for( ;; ); /* sleep(); */}
// 47 TRAPA (User Vecter)
void INT_TRAPA47(void){for( ;; ); /* sleep(); */}
// 48 TRAPA (User Vecter)
void INT_TRAPA48(void){for( ;; ); /* sleep(); */}
// 49 TRAPA (User Vecter)
void INT_TRAPA49(void){for( ;; ); /* sleep(); */}
// 50 TRAPA (User Vecter)
void INT_TRAPA50(void){for( ;; ); /* sleep(); */}
// 51 TRAPA (User Vecter)
void INT_TRAPA51(void){for( ;; ); /* sleep(); */}
// 52 TRAPA (User Vecter)
void INT_TRAPA52(void){for( ;; ); /* sleep(); */}
// 53 TRAPA (User Vecter)
void INT_TRAPA53(void){for( ;; ); /* sleep(); */}
// 54 TRAPA (User Vecter)
void INT_TRAPA54(void){for( ;; ); /* sleep(); */}
// 55 TRAPA (User Vecter)
void INT_TRAPA55(void){for( ;; ); /* sleep(); */}
// 56 TRAPA (User Vecter)
void INT_TRAPA56(void){for( ;; ); /* sleep(); */}
// 57 TRAPA (User Vecter)
void INT_TRAPA57(void){for( ;; ); /* sleep(); */}
// 58 TRAPA (User Vecter)
void INT_TRAPA58(void){for( ;; ); /* sleep(); */}
// 59 TRAPA (User Vecter)
void INT_TRAPA59(void){for( ;; ); /* sleep(); */}
// 60 TRAPA (User Vecter)
void INT_TRAPA60(void){for( ;; ); /* sleep(); */}
// 61 TRAPA (User Vecter)
void INT_TRAPA61(void){for( ;; ); /* sleep(); */}
// 62 TRAPA (User Vecter)
void INT_TRAPA62(void){for( ;; ); /* sleep(); */}
// 63 TRAPA (User Vecter)
void INT_TRAPA63(void){for( ;; ); /* sleep(); */}
// 64 Interrupt IRQ0
void INT_IRQ0(void){for( ;; ); /* sleep(); */}
// 65 Interrupt IRQ1
void INT_IRQ1(void){for( ;; ); /* sleep(); */}
// 66 Interrupt IRQ2
void INT_IRQ2(void){for( ;; ); /* sleep(); */}
// 67 Interrupt IRQ3
void INT_IRQ3(void){for( ;; ); /* sleep(); */}
// 68 Interrupt IRQ4
void INT_IRQ4(void){for( ;; ); /* sleep(); */}
// 69 Interrupt IRQ5
void INT_IRQ5(void){for( ;; ); /* sleep(); */}
// 70 Interrupt IRQ6
void INT_IRQ6(void){for( ;; ); /* sleep(); */}
// 71 Interrupt IRQ7
void INT_IRQ7(void){for( ;; ); /* sleep(); */}
// 72 Reserved
// 73 Reserved
// 74 Reserved
// 75 Reserved
// 76 Reserved
// 77 Reserved
// 78 Reserved
// 79 Reserved
// 80 Interrupt PINT0
void INT_PINT0(void){for( ;; ); /* sleep(); */}
// 81 Interrupt PINT1
void INT_PINT1(void){for( ;; ); /* sleep(); */}
// 82 Interrupt PINT2
void INT_PINT2(void){for( ;; ); /* sleep(); */}
// 83 Interrupt PINT3
void INT_PINT3(void){for( ;; ); /* sleep(); */}
// 84 Interrupt PINT4
void INT_PINT4(void){for( ;; ); /* sleep(); */}
// 85 Interrupt PINT5
void INT_PINT5(void){for( ;; ); /* sleep(); */}
// 86 Interrupt PINT6
void INT_PINT6(void){for( ;; ); /* sleep(); */}
// 87 Interrupt PINT7
void INT_PINT7(void){for( ;; ); /* sleep(); */}
// 88 Reserved
// 89 Reserved
// 90 Reserved
// 91 ROM FIFE
void INT_ROM_FIFE(void){for( ;; ); /* sleep(); */}
// 92 A/D ADI0
void INT_AD_ADI0(void){for( ;; ); /* sleep(); */}
// 93 Reserved
// 94 Reserved
// 95 Reserved
// 96 A/D ADI1
void INT_AD_ADI1(void){for( ;; ); /* sleep(); */}
// 97 Reserved
// 98 Reserved
// 99 Reserved
// 100 Reserved
// 101 Reserved
// 102 Reserved
// 103 Reserved
// 104 RCANET0 ERS_0
void INT_RCANET0_ERS_0(void){for( ;; ); /* sleep(); */}
// 105 RCANET0 OVR_0
void INT_RCANET0_OVR_0(void){for( ;; ); /* sleep(); */}
// 106 RCANET0 RM01_0
void INT_RCANET0_RM01_0(void){for( ;; ); /* sleep(); */}
// 107 RCANET0 SLE_0
void INT_RCANET0_SLE_0(void){for( ;; ); /* sleep(); */}
// 108 DMAC0 DEI0
void INT_DMAC0_DEI0(void){for( ;; ); /* sleep(); */}
// 109 DMAC0 HEI0
void INT_DMAC0_HEI0(void){for( ;; ); /* sleep(); */}
// 110 Reserved
// 111 Reserved
// 112 DMAC1 DEI1
void INT_DMAC1_DEI1(void){for( ;; ); /* sleep(); */}
// 113 DMAC1 HEI1
void INT_DMAC1_HEI1(void){for( ;; ); /* sleep(); */}
// 114 Reserved
// 115 Reserved
// 116 DMAC2 DEI2
void INT_DMAC2_DEI2(void){for( ;; ); /* sleep(); */}
// 117 DMAC2 HEI2
void INT_DMAC2_HEI2(void){for( ;; ); /* sleep(); */}
// 118 Reserved
// 119 Reserved
// 120 DMAC3 DEI3
void INT_DMAC3_DEI3(void){for( ;; ); /* sleep(); */}
// 121 DMAC3 HEI3
void INT_DMAC3_HEI3(void){for( ;; ); /* sleep(); */}
// 122 Reserved
// 123 Reserved
// 124 DMAC4 DEI4
void INT_DMAC4_DEI4(void){for( ;; ); /* sleep(); */}
// 125 DMAC4 HEI4
void INT_DMAC4_HEI4(void){for( ;; ); /* sleep(); */}
// 126 Reserved
// 127 Reserved
// 128 DMAC5 DEI5
void INT_DMAC5_DEI5(void){for( ;; ); /* sleep(); */}
// 129 DMAC5 HEI5
void INT_DMAC5_HEI5(void){for( ;; ); /* sleep(); */}
// 130 Reserved
// 131 Reserved
// 132 DMAC6 DEI6
void INT_DMAC6_DEI6(void){for( ;; ); /* sleep(); */}
// 133 DMAC6 HEI6
void INT_DMAC6_HEI6(void){for( ;; ); /* sleep(); */}
// 134 Reserved
// 135 Reserved
// 136 DMAC7 DEI7
void INT_DMAC7_DEI7(void){for( ;; ); /* sleep(); */}
// 137 DMAC7 HEI7
void INT_DMAC7_HEI7(void){for( ;; ); /* sleep(); */}
// 138 Reserved
// 139 Reserved
// 140 CMT CMI0
//void INT_CMT_CMI0(void){for( ;; ); /* sleep(); */}
// 141 Reserved
// 142 Reserved
// 143 Reserved
// 144 CMT CMI1
void INT_CMT_CMI1(void){for( ;; ); /* sleep(); */}
// 145 Reserved
// 146 Reserved
// 147 Reserved
// 148 BSC CMTI
void INT_BSC_CMTI(void){for( ;; ); /* sleep(); */}
// 149 Reserved
// 150 USB EP4FULL
void INT_USB_EP4FULL(void){for( ;; ); /* sleep(); */}
// 151 USB EP5EMPTY
void INT_USB_EP5EMPTY(void){for( ;; ); /* sleep(); */}
// 152 WDT ITI
void INT_WDT_ITI(void){for( ;; ); /* sleep(); */}
// 153 E-DMAC EINT0
void INT_EDMAC_EINT0(void){for( ;; ); /* sleep(); */}
// 154 USB EP1FULL
void INT_USB_EP1FULL(void){for( ;; ); /* sleep(); */}
// 155 USB EP2EMPTY
void INT_USB_EP2EMPTY(void){for( ;; ); /* sleep(); */}
// 156 MTU2 MTU0 TGI0A
void INT_MTU2_MTU0_TGI0A(void){for( ;; ); /* sleep(); */}
// 157 MTU2 MTU0 TGI0B
void INT_MTU2_MTU0_TGI0B(void){for( ;; ); /* sleep(); */}
// 158 MTU2 MTU0 TGI0C
void INT_MTU2_MTU0_TGI0C(void){for( ;; ); /* sleep(); */}
// 159 MTU2 MTU0 TGI0D
void INT_MTU2_MTU0_TGI0D(void){for( ;; ); /* sleep(); */}
// 160 MTU2 MTU0 TGI0V
void INT_MTU2_MTU0_TGI0V(void){for( ;; ); /* sleep(); */}
// 161 MTU2 MTU0 TGI0E
void INT_MTU2_MTU0_TGI0E(void){for( ;; ); /* sleep(); */}
// 162 MTU2 MTU0 TGI0F
void INT_MTU2_MTU0_TGI0F(void){for( ;; ); /* sleep(); */}
// 163 Reserved
// 164 MTU2 MTU1 TGI1A
void INT_MTU2_MTU1_TGI1A(void){for( ;; ); /* sleep(); */}
// 165 MTU2 MTU1 TGI1B
void INT_MTU2_MTU1_TGI1B(void){for( ;; ); /* sleep(); */}
// 166 Reserved
// 167 Reserved
// 168 MTU2 MTU1 TGI1V
void INT_MTU2_MTU1_TGI1V(void){for( ;; ); /* sleep(); */}
// 169 MTU2 MTU1 TGI1U
void INT_MTU2_MTU1_TGI1U(void){for( ;; ); /* sleep(); */}
// 170 Reserved
// 171 Reserved
// 172 MTU2 MTU2 TGI2A
void INT_MTU2_MTU2_TGI2A(void){for( ;; ); /* sleep(); */}
// 173 MTU2 MTU2 TGI2B
void INT_MTU2_MTU2_TGI2B(void){for( ;; ); /* sleep(); */}
// 174 Reserved
// 175 Reserved
// 176 MTU2 MTU2 TGI2V
void INT_MTU2_MTU2_TGI2V(void){for( ;; ); /* sleep(); */}
// 177 MTU2 MTU2 TGI2U
void INT_MTU2_MTU2_TGI2U(void){for( ;; ); /* sleep(); */}
// 178 Reserved
// 179 Reserved
// 180 MTU2 MTU3 TGI3A
void INT_MTU2_MTU3_TGI3A(void){for( ;; ); /* sleep(); */}
// 181 MTU2 MTU3 TGI3B
void INT_MTU2_MTU3_TGI3B(void){for( ;; ); /* sleep(); */}
// 182 MTU2 MTU3 TGI3C
void INT_MTU2_MTU3_TGI3C(void){for( ;; ); /* sleep(); */}
// 183 MTU2 MTU3 TGI3D
void INT_MTU2_MTU3_TGI3D(void){for( ;; ); /* sleep(); */}
// 184 MTU2 MTU3 TGI3V
void INT_MTU2_MTU3_TGI3V(void){for( ;; ); /* sleep(); */}
// 185 Reserved
// 186 Reserved
// 187 Reserved
// 188 MTU2 MTU4 TGI4A
void INT_MTU2_MTU4_TGI4A(void){for( ;; ); /* sleep(); */}
// 189 MTU2 MTU4 TGI4B
void INT_MTU2_MTU4_TGI4B(void){for( ;; ); /* sleep(); */}
// 190 MTU2 MTU4 TGI4C
void INT_MTU2_MTU4_TGI4C(void){for( ;; ); /* sleep(); */}
// 191 MTU2 MTU4 TGI4D
void INT_MTU2_MTU4_TGI4D(void){for( ;; ); /* sleep(); */}
// 192 MTU2 MTU4 TGI4V
void INT_MTU2_MTU4_TGI4V(void){for( ;; ); /* sleep(); */}
// 193 Reserved
// 194 Reserved
// 195 Reserved
// 196 MTU2 MTU5 TGI5U
void INT_MTU2_MTU5_TGI5U(void){for( ;; ); /* sleep(); */}
// 197 MTU2 MTU5 TGI5V
void INT_MTU2_MTU5_TGI5V(void){for( ;; ); /* sleep(); */}
// 198 MTU2 MTU5 TGI5W
void INT_MTU2_MTU5_TGI5W(void){for( ;; ); /* sleep(); */}
// 199 Reserved
// 200 POE2 OEI1
void INT_POE2_OEI1(void){for( ;; ); /* sleep(); */}
// 201 POE2 OEI2
void INT_POE2_OEI2(void){for( ;; ); /* sleep(); */}
// 202 Reserved
// 203 Reserved
// 204 MTU2S MTU3S TGI3A
void INT_MTU2S_MTU3S_TGI3A(void){for( ;; ); /* sleep(); */}
// 205 MTU2S MTU3S TGI3B
void INT_MTU2S_MTU3S_TGI3B(void){for( ;; ); /* sleep(); */}
// 206 MTU2S MTU3S TGI3C
void INT_MTU2S_MTU3S_TGI3C(void){for( ;; ); /* sleep(); */}
// 207 MTU2S MTU3S TGI3D
void INT_MTU2S_MTU3S_TGI3D(void){for( ;; ); /* sleep(); */}
// 208 MTU2S MTU3S TGI3V
void INT_MTU2S_MTU3S_TGI3V(void){for( ;; ); /* sleep(); */}
// 209 Reserved
// 210 Reserved
// 211 Reserved
// 212 MTU2S MTU4S TGI4A
void INT_MTU2S_MTU4S_TGI4A(void){for( ;; ); /* sleep(); */}
// 213 MTU2S MTU4S TGI4B
void INT_MTU2S_MTU4S_TGI4B(void){for( ;; ); /* sleep(); */}
// 214 MTU2S MTU4S TGI4C
void INT_MTU2S_MTU4S_TGI4C(void){for( ;; ); /* sleep(); */}
// 215 MTU2S MTU4S TGI4D
void INT_MTU2S_MTU4S_TGI4D(void){for( ;; ); /* sleep(); */}
// 216 MTU2S MTU4S TGI4V
void INT_MTU2S_MTU4S_TGI4V(void){for( ;; ); /* sleep(); */}
// 217 Reserved
// 218 Reserved
// 219 Reserved
// 220 MTU2S MTU5S TGI5U
void INT_MTU2S_MTU5S_TGI5U(void){for( ;; ); /* sleep(); */}
// 221 MTU2S MTU5S TGI5V
void INT_MTU2S_MTU5S_TGI5V(void){for( ;; ); /* sleep(); */}
// 222 MTU2S MTU5S TGI5W
void INT_MTU2S_MTU5S_TGI5W(void){for( ;; ); /* sleep(); */}
// 223 Reserved
// 224 POE2 OEI3
void INT_POE2_OEI3(void){for( ;; ); /* sleep(); */}
// 225 Reserved
// 226 USB USI0
void INT_USB_USI0(void){for( ;; ); /* sleep(); */}
// 227 USB USI1
void INT_USB_USI1(void){for( ;; ); /* sleep(); */}
// 228 IIC3 STPI
void INT_IIC3_STPI(void){for( ;; ); /* sleep(); */}
// 229 IIC3 NAKI
void INT_IIC3_NAKI(void){for( ;; ); /* sleep(); */}
// 230 IIC3 RXI
void INT_IIC3_RXI(void){for( ;; ); /* sleep(); */}
// 231 IIC3 TXI
void INT_IIC3_TXI(void){for( ;; ); /* sleep(); */}
// 232 IIC3 TEI
void INT_IIC3_TEI(void){for( ;; ); /* sleep(); */}
// 233 RSPI SPERI
void INT_RSPI_SPERI(void){for( ;; ); /* sleep(); */}
// 234 RSPI SPRXI
void INT_RSPI_SPRXI(void){for( ;; ); /* sleep(); */}
// 235 RSPI SPTXI
void INT_RSPI_SPTXI(void){for( ;; ); /* sleep(); */}
// 236 SCI SCI4 ERI4
void INT_SCI_SCI4_ERI4(void){for( ;; ); /* sleep(); */}
// 237 SCI SCI4 RXI4
void INT_SCI_SCI4_RXI4(void){for( ;; ); /* sleep(); */}
// 238 SCI SCI4 TXI4
void INT_SCI_SCI4_TXI4(void){for( ;; ); /* sleep(); */}
// 239 SCI SCI4 TEI4
void INT_SCI_SCI4_TEI4(void){for( ;; ); /* sleep(); */}
// 240 SCI SCI0 ERI0
void INT_SCI_SCI0_ERI0(void){for( ;; ); /* sleep(); */}
// 241 SCI SCI0 RXI0
void INT_SCI_SCI0_RXI0(void){for( ;; ); /* sleep(); */}
// 242 SCI SCI0 TXI0
void INT_SCI_SCI0_TXI0(void){for( ;; ); /* sleep(); */}
// 243 SCI SCI0 TEI0
void INT_SCI_SCI0_TEI0(void){for( ;; ); /* sleep(); */}
// 244 SCI SCI1 ERI1
void INT_SCI_SCI1_ERI1(void){for( ;; ); /* sleep(); */}
// 245 SCI SCI1 RXI1
void INT_SCI_SCI1_RXI1(void){for( ;; ); /* sleep(); */}
// 246 SCI SCI1 TXI1
void INT_SCI_SCI1_TXI1(void){for( ;; ); /* sleep(); */}
// 247 SCI SCI1 TEI1
void INT_SCI_SCI1_TEI1(void){for( ;; ); /* sleep(); */}
// 248 SCI SCI2 ERI2
void INT_SCI_SCI2_ERI2(void){for( ;; ); /* sleep(); */}
// 249 SCI SCI2 RXI2
void INT_SCI_SCI2_RXI2(void){for( ;; ); /* sleep(); */}
// 250 SCI SCI2 TXI2
void INT_SCI_SCI2_TXI2(void){for( ;; ); /* sleep(); */}
// 251 SCI SCI2 TEI2
void INT_SCI_SCI2_TEI2(void){for( ;; ); /* sleep(); */}
// 252 SCIF SCIF3 BRI3
void INT_SCIF_SCIF3_BRI3(void){for( ;; ); /* sleep(); */}
// 253 SCIF SCIF3 ERI3
void INT_SCIF_SCIF3_ERI3(void){for( ;; ); /* sleep(); */}
// 254 SCIF SCIF3 RXI3
void INT_SCIF_SCIF3_RXI3(void){for( ;; ); /* sleep(); */}
// 255 SCIF SCIF3 TXI3
void INT_SCIF_SCIF3_TXI3(void){for( ;; ); /* sleep(); */}
// Dummy
void Dummy(void){ for( ;; ); sleep(); }
/* End of File */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,541 @@
/*
FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong? *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest information,
license and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the standard demo application tasks,
* which provide no particular functionality but do provide a good example of
* how to use the FreeRTOS API. In addition to the standard demo tasks, the
* following tasks and tests are defined and/or created within this file:
*
* Webserver ("uIP") task - This serves a number of dynamically generated WEB
* pages to a standard WEB browser. The IP and MAC addresses are configured by
* constants defined at the bottom of FreeRTOSConfig.h. Use either a standard
* Ethernet cable to connect through a hug, or a cross over (point to point)
* cable to connect directly. Ensure the IP address used is compatible with the
* IP address of the machine running the browser - the easiest way to achieve
* this is to ensure the first three octets of the IP addresses are the same.
*
* "Reg test" tasks - These fill the registers with known values, then check
* that each register still contains its expected value. Each task uses
* different values. The tasks run with very low priority so get preempted very
* frequently. A register containing an unexpected value is indicative of an
* error in the context switching mechanism. Both standard and floating point
* registers are checked. The nature of the reg test tasks necessitates that
* they are written in assembly code. They are defined in regtest.src.
*
* "math" tasks - These are a set of 8 tasks that perform various double
* precision floating point calculations in order to check that the tasks
* floating point registers are being correctly saved and restored during
* context switches. The math tasks are defined in flop.c.
*
* "Check" task - This only executes every five seconds but has a high priority
* to ensure it gets processor time. Its main function is to check that all the
* standard demo tasks are still operational. While no errors have been
* discovered the check task will toggle an LED every 5 seconds - the toggle
* rate increasing to 200ms being a visual indication that at least one task has
* reported unexpected behaviour.
*
* *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application
* tasks are executing as expected and no errors have been reported in any
* tasks. The toggle rate increasing to 200ms indicates that at least one task
* has reported unexpected behaviour.
*
* *NOTE 2* This file and flop.c both demonstrate the use of
* xPortUsesFloatingPoint() which informs the kernel that a task should maintain
* a floating point context.
*
* *NOTE 3* vApplicationSetupTimerInterrupt() is called by the kernel to let
* the application set up a timer to generate the tick interrupt. In this
* example a compare match timer is used for this purpose.
* vApplicationTickHook() is used to clear the timer interrupt and relies on
* configUSE_TICK_HOOK being set to 1 in FreeRTOSConfig.h.
*
* *NOTE 4* The traceTASK_SWITCHED_IN and traceTASK_SWITCHED_OUT trace hooks
* are used to save and restore the floating point context respectively for
* those tasks that require it (those for which xPortUsesFloatingPoint() has
* been called).
*
* *NOTE 5* Any interrupt that can cause a context switch requires an asm
* wrapper and must be assigned an interrupt priority of
* portKERNEL_INTERRUPT_PRIORITY.
*
* *NOTE 6* vSetupClockForRunTimeStats() is called by the kernel (via the
* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()) macro to configure an MTU channel
* to produce a time base that is used to log how much processor time each task
* is consuming. The MTU is used to generate a high(ish) frequency interrupt,
* and so also provides an example of how interrupts that don't make use of the
* FreeRTOS kernel can be assigned a priority above any priority used by the
* kernel itself.
*/
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo application includes. */
#include "BlockQ.h"
#include "death.h"
#include "integer.h"
#include "blocktim.h"
#include "flash.h"
#include "partest.h"
#include "semtest.h"
#include "PollQ.h"
#include "GenQTest.h"
#include "QPeek.h"
#include "recmutex.h"
#include "flop.h"
/* Constants required to configure the hardware. */
#define mainFRQCR_VALUE ( 0x0303 ) /* Input = 12.5MHz, I Clock = 200MHz, B Clock = 50MHz, P Clock = 50MHz */
/* Task priorities. */
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
/* The WEB server uses string handling functions, which in turn use a bit more
stack than most of the other tasks. */
#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 )
/* The LED toggled by the check task. */
#define mainCHECK_LED ( 5 )
/* The rate at which mainCHECK_LED will toggle when all the tasks are running
without error. */
#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_RATE_MS )
/* The rate at which mainCHECK_LED will toggle when an error has been reported
by at least one task. */
#define mainERROR_CYCLE_TIME ( 200 / portTICK_RATE_MS )
/*
* vApplicationMallocFailedHook() will only be called if
* configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook
* function that will execute if a call to pvPortMalloc() fails.
* pvPortMalloc() is called internally by the kernel whenever a task, queue or
* semaphore is created. It is also called by various parts of the demo
* application.
*/
void vApplicationMallocFailedHook( void );
/*
* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1
* in FreeRTOSConfig.h. It is a hook function that is called on each iteration
* of the idle task. It is essential that code added to this hook function
* never attempts to block in any way (for example, call xQueueReceive() with
* a block time specified). If the application makes use of the vTaskDelete()
* API function (as this demo application does) then it is also important that
* vApplicationIdleHook() is permitted to return to its calling function because
* it is the responsibility of the idle task to clean up memory allocated by the
* kernel to any task that has since been deleted.
*/
void vApplicationIdleHook( void );
/*
* Just sets up clocks, ports, etc. used by the demo application.
*/
static void prvSetupHardware( void );
/*
* The check task as described at the top of this file.
*/
static void prvCheckTask( void *pvParameters );
/*
* The reg test tasks as described at the top of this file.
*/
extern void vRegTest1Task( void *pvParameters );
extern void vRegTest2Task( void *pvParameters );
/*
* Contains the implementation of the WEB server.
*/
extern void vuIP_Task( void *pvParameters );
/*
* The interrupt handler for the MTU - which is used to maintain the time base
* used by the run time stats.
*/
#pragma interrupt MTU_Match
void MTU_Match( void );
/*-----------------------------------------------------------*/
/* Variables that are incremented on each iteration of the reg test tasks -
provided the tasks have not reported any errors. The check task inspects these
variables to ensure they are still incrementing as expected. */
volatile unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;
/* The status message that is displayed at the bottom of the "task stats" WEB
page, which is served by the uIP task. */
const char *pcStatusMessage = "All tasks executing without error.";
/* The time use for the run time stats. */
unsigned long ulRunTime = 0UL;
/*-----------------------------------------------------------*/
/*
* Creates the majority of the demo application tasks before starting the
* scheduler.
*/
void main(void)
{
xTaskHandle xCreatedTask;
prvSetupHardware();
/* Start the reg test tasks which test the context switching mechanism. */
xTaskCreate( vRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask );
xPortUsesFloatingPoint( xCreatedTask );
xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL );
/* Start the check task as described at the top of this file. */
xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Start the standard demo tasks. These don't perform any particular useful
functionality, other than to demonstrate the FreeRTOS API being used. */
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vCreateBlockTimeTasks();
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY );
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY );
vStartQueuePeekTasks();
vStartRecursiveMutexTasks();
/* Start the math tasks as described at the top of this file. */
vStartMathTasks( mainFLOP_TASK_PRIORITY );
/* The suicide tasks must be created last as they need to know how many
tasks were running prior to their creation in order to ascertain whether
or not the correct/expected number of tasks are running at any given time. */
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
/* Start the tasks running. */
vTaskStartScheduler();
/* Will only get here if there was insufficient heap memory to create the idle
task. Increase the configTOTAL_HEAP_SIZE setting in FreeRTOSConfig.h. */
for( ;; );
}
/*-----------------------------------------------------------*/
static void prvCheckTask( void *pvParameter )
{
portTickType xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME;
unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;
/* Just to remove compiler warning. */
( void ) pvParameter;
/* Initialise xNextWakeTime - this only needs to be done once. */
xNextWakeTime = xTaskGetTickCount();
for( ;; )
{
/* Place this task in the blocked state until it is time to run again. */
vTaskDelayUntil( &xNextWakeTime, xCycleFrequency );
/* Inspect all the other tasks to ensure none have experienced any errors. */
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
{
/* Increase the rate at which this task cycles, which will increase the
rate at which mainCHECK_LED flashes to give visual feedback that an error
has occurred. */
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in GenQ test.";
}
else if( xAreQueuePeekTasksStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in Queue Peek test.";
}
else if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in Blocking Queue test.";
}
else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in BlockTim test.";
}
else if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in Semaphore test.";
}
else if( xArePollingQueuesStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in Polling Queue test.";
}
else if( xIsCreateTaskStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in Create test.";
}
else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in integer Math test.";
}
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in recursive mutex test.";
}
else if( xAreMathsTaskStillRunning() != pdTRUE )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in floating point Math test.";
}
/* Check the reg test tasks are still cycling. They will stop incrementing
their loop counters if they encounter an error. */
if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in RegTest.";
}
if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )
{
xCycleFrequency = mainERROR_CYCLE_TIME;
pcStatusMessage = "Error in RegTest.";
}
ulLastRegTest1CycleCount = ulRegTest1CycleCount;
ulLastRegTest2CycleCount = ulRegTest2CycleCount;
/* Toggle the check LED to give an indication of the system status. If the
LED toggles every 5 seconds then everything is ok. A faster toggle indicates
an error. */
vParTestToggleLED( mainCHECK_LED );
}
}
/*-----------------------------------------------------------*/
void vApplicationMallocFailedHook( void )
{
/* A call to vPortMalloc() failed, probably during the creation of a task,
queue or semaphore. Inspect pxCurrentTCB to find which task is currently
executing. */
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationIdleHook( void )
{
/* Code can be added to the idle task here. This function must *NOT* attempt
to block. Also, if the application uses the vTaskDelete() API function then
this function must return regularly to ensure the idle task gets a chance to
clean up the memory used by deleted tasks. */
}
/*-----------------------------------------------------------*/
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )
{
/* Just to remove compiler warnings. This function will only actually
get called if configCHECK_FOR_STACK_OVERFLOW is set to a non zero value.
By default this demo does not use the stack overflow checking functionality
as the SuperH will normally execute an exception if the stack overflows. */
( void ) pxTask;
( void ) pcTaskName;
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
volatile unsigned long ul;
/* Set the CPU and peripheral clocks. */
CPG.FRQCR.WORD = mainFRQCR_VALUE;
/* Wait for the clock to settle. */
for( ul = 0; ul < 99; ul++ )
{
nop();
}
/* Initialise the ports used to toggle LEDs. */
vParTestInitialise();
}
/*-----------------------------------------------------------*/
void vApplicationSetupTimerInterrupt( void )
{
/* The peripheral clock is divided by 32 before feeding the compare match
peripheral (CMT). */
const unsigned long ulCompareMatch = ( configPERIPHERAL_CLOCK_HZ / ( configTICK_RATE_HZ * 32 ) ) + 1;
/* Configure a timer to create the RTOS tick interrupt. This example uses
the compare match timer, but the multi function timer or possible even the
watchdog timer could also be used. Ensure vPortTickInterrupt() is installed
as the interrupt handler for whichever peripheral is used. */
/* Turn the CMT on. */
STB.CR4.BIT._CMT = 0;
/* Set the compare match value for the required tick frequency. */
CMT0.CMCOR = ( unsigned short ) ulCompareMatch;
/* Divide the peripheral clock by 32. */
CMT0.CMCSR.BIT.CKS = 0x01;
/* Set the CMT interrupt priority - the interrupt priority must be
configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to generate
the tick interrupt. */
INTC.IPR08.BIT._CMT0 = portKERNEL_INTERRUPT_PRIORITY;
/* Clear the interrupt flag. */
CMT0.CMCSR.BIT.CMF = 0;
/* Enable the compare match interrupt. */
CMT0.CMCSR.BIT.CMIE = 0x01;
/* Start the timer. */
CMT.CMSTR.BIT.STR0 = 0x01;
}
/*-----------------------------------------------------------*/
void vApplicationTickHook( void )
{
/* Clear the tick inerrupt. This is called from an interrupt context. */
CMT0.CMCSR.BIT.CMF = 0;
}
/*-----------------------------------------------------------*/
void vSetupClockForRunTimeStats( void )
{
/* Configure an MTU channel to generate a periodic interrupt that is used
as the run time stats time base. The run time stats keep a track of how
much processing time each task is using. */
/* Turn the MTU2 on. */
STB.CR3.BIT._MTU2 = 0;
/* Clear counter on compare match A. */
MTU20.TCR.BIT.CCLR = 0x01;
/* Compare match value to give very approximately 10 interrupts per
millisecond. */
MTU20.TGRA = 5000;
/* Ensure the interrupt is clear. */
MTU20.TSR.BIT.TGFA = 0;
/* Enable the compare match interrupt. */
MTU20.TIER.BIT.TGIEA = 0x01;
/* Set the interrupt priority. */
INTC.IPR09.BIT._MTU20G = portKERNEL_INTERRUPT_PRIORITY + 1;
/* Start the count. */
MTU2.TSTR.BIT.CST0 = 1;
}
/*-----------------------------------------------------------*/
void MTU_Match( void )
{
volatile unsigned char ucStatus;
/* Increment the run time stats time base. */
ulRunTime++;
/* Clear the interrupt. */
ucStatus = MTU20.TSR.BYTE;
MTU20.TSR.BIT.TGFA = 0;
}
/*-----------------------------------------------------------*/
char *pcGetTaskStatusMessage( void )
{
/* Not bothered about a critical section here. This just returns a string
that is displaed on the "Task Stats" WEB page served by this demo. */
return pcStatusMessage;
}
/*-----------------------------------------------------------*/

View file

@ -0,0 +1,293 @@
/*
Copyright 2001, 2002 Georges Menie (www.menie.org)
stdarg version contributed by Christian Ettinger
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
putchar is the only external dependency for this file,
if you have a working putchar, leave it commented out.
If not, uncomment the define below and
replace outbyte(c) by your own function call.
*/
#define putchar(c) c
#include <stdarg.h>
static void printchar(char **str, int c)
{
//extern int putchar(int c);
if (str) {
**str = (char)c;
++(*str);
}
else
{
(void)putchar(c);
}
}
#define PAD_RIGHT 1
#define PAD_ZERO 2
static int prints(char **out, const char *string, int width, int pad)
{
register int pc = 0, padchar = ' ';
if (width > 0) {
register int len = 0;
register const char *ptr;
for (ptr = string; *ptr; ++ptr) ++len;
if (len >= width) width = 0;
else width -= len;
if (pad & PAD_ZERO) padchar = '0';
}
if (!(pad & PAD_RIGHT)) {
for ( ; width > 0; --width) {
printchar (out, padchar);
++pc;
}
}
for ( ; *string ; ++string) {
printchar (out, *string);
++pc;
}
for ( ; width > 0; --width) {
printchar (out, padchar);
++pc;
}
return pc;
}
/* the following should be enough for 32 bit int */
#define PRINT_BUF_LEN 12
static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)
{
char print_buf[PRINT_BUF_LEN];
register char *s;
register int t, neg = 0, pc = 0;
register unsigned int u = (unsigned int)i;
if (i == 0) {
print_buf[0] = '0';
print_buf[1] = '\0';
return prints (out, print_buf, width, pad);
}
if (sg && b == 10 && i < 0) {
neg = 1;
u = (unsigned int)-i;
}
s = print_buf + PRINT_BUF_LEN-1;
*s = '\0';
while (u) {
t = (unsigned int)u % b;
if( t >= 10 )
t += letbase - '0' - 10;
*--s = (char)(t + '0');
u /= b;
}
if (neg) {
if( width && (pad & PAD_ZERO) ) {
printchar (out, '-');
++pc;
--width;
}
else {
*--s = '-';
}
}
return pc + prints (out, s, width, pad);
}
static int print( char **out, const char *format, va_list args )
{
register int width, pad;
register int pc = 0;
char scr[2];
for (; *format != 0; ++format) {
if (*format == '%') {
++format;
width = pad = 0;
if (*format == '\0') break;
if (*format == '%') goto out;
if (*format == '-') {
++format;
pad = PAD_RIGHT;
}
while (*format == '0') {
++format;
pad |= PAD_ZERO;
}
for ( ; *format >= '0' && *format <= '9'; ++format) {
width *= 10;
width += *format - '0';
}
if( *format == 's' ) {
register char *s = (char *)va_arg( args, int );
pc += prints (out, s?s:"(null)", width, pad);
continue;
}
if( *format == 'd' ) {
pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
continue;
}
if( *format == 'x' ) {
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
continue;
}
if( *format == 'X' ) {
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
continue;
}
if( *format == 'u' ) {
pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
continue;
}
if( *format == 'c' ) {
/* char are converted to int then pushed on the stack */
scr[0] = (char)va_arg( args, int );
scr[1] = '\0';
pc += prints (out, scr, width, pad);
continue;
}
}
else {
out:
printchar (out, *format);
++pc;
}
}
if (out) **out = '\0';
va_end( args );
return pc;
}
int printf(const char *format, ...)
{
va_list args;
va_start( args, format );
return print( 0, format, args );
}
int sprintf(char *out, const char *format, ...)
{
va_list args;
va_start( args, format );
return print( &out, format, args );
}
int snprintf( char *buf, unsigned int count, const char *format, ... )
{
va_list args;
( void ) count;
va_start( args, format );
return print( &buf, format, args );
}
#ifdef TEST_PRINTF
int main(void)
{
char *ptr = "Hello world!";
char *np = 0;
int i = 5;
unsigned int bs = sizeof(int)*8;
int mi;
char buf[80];
mi = (1 << (bs-1)) + 1;
printf("%s\n", ptr);
printf("printf test\n");
printf("%s is null pointer\n", np);
printf("%d = 5\n", i);
printf("%d = - max int\n", mi);
printf("char %c = 'a'\n", 'a');
printf("hex %x = ff\n", 0xff);
printf("hex %02x = 00\n", 0);
printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);
printf("%d %s(s)%", 0, "message");
printf("\n");
printf("%d %s(s) with %%\n", 0, "message");
sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);
sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);
sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);
sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);
sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);
sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);
sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);
sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);
return 0;
}
/*
* if you compile this file with
* gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c
* you will get a normal warning:
* printf.c:214: warning: spurious trailing `%' in format
* this line is testing an invalid % at the end of the format string.
*
* this should display (on 32bit int machine) :
*
* Hello world!
* printf test
* (null) is null pointer
* 5 = 5
* -2147483647 = - max int
* char a = 'a'
* hex ff = ff
* hex 00 = 00
* signed -3 = unsigned 4294967293 = hex fffffffd
* 0 message(s)
* 0 message(s) with %
* justif: "left "
* justif: " right"
* 3: 0003 zero padded
* 3: 3 left justif.
* 3: 3 right justif.
* -3: -003 zero padded
* -3: -3 left justif.
* -3: -3 right justif.
*/
#endif
/* To keep linker happy. */
int write( int i, char* c, int n)
{
(void)i;
(void)n;
(void)c;
return 0;
}

View file

@ -0,0 +1,477 @@
;/*
; FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
;
;
; ***************************************************************************
; * *
; * FreeRTOS tutorial books are available in pdf and paperback. *
; * Complete, revised, and edited pdf reference manuals are also *
; * available. *
; * *
; * Purchasing FreeRTOS documentation will not only help you, by *
; * ensuring you get running as quickly as possible and with an *
; * in-depth knowledge of how to use FreeRTOS, it will also help *
; * the FreeRTOS project to continue with its mission of providing *
; * professional grade, cross platform, de facto standard solutions *
; * for microcontrollers - completely free of charge! *
; * *
; * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
; * *
; * Thank you for using FreeRTOS, and thank you for your support! *
; * *
; ***************************************************************************
;
;
; This file is part of the FreeRTOS distribution.
;
; FreeRTOS is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License (version 2) as published by the
; Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
; >>>NOTE<<< The modification to the GPL is included to allow you to
; distribute a combined work that includes FreeRTOS without being obliged to
; provide the source code for proprietary components outside of the FreeRTOS
; kernel. FreeRTOS is distributed in the hope that it will be useful, but
; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
; more details. You should have received a copy of the GNU General Public
; License and the FreeRTOS license exception along with FreeRTOS; if not it
; can be viewed here: http://www.freertos.org/a00114.html and also obtained
; by writing to Richard Barry, contact details for whom are available on the
; FreeRTOS WEB site.
;
; 1 tab == 4 spaces!
;
; http://www.FreeRTOS.org - Documentation, latest information, license and
; contact details.
;
; http://www.SafeRTOS.com - A version that is certified for use in safety
; critical systems.
;
; http://www.OpenRTOS.com - Commercial support, development, porting,
; licensing and training services.
;*/
.import _ulRegTest1CycleCount
.import _ulRegTest2CycleCount
.import _vPortYield
.export _vRegTest1Task
.export _vRegTest2Task
.section P, code, align=4
_vRegTest1Task:
; Fill the registers with known values.
mov #2, r1
mov #3, r2
mov #4, r3
mov #5, r4
mov #6, r5
mov #7, r6
mov #8, r7
mov #9, r8
mov #10, r9
mov #11, r10
mov #12, r11
mov #13, r12
mov #14, r13
mov #15, r14
mov #16, r0
lds r0, macl
mov #17, r0
lds r0, mach
mov #18, r0
ldc r0, gbr
; Also fill the flop registers with known values.
lds r1, fpul
fsts fpul, fr1
lds r2, fpul
fsts fpul, fr2
lds r3, fpul
fsts fpul, fr3
lds r4, fpul
fsts fpul, fr4
lds r5, fpul
fsts fpul, fr5
lds r6, fpul
fsts fpul, fr6
lds r7, fpul
fsts fpul, fr7
lds r8, fpul
fsts fpul, fr8
lds r9, fpul
fsts fpul, fr9
lds r10, fpul
fsts fpul, fr10
lds r11, fpul
fsts fpul, fr11
lds r12, fpul
fsts fpul, fr12
lds r13, fpul
fsts fpul, fr13
lds r14, fpul
fsts fpul, fr14
_vRegTest1Loop:
; Reset r1 which was used in the tests.
mov #2, r1
; Test that the registers still contain the expected values. If not, jump to
; vRegTestError, which will stop this function looping and so cause it to stop
; incrementing its loop counter. Both the standard and flop registers are
; checked.
mov #2, r0
cmp/eq r0, r1
bf _vRegTest1Error
flds fr1, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #3, r0
cmp/eq r0, r2
bf _vRegTest1Error
flds fr2, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #4, r0
cmp/eq r0, r3
bf _vRegTest1Error
flds fr3, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #5, r0
cmp/eq r0, r4
bf _vRegTest1Error
flds fr4, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #6, r0
cmp/eq r0, r5
bf _vRegTest1Error
flds fr5, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #7, r0
cmp/eq r0, r6
bf _vRegTest1Error
flds fr6, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #8, r0
cmp/eq r0, r7
bf _vRegTest1Error
flds fr7, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #9, r0
cmp/eq r0, r8
bf _vRegTest1Error
flds fr8, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #10, r0
cmp/eq r0, r9
bf _vRegTest1Error
flds fr9, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #11, r0
cmp/eq r0, r10
bf _vRegTest1Error
flds fr10, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #12, r0
cmp/eq r0, r11
bf _vRegTest1Error
flds fr11, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #13, r0
cmp/eq r0, r12
bf _vRegTest1Error
flds fr12, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #14, r0
cmp/eq r0, r13
bf _vRegTest1Error
flds fr13, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
mov #15, r0
cmp/eq r0, r14
bf _vRegTest1Error
flds fr14, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest1Error
sts macl, r0
mov #16, r1
cmp/eq r0, r1
bf _vRegTest1Error
sts mach, r0
mov #17, r1
cmp/eq r0, r1
bf _vRegTest1Error
stc gbr, r0
mov #18, r1
cmp/eq r0, r1
bf _vRegTest1Error
; Increment the loop counter to indicate that this task is still running and
; still healthy.
mov.l #_ulRegTest1CycleCount, r0
mov.l @r0, r1
add #1, r1
mov.l r1, @r0
; Jump back to test all the registers again.
bra _vRegTest1Loop
nop
;-----------------------------------------------------------
_vRegTest1Error:
bra _vRegTest1Error
nop
;-----------------------------------------------------------
_vRegTest2Task:
; Fill the standard registers with known values.
mov #12, r1
mov #13, r2
mov #14, r3
mov #15, r4
mov #16, r5
mov #17, r6
mov #18, r7
mov #19, r8
mov #110, r9
mov #111, r10
mov #112, r11
mov #113, r12
mov #114, r13
mov #115, r0
lds r0, macl
mov #116, r0
lds r0, mach
mov #117, r0
ldc r0, gbr
; Also fill the flop registers with known values.
lds r1, fpul
fsts fpul, fr1
lds r2, fpul
fsts fpul, fr2
lds r3, fpul
fsts fpul, fr3
lds r4, fpul
fsts fpul, fr4
lds r5, fpul
fsts fpul, fr5
lds r6, fpul
fsts fpul, fr6
lds r7, fpul
fsts fpul, fr7
lds r8, fpul
fsts fpul, fr8
lds r9, fpul
fsts fpul, fr9
lds r10, fpul
fsts fpul, fr10
lds r11, fpul
fsts fpul, fr11
lds r12, fpul
fsts fpul, fr12
lds r13, fpul
fsts fpul, fr13
lds r14, fpul
fsts fpul, fr14
_vRegTest2Loop:
; Reset r1 which was used in the tests.
mov #12, r1
; Test that the registers still contain the expected values. If not, jump to
; vRegTestError, which will stop this function looping and so cause it to stop
; incrementing its loop counter. Both the standard and flop registers are
; checked.
mov #12, r0
cmp/eq r0, r1
bf _vRegTest2Error
flds fr1, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #13, r0
cmp/eq r0, r2
bf _vRegTest2Error
flds fr2, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #14, r0
cmp/eq r0, r3
bf _vRegTest2Error
flds fr3, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #15, r0
cmp/eq r0, r4
bf _vRegTest2Error
flds fr4, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #16, r0
cmp/eq r0, r5
bf _vRegTest2Error
flds fr5, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #17, r0
cmp/eq r0, r6
bf _vRegTest2Error
flds fr6, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #18, r0
cmp/eq r0, r7
bf _vRegTest2Error
flds fr7, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #19, r0
cmp/eq r0, r8
bf _vRegTest2Error
flds fr8, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #110, r0
cmp/eq r0, r9
bf _vRegTest2Error
flds fr9, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #111, r0
cmp/eq r0, r10
bf _vRegTest2Error
flds fr10, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #112, r0
cmp/eq r0, r11
bf _vRegTest2Error
flds fr11, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #113, r0
cmp/eq r0, r12
bf _vRegTest2Error
flds fr12, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
mov #114, r0
cmp/eq r0, r13
bf _vRegTest2Error
flds fr13, fpul
sts fpul, r1
cmp/eq r0, r1
bf _vRegTest2Error
sts macl, r0
mov #115, r1
cmp/eq r0, r1
bf _vRegTest2Error
sts mach, r0
mov #116, r1
cmp/eq r0, r1
bf _vRegTest2Error
stc gbr, r0
mov #117, r1
cmp/eq r0, r1
bf _vRegTest2Error
; Increment the loop counter to indicate that this task is still running and
; still healthy.
mov.l #_ulRegTest2CycleCount, r0
mov.l @r0, r1
add #1, r1
mov.l r1, @r0
; Jump back to test all the registers again.
bra _vRegTest2Loop
nop
;-----------------------------------------------------------
_vRegTest2Error:
bra _vRegTest2Error
nop
.end

View file

@ -0,0 +1,106 @@
/***********************************************************************/
/* */
/* FILE :resetprg.c */
/* DATE :Sun, Dec 27, 2009 */
/* DESCRIPTION :Reset Program */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.16). */
/* */
/***********************************************************************/
#include <machine.h>
#include <_h_c_lib.h>
//#include <stddef.h> // Remove the comment when you use errno
//#include <stdlib.h> // Remove the comment when you use rand()
#include "typedefine.h"
#include "stacksct.h"
#define SR_Init 0x000000F0
#ifdef _FPD // when -fpu=double is specified
#define FPSCR_Init 0x000C0001
#else
#define FPSCR_Init 0x00040001
#endif
#define INT_OFFSET 0x10
extern _UINT INT_Vectors;
#ifdef __cplusplus
extern "C" {
#endif
void PowerON_Reset_PC(void);
void Manual_Reset_PC(void);
void main(void);
#ifdef __cplusplus
}
#endif
//#ifdef __cplusplus // Enable I/O in the application(both SIM I/O and hardware I/O)
//extern "C" {
//#endif
//extern void _INIT_IOLIB(void);
//extern void _CLOSEALL(void);
//#ifdef __cplusplus
//}
//#endif
//extern void srand(_UINT); // Remove the comment when you use rand()
//extern _SBYTE *_s1ptr; // Remove the comment when you use strtok()
//#ifdef __cplusplus // Use Hardware Setup
//extern "C" {
//#endif
//extern void HardwareSetup(void);
//#ifdef __cplusplus
//}
//#endif
//#ifdef __cplusplus // Remove the comment when you use global class object
//extern "C" { // Sections C$INIT and C$END will be generated
//#endif
//extern void _CALL_INIT(void);
//extern void _CALL_END(void);
//#ifdef __cplusplus
//}
//#endif
#pragma section ResetPRG
#pragma entry PowerON_Reset_PC
void PowerON_Reset_PC(void)
{
set_vbr((void *)((_UBYTE *)&INT_Vectors - INT_OFFSET));
set_fpscr(FPSCR_Init);
_INITSCT();
// _CALL_INIT(); // Remove the comment when you use global class object
// _INIT_IOLIB(); // Enable I/O in the application(both SIM I/O and hardware I/O)
// errno=0; // Remove the comment when you use errno
// srand((_UINT)1); // Remove the comment when you use rand()
// _s1ptr=NULL; // Remove the comment when you use strtok()
// HardwareSetup(); // Use Hardware Setup
set_cr(SR_Init);
main();
// _CLOSEALL(); // Close I/O in the application(both SIM I/O andhardware I/O)
// _CALL_END(); // Remove the comment when you use global class object
sleep();
}
//#pragma entry Manual_Reset_PC // Remove the comment when you use Manual Reset
void Manual_Reset_PC(void)
{
}

View file

@ -0,0 +1,11 @@
/***********************************************************************/
/* */
/* FILE :stacksct.h */
/* DATE :Sun, Dec 27, 2009 */
/* DESCRIPTION :Setting of Stack area */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.16). */
/* */
/***********************************************************************/
#pragma stacksize 0x400 /* Do not modify this line. */

View file

@ -0,0 +1,23 @@
/***********************************************************************/
/* */
/* FILE :typedefine.h */
/* DATE :Sun, Dec 27, 2009 */
/* DESCRIPTION :Aliases of Integer Type */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.16). */
/* */
/***********************************************************************/
typedef signed char _SBYTE;
typedef unsigned char _UBYTE;
typedef signed short _SWORD;
typedef unsigned short _UWORD;
typedef signed int _SINT;
typedef unsigned int _UINT;
typedef signed long _SDWORD;
typedef unsigned long _UDWORD;
typedef signed long long _SQWORD;
typedef unsigned long long _UQWORD;

View file

@ -0,0 +1,273 @@
/*
FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong? *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest information,
license and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/* Standard includes. */
#include <string.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* uip includes. */
#include "net/uip.h"
#include "net/uip_arp.h"
#include "apps/httpd/httpd.h"
#include "sys/timer.h"
#include "net/clock-arch.h"
/* Demo includes. */
#include "ParTest.h"
/* Hardware includes. */
#include "hwEthernet.h"
/*-----------------------------------------------------------*/
/* How long to wait before attempting to connect the MAC again. */
#define uipINIT_WAIT ( 100 / portTICK_RATE_MS )
/* Shortcut to the header within the Rx buffer. */
#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ])
/* Standard constant. */
#define uipTOTAL_FRAME_HEADER_SIZE 54
/*-----------------------------------------------------------*/
/*
* Setup the MAC address in the MAC itself, and in the uIP stack.
*/
static void prvSetMACAddress( void );
/*
* Port functions required by the uIP stack.
*/
void clock_init( void );
clock_time_t clock_time( void );
/*-----------------------------------------------------------*/
/* The semaphore used by the ISR to wake the uIP task. */
xSemaphoreHandle xEMACSemaphore = NULL;
/*-----------------------------------------------------------*/
void clock_init(void)
{
/* This is done when the scheduler starts. */
}
/*-----------------------------------------------------------*/
clock_time_t clock_time( void )
{
return xTaskGetTickCount();
}
/*-----------------------------------------------------------*/
void vuIP_Task( void *pvParameters )
{
portBASE_TYPE i;
uip_ipaddr_t xIPAddr;
struct timer periodic_timer, arp_timer;
extern void ( vEMAC_ISR_Wrapper )( void );
( void ) pvParameters;
/* Initialise the uIP stack. */
timer_set( &periodic_timer, configTICK_RATE_HZ / 2 );
timer_set( &arp_timer, configTICK_RATE_HZ * 10 );
uip_init();
uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 );
uip_sethostaddr( &xIPAddr );
uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 );
uip_setnetmask( &xIPAddr );
prvSetMACAddress();
httpd_init();
/* Create the semaphore used to wake the uIP task. */
vSemaphoreCreateBinary( xEMACSemaphore );
/* Initialise the MAC. */
vInitEmac();
while( lEMACWaitForLink() != pdPASS )
{
vTaskDelay( uipINIT_WAIT );
}
for( ;; )
{
/* Is there received data ready to be processed? */
uip_len = ( unsigned short ) ulEMACRead();
if( ( uip_len > 0 ) && ( uip_buf != NULL ) )
{
/* Standard uIP loop taken from the uIP manual. */
if( xHeader->type == htons( UIP_ETHTYPE_IP ) )
{
uip_arp_ipin();
uip_input();
/* If the above function invocation resulted in data that
should be sent out on the network, the global variable
uip_len is set to a value > 0. */
if( uip_len > 0 )
{
uip_arp_out();
vEMACWrite();
}
}
else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) )
{
uip_arp_arpin();
/* If the above function invocation resulted in data that
should be sent out on the network, the global variable
uip_len is set to a value > 0. */
if( uip_len > 0 )
{
vEMACWrite();
}
}
}
else
{
if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) )
{
timer_reset( &periodic_timer );
for( i = 0; i < UIP_CONNS; i++ )
{
uip_periodic( i );
/* If the above function invocation resulted in data that
should be sent out on the network, the global variable
uip_len is set to a value > 0. */
if( uip_len > 0 )
{
uip_arp_out();
vEMACWrite();
}
}
/* Call the ARP timer function every 10 seconds. */
if( timer_expired( &arp_timer ) )
{
timer_reset( &arp_timer );
uip_arp_timer();
}
}
else
{
/* We did not receive a packet, and there was no periodic
processing to perform. Block for a fixed period. If a packet
is received during this period we will be woken by the ISR
giving us the Semaphore. */
xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 );
}
}
}
}
/*-----------------------------------------------------------*/
static void prvSetMACAddress( void )
{
struct uip_eth_addr xAddr;
/* Configure the MAC address in the uIP stack. */
xAddr.addr[ 0 ] = configMAC_ADDR0;
xAddr.addr[ 1 ] = configMAC_ADDR1;
xAddr.addr[ 2 ] = configMAC_ADDR2;
xAddr.addr[ 3 ] = configMAC_ADDR3;
xAddr.addr[ 4 ] = configMAC_ADDR4;
xAddr.addr[ 5 ] = configMAC_ADDR5;
uip_setethaddr( xAddr );
}
/*-----------------------------------------------------------*/
void vApplicationProcessFormInput( char *pcInputString )
{
char *c;
/* Process the form input sent by the IO page of the served HTML. */
c = strstr( pcInputString, "?" );
if( c )
{
/* Turn the FIO1 LED's on or off in accordance with the check box status. */
if( strstr( c, "LED0=1" ) != NULL )
{
/* Turn LED 4 on. */
vParTestSetLED( 4, 1 );
}
else
{
/* Turn LED 4 off. */
vParTestSetLED( 4, 0 );
}
}
}

View file

@ -0,0 +1,902 @@
/******************************************************************************
* DISCLAIMER
*
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
*
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
*
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
********************************************************************************
* Copyright (C) 2009. Renesas Technology Corp., All Rights Reserved.
*""FILE COMMENT""*********** Technical reference data **************************
* System Name : SH7216 Sample Program
* File Name : vect.h
* Abstract : Definition of Vector
* Version : 0.02.00
* Device : SH7216
* Tool-Chain : High-performance Embedded Workshop (Ver.4.05.01).
* : C/C++ compiler package for the SuperH RISC engine family
* : (Ver.9.03 Release00).
* OS : None
* H/W Platform: R0K572167 (CPU board)
* Description :
********************************************************************************
* History : Mar.30,2009 Ver.0.02.00
*""FILE COMMENT END""**********************************************************/
#ifndef VECT_H
#define VECT_H
//;<<VECTOR DATA START (POWER ON RESET)>>
// 0 Power On Reset PC
extern void PowerON_Reset_PC(void);
//;<<VECTOR DATA END (POWER ON RESET)>>
// 1 Power On Reset SP
//;<<VECTOR DATA START (MANUAL RESET)>>
// 2 Manual Reset PC
extern void Manual_Reset_PC(void);
//;<<VECTOR DATA END (MANUAL RESET)>>
// 3 Manual Reset SP
// 4 Illegal code
#pragma interrupt INT_Illegal_code
extern void INT_Illegal_code(void);
// 5 Reserved
// 6 Illegal slot
#pragma interrupt INT_Illegal_slot
extern void INT_Illegal_slot(void);
// 7 Reserved
// 8 Reserved
// 9 CPU Address error
#pragma interrupt INT_CPU_Address
extern void INT_CPU_Address(void);
// 10 DMAC Address error
#pragma interrupt INT_DMAC_Address
extern void INT_DMAC_Address(void);
// 11 NMI
#pragma interrupt INT_NMI
extern void INT_NMI(void);
// 12 User breakpoint trap
#pragma interrupt INT_User_Break
extern void INT_User_Break(void);
// 13 Reserved
// 14 H-UDI
#pragma interrupt INT_HUDI
extern void INT_HUDI(void);
// 15 Register bank over
#pragma interrupt INT_Bank_Overflow
extern void INT_Bank_Overflow(void);
// 16 Register bank under
#pragma interrupt INT_Bank_Underflow
extern void INT_Bank_Underflow(void);
// 17 ZERO_DIV
#pragma interrupt INT_Divide_by_Zero
extern void INT_Divide_by_Zero(void);
// 18 OVER_DIV
#pragma interrupt INT_Divide_Overflow
extern void INT_Divide_Overflow(void);
// 19 Reserved
// 20 Reserved
// 21 Reserved
// 22 Reserved
// 23 Reserved
// 24 Reserved
// 25 Reserved
// 26 Reserved
// 27 Reserved
// 28 Reserved
// 29 Reserved
// 30 Reserved
// 31 Reserved
// 32 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA32
extern void INT_TRAPA32(void);
// 33 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA33
extern void INT_TRAPA33(void);
// 34 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA34
extern void INT_TRAPA34(void);
// 35 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA35
extern void INT_TRAPA35(void);
// 36 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA36
extern void INT_TRAPA36(void);
// 37 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA37
extern void INT_TRAPA37(void);
// 38 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA38
extern void INT_TRAPA38(void);
// 39 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA39
extern void INT_TRAPA39(void);
// 40 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA40
extern void INT_TRAPA40(void);
// 41 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA41
extern void INT_TRAPA41(void);
// 42 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA42
extern void INT_TRAPA42(void);
// 43 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA43
extern void INT_TRAPA43(void);
// 44 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA44
extern void INT_TRAPA44(void);
// 45 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA45
extern void INT_TRAPA45(void);
// 46 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA46
extern void INT_TRAPA46(void);
// 47 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA47
extern void INT_TRAPA47(void);
// 48 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA48
extern void INT_TRAPA48(void);
// 49 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA49
extern void INT_TRAPA49(void);
// 50 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA50
extern void INT_TRAPA50(void);
// 51 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA51
extern void INT_TRAPA51(void);
// 52 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA52
extern void INT_TRAPA52(void);
// 53 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA53
extern void INT_TRAPA53(void);
// 54 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA54
extern void INT_TRAPA54(void);
// 55 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA55
extern void INT_TRAPA55(void);
// 56 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA56
extern void INT_TRAPA56(void);
// 57 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA57
extern void INT_TRAPA57(void);
// 58 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA58
extern void INT_TRAPA58(void);
// 59 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA59
extern void INT_TRAPA59(void);
// 60 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA60
extern void INT_TRAPA60(void);
// 61 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA61
extern void INT_TRAPA61(void);
// 62 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA62
extern void INT_TRAPA62(void);
// 63 TRAPA (User Vecter)
#pragma interrupt INT_TRAPA63
extern void INT_TRAPA63(void);
// 64 Interrupt IRQ0
#pragma interrupt INT_IRQ0(resbank)
extern void INT_IRQ0(void);
// 65 Interrupt IRQ1
#pragma interrupt INT_IRQ1(resbank)
extern void INT_IRQ1(void);
// 66 Interrupt IRQ2
#pragma interrupt INT_IRQ2(resbank)
extern void INT_IRQ2(void);
// 67 Interrupt IRQ3
#pragma interrupt INT_IRQ3(resbank)
extern void INT_IRQ3(void);
// 68 Interrupt IRQ4
#pragma interrupt INT_IRQ4(resbank)
extern void INT_IRQ4(void);
// 69 Interrupt IRQ5
#pragma interrupt INT_IRQ5(resbank)
extern void INT_IRQ5(void);
// 70 Interrupt IRQ6
#pragma interrupt INT_IRQ6(resbank)
extern void INT_IRQ6(void);
// 71 Interrupt IRQ7
#pragma interrupt INT_IRQ7(resbank)
extern void INT_IRQ7(void);
// 72 Reserved
// 73 Reserved
// 74 Reserved
// 75 Reserved
// 76 Reserved
// 77 Reserved
// 78 Reserved
// 79 Reserved
// 80 Interrupt PINT0
#pragma interrupt INT_PINT0(resbank)
extern void INT_PINT0(void);
// 81 Interrupt PINT1
#pragma interrupt INT_PINT1(resbank)
extern void INT_PINT1(void);
// 82 Interrupt PINT2
#pragma interrupt INT_PINT2(resbank)
extern void INT_PINT2(void);
// 83 Interrupt PINT3
#pragma interrupt INT_PINT3(resbank)
extern void INT_PINT3(void);
// 84 Interrupt PINT4
#pragma interrupt INT_PINT4(resbank)
extern void INT_PINT4(void);
// 85 Interrupt PINT5
#pragma interrupt INT_PINT5(resbank)
extern void INT_PINT5(void);
// 86 Interrupt PINT6
#pragma interrupt INT_PINT6(resbank)
extern void INT_PINT6(void);
// 87 Interrupt PINT7
#pragma interrupt INT_PINT7(resbank)
extern void INT_PINT7(void);
// 88 Reserved
// 89 Reserved
// 90 Reserved
// 91 ROM FIFE
#pragma interrupt INT_ROM_FIFE(resbank)
extern void INT_ROM_FIFE(void);
// 92 A/D ADI0
#pragma interrupt INT_AD_ADI0(resbank)
extern void INT_AD_ADI0(void);
// 93 Reserved
// 94 Reserved
// 95 Reserved
// 96 A/D ADI1
#pragma interrupt INT_AD_ADI1(resbank)
extern void INT_AD_ADI1(void);
// 97 Reserved
// 98 Reserved
// 99 Reserved
// 100 Reserved
// 101 Reserved
// 102 Reserved
// 103 Reserved
// 104 RCANET0 ERS_0
#pragma interrupt INT_RCANET0_ERS_0
extern void INT_RCANET0_ERS_0(void);
// 105 RCANET0 OVR_0
#pragma interrupt INT_RCANET0_OVR_0
extern void INT_RCANET0_OVR_0(void);
// 106 RCANET0 RM01_0
#pragma interrupt INT_RCANET0_RM01_0
extern void INT_RCANET0_RM01_0(void);
// 107 RCANET0 SLE_0
#pragma interrupt INT_RCANET0_SLE_0
extern void INT_RCANET0_SLE_0(void);
// 108 DMAC0 DEI0
#pragma interrupt INT_DMAC0_DEI0(resbank)
extern void INT_DMAC0_DEI0(void);
// 109 DMAC0 HEI0
#pragma interrupt INT_DMAC0_HEI0(resbank)
extern void INT_DMAC0_HEI0(void);
// 110 Reserved
// 111 Reserved
// 112 DMAC1 DEI1
#pragma interrupt INT_DMAC1_DEI1(resbank)
extern void INT_DMAC1_DEI1(void);
// 113 DMAC1 HEI1
#pragma interrupt INT_DMAC1_HEI1(resbank)
extern void INT_DMAC1_HEI1(void);
// 114 Reserved
// 115 Reserved
// 116 DMAC2 DEI2
#pragma interrupt INT_DMAC2_DEI2(resbank)
extern void INT_DMAC2_DEI2(void);
// 117 DMAC2 HEI2
#pragma interrupt INT_DMAC2_HEI2(resbank)
extern void INT_DMAC2_HEI2(void);
// 118 Reserved
// 119 Reserved
// 120 DMAC3 DEI3
#pragma interrupt INT_DMAC3_DEI3(resbank)
extern void INT_DMAC3_DEI3(void);
// 121 DMAC3 HEI3
#pragma interrupt INT_DMAC3_HEI3(resbank)
extern void INT_DMAC3_HEI3(void);
// 122 Reserved
// 123 Reserved
// 124 DMAC4 DEI4
#pragma interrupt INT_DMAC4_DEI4(resbank)
extern void INT_DMAC4_DEI4(void);
// 125 DMAC4 HEI4
#pragma interrupt INT_DMAC4_HEI4(resbank)
extern void INT_DMAC4_HEI4(void);
// 126 Reserved
// 127 Reserved
// 128 DMAC5 DEI5
#pragma interrupt INT_DMAC5_DEI5(resbank)
extern void INT_DMAC5_DEI5(void);
// 129 DMAC5 HEI5
#pragma interrupt INT_DMAC5_HEI5(resbank)
extern void INT_DMAC5_HEI5(void);
// 130 Reserved
// 131 Reserved
// 132 DMAC6 DEI6
#pragma interrupt INT_DMAC6_DEI6(resbank)
extern void INT_DMAC6_DEI6(void);
// 133 DMAC6 HEI6
#pragma interrupt INT_DMAC6_HEI6(resbank)
extern void INT_DMAC6_HEI6(void);
// 134 Reserved
// 135 Reserved
// 136 DMAC7 DEI7
#pragma interrupt INT_DMAC7_DEI7(resbank)
extern void INT_DMAC7_DEI7(void);
// 137 DMAC7 HEI7
#pragma interrupt INT_DMAC7_HEI7(resbank)
extern void INT_DMAC7_HEI7(void);
// 138 Reserved
// 139 Reserved
// 140 CMT CMI0
#pragma interrupt INT_CMT_CMI0(resbank)
extern void INT_CMT_CMI0(void);
// 141 Reserved
// 142 Reserved
// 143 Reserved
// 144 CMT CMI1
#pragma interrupt INT_CMT_CMI1(resbank)
extern void INT_CMT_CMI1(void);
// 145 Reserved
// 146 Reserved
// 147 Reserved
// 148 BSC CMTI
#pragma interrupt INT_BSC_CMTI(resbank)
extern void INT_BSC_CMTI(void);
// 149 Reserved
// 150 USB EP4FULL
#pragma interrupt INT_USB_EP4FULL(resbank)
extern void INT_USB_EP4FULL(void);
// 151 USB EP5EMPTY
#pragma interrupt INT_USB_EP5EMPTY(resbank)
extern void INT_USB_EP5EMPTY(void);
// 152 WDT ITI
#pragma interrupt INT_WDT_ITI(resbank)
extern void INT_WDT_ITI(void);
// 153 E-DMAC EINT0
#pragma interrupt INT_EDMAC_EINT0(resbank)
extern void INT_EDMAC_EINT0(void);
// 154 USB EP1FULL
#pragma interrupt INT_USB_EP1FULL(resbank)
extern void INT_USB_EP1FULL(void);
// 155 USB EP2EMPTY
#pragma interrupt INT_USB_EP2EMPTY(resbank)
extern void INT_USB_EP2EMPTY(void);
// 156 MTU2 MTU0 TGI0A
#pragma interrupt INT_MTU2_MTU0_TGI0A(resbank)
extern void INT_MTU2_MTU0_TGI0A(void);
// 157 MTU2 MTU0 TGI0B
#pragma interrupt INT_MTU2_MTU0_TGI0B(resbank)
extern void INT_MTU2_MTU0_TGI0B(void);
// 158 MTU2 MTU0 TGI0C
#pragma interrupt INT_MTU2_MTU0_TGI0C(resbank)
extern void INT_MTU2_MTU0_TGI0C(void);
// 159 MTU2 MTU0 TGI0D
#pragma interrupt INT_MTU2_MTU0_TGI0D(resbank)
extern void INT_MTU2_MTU0_TGI0D(void);
// 160 MTU2 MTU0 TGI0V
#pragma interrupt INT_MTU2_MTU0_TGI0V(resbank)
extern void INT_MTU2_MTU0_TGI0V(void);
// 161 MTU2 MTU0 TGI0E
#pragma interrupt INT_MTU2_MTU0_TGI0E(resbank)
extern void INT_MTU2_MTU0_TGI0E(void);
// 162 MTU2 MTU0 TGI0F
#pragma interrupt INT_MTU2_MTU0_TGI0F(resbank)
extern void INT_MTU2_MTU0_TGI0F(void);
// 163 Reserved
// 164 MTU2 MTU1 TGI1A
#pragma interrupt INT_MTU2_MTU1_TGI1A(resbank)
extern void INT_MTU2_MTU1_TGI1A(void);
// 165 MTU2 MTU1 TGI1B
#pragma interrupt INT_MTU2_MTU1_TGI1B(resbank)
extern void INT_MTU2_MTU1_TGI1B(void);
// 166 Reserved
// 167 Reserved
// 168 MTU2 MTU1 TGI1V
#pragma interrupt INT_MTU2_MTU1_TGI1V(resbank)
extern void INT_MTU2_MTU1_TGI1V(void);
// 169 MTU2 MTU1 TGI1U
#pragma interrupt INT_MTU2_MTU1_TGI1U(resbank)
extern void INT_MTU2_MTU1_TGI1U(void);
// 170 Reserved
// 171 Reserved
// 172 MTU2 MTU2 TGI2A
#pragma interrupt INT_MTU2_MTU2_TGI2A(resbank)
extern void INT_MTU2_MTU2_TGI2A(void);
// 173 MTU2 MTU2 TGI2B
#pragma interrupt INT_MTU2_MTU2_TGI2B(resbank)
extern void INT_MTU2_MTU2_TGI2B(void);
// 174 Reserved
// 175 Reserved
// 176 MTU2 MTU2 TGI2V
#pragma interrupt INT_MTU2_MTU2_TGI2V(resbank)
extern void INT_MTU2_MTU2_TGI2V(void);
// 177 MTU2 MTU2 TGI2U
#pragma interrupt INT_MTU2_MTU2_TGI2U(resbank)
extern void INT_MTU2_MTU2_TGI2U(void);
// 178 Reserved
// 179 Reserved
// 180 MTU2 MTU3 TGI3A
#pragma interrupt INT_MTU2_MTU3_TGI3A(resbank)
extern void INT_MTU2_MTU3_TGI3A(void);
// 181 MTU2 MTU3 TGI3B
#pragma interrupt INT_MTU2_MTU3_TGI3B(resbank)
extern void INT_MTU2_MTU3_TGI3B(void);
// 182 MTU2 MTU3 TGI3C
#pragma interrupt INT_MTU2_MTU3_TGI3C(resbank)
extern void INT_MTU2_MTU3_TGI3C(void);
// 183 MTU2 MTU3 TGI3D
#pragma interrupt INT_MTU2_MTU3_TGI3D(resbank)
extern void INT_MTU2_MTU3_TGI3D(void);
// 184 MTU2 MTU3 TGI3V
#pragma interrupt INT_MTU2_MTU3_TGI3V(resbank)
extern void INT_MTU2_MTU3_TGI3V(void);
// 185 Reserved
// 186 Reserved
// 187 Reserved
// 188 MTU2 MTU4 TGI4A
#pragma interrupt INT_MTU2_MTU4_TGI4A(resbank)
extern void INT_MTU2_MTU4_TGI4A(void);
// 189 MTU2 MTU4 TGI4B
#pragma interrupt INT_MTU2_MTU4_TGI4B(resbank)
extern void INT_MTU2_MTU4_TGI4B(void);
// 190 MTU2 MTU4 TGI4C
#pragma interrupt INT_MTU2_MTU4_TGI4C(resbank)
extern void INT_MTU2_MTU4_TGI4C(void);
// 191 MTU2 MTU4 TGI4D
#pragma interrupt INT_MTU2_MTU4_TGI4D(resbank)
extern void INT_MTU2_MTU4_TGI4D(void);
// 192 MTU2 MTU4 TGI4V
#pragma interrupt INT_MTU2_MTU4_TGI4V(resbank)
extern void INT_MTU2_MTU4_TGI4V(void);
// 193 Reserved
// 194 Reserved
// 195 Reserved
// 196 MTU2 MTU5 TGI5U
#pragma interrupt INT_MTU2_MTU5_TGI5U(resbank)
extern void INT_MTU2_MTU5_TGI5U(void);
// 197 MTU2 MTU5 TGI5V
#pragma interrupt INT_MTU2_MTU5_TGI5V(resbank)
extern void INT_MTU2_MTU5_TGI5V(void);
// 198 MTU2 MTU5 TGI5W
#pragma interrupt INT_MTU2_MTU5_TGI5W(resbank)
extern void INT_MTU2_MTU5_TGI5W(void);
// 199 Reserved
// 200 POE2 OEI1
#pragma interrupt INT_POE2_OEI1(resbank)
extern void INT_POE2_OEI1(void);
// 201 POE2 OEI2
#pragma interrupt INT_POE2_OEI2(resbank)
extern void INT_POE2_OEI2(void);
// 202 Reserved
// 203 Reserved
// 204 MTU2S MTU3S TGI3A
#pragma interrupt INT_MTU2S_MTU3S_TGI3A(resbank)
extern void INT_MTU2S_MTU3S_TGI3A(void);
// 205 MTU2S MTU3S TGI3B
#pragma interrupt INT_MTU2S_MTU3S_TGI3B(resbank)
extern void INT_MTU2S_MTU3S_TGI3B(void);
// 206 MTU2S MTU3S TGI3C
#pragma interrupt INT_MTU2S_MTU3S_TGI3C(resbank)
extern void INT_MTU2S_MTU3S_TGI3C(void);
// 207 MTU2S MTU3S TGI3D
#pragma interrupt INT_MTU2S_MTU3S_TGI3D(resbank)
extern void INT_MTU2S_MTU3S_TGI3D(void);
// 208 MTU2S MTU3S TGI3V
#pragma interrupt INT_MTU2S_MTU3S_TGI3V(resbank)
extern void INT_MTU2S_MTU3S_TGI3V(void);
// 209 Reserved
// 210 Reserved
// 211 Reserved
// 212 MTU2S MTU4S TGI4A
#pragma interrupt INT_MTU2S_MTU4S_TGI4A(resbank)
extern void INT_MTU2S_MTU4S_TGI4A(void);
// 213 MTU2S MTU4S TGI4B
#pragma interrupt INT_MTU2S_MTU4S_TGI4B(resbank)
extern void INT_MTU2S_MTU4S_TGI4B(void);
// 214 MTU2S MTU4S TGI4C
#pragma interrupt INT_MTU2S_MTU4S_TGI4C(resbank)
extern void INT_MTU2S_MTU4S_TGI4C(void);
// 215 MTU2S MTU4S TGI4D
#pragma interrupt INT_MTU2S_MTU4S_TGI4D(resbank)
extern void INT_MTU2S_MTU4S_TGI4D(void);
// 216 MTU2S MTU4S TGI4V
#pragma interrupt INT_MTU2S_MTU4S_TGI4V(resbank)
extern void INT_MTU2S_MTU4S_TGI4V(void);
// 217 Reserved
// 218 Reserved
// 219 Reserved
// 220 MTU2S MTU5S TGI5U
#pragma interrupt INT_MTU2S_MTU5S_TGI5U(resbank)
extern void INT_MTU2S_MTU5S_TGI5U(void);
// 221 MTU2S MTU5S TGI5V
#pragma interrupt INT_MTU2S_MTU5S_TGI5V(resbank)
extern void INT_MTU2S_MTU5S_TGI5V(void);
// 222 MTU2S MTU5S TGI5W
#pragma interrupt INT_MTU2S_MTU5S_TGI5W(resbank)
extern void INT_MTU2S_MTU5S_TGI5W(void);
// 223 Reserved
// 224 POE2 OEI3
#pragma interrupt INT_POE2_OEI3(resbank)
extern void INT_POE2_OEI3(void);
// 225 Reserved
// 226 USB USI0
#pragma interrupt INT_USB_USI0(resbank)
extern void INT_USB_USI0(void);
// 227 USB USI1
#pragma interrupt INT_USB_USI1(resbank)
extern void INT_USB_USI1(void);
// 228 IIC3 STPI
#pragma interrupt INT_IIC3_STPI(resbank)
extern void INT_IIC3_STPI(void);
// 229 IIC3 NAKI
#pragma interrupt INT_IIC3_NAKI(resbank)
extern void INT_IIC3_NAKI(void);
// 230 IIC3 RXI
#pragma interrupt INT_IIC3_RXI(resbank)
extern void INT_IIC3_RXI(void);
// 231 IIC3 TXI
#pragma interrupt INT_IIC3_TXI(resbank)
extern void INT_IIC3_TXI(void);
// 232 IIC3 TEI
#pragma interrupt INT_IIC3_TEI(resbank)
extern void INT_IIC3_TEI(void);
// 233 RSPI SPERI
#pragma interrupt INT_RSPI_SPERI(resbank)
extern void INT_RSPI_SPERI(void);
// 234 RSPI SPRXI
#pragma interrupt INT_RSPI_SPRXI(resbank)
extern void INT_RSPI_SPRXI(void);
// 235 RSPI SPTXI
#pragma interrupt INT_RSPI_SPTXI(resbank)
extern void INT_RSPI_SPTXI(void);
// 236 SCI SCI4 ERI4
#pragma interrupt INT_SCI_SCI4_ERI4(resbank)
extern void INT_SCI_SCI4_ERI4(void);
// 237 SCI SCI4 RXI4
#pragma interrupt INT_SCI_SCI4_RXI4(resbank)
extern void INT_SCI_SCI4_RXI4(void);
// 238 SCI SCI4 TXI4
#pragma interrupt INT_SCI_SCI4_TXI4(resbank)
extern void INT_SCI_SCI4_TXI4(void);
// 239 SCI SCI4 TEI4
#pragma interrupt INT_SCI_SCI4_TEI4(resbank)
extern void INT_SCI_SCI4_TEI4(void);
// 240 SCI SCI0 ERI0
#pragma interrupt INT_SCI_SCI0_ERI0(resbank)
extern void INT_SCI_SCI0_ERI0(void);
// 241 SCI SCI0 RXI0
#pragma interrupt INT_SCI_SCI0_RXI0(resbank)
extern void INT_SCI_SCI0_RXI0(void);
// 242 SCI SCI0 TXI0
#pragma interrupt INT_SCI_SCI0_TXI0(resbank)
extern void INT_SCI_SCI0_TXI0(void);
// 243 SCI SCI0 TEI0
#pragma interrupt INT_SCI_SCI0_TEI0(resbank)
extern void INT_SCI_SCI0_TEI0(void);
// 244 SCI SCI1 ERI1
#pragma interrupt INT_SCI_SCI1_ERI1(resbank)
extern void INT_SCI_SCI1_ERI1(void);
// 245 SCI SCI1 RXI1
#pragma interrupt INT_SCI_SCI1_RXI1(resbank)
extern void INT_SCI_SCI1_RXI1(void);
// 246 SCI SCI1 TXI1
#pragma interrupt INT_SCI_SCI1_TXI1(resbank)
extern void INT_SCI_SCI1_TXI1(void);
// 247 SCI SCI1 TEI1
#pragma interrupt INT_SCI_SCI1_TEI1(resbank)
extern void INT_SCI_SCI1_TEI1(void);
// 248 SCI SCI2 ERI2
#pragma interrupt INT_SCI_SCI2_ERI2(resbank)
extern void INT_SCI_SCI2_ERI2(void);
// 249 SCI SCI2 RXI2
#pragma interrupt INT_SCI_SCI2_RXI2(resbank)
extern void INT_SCI_SCI2_RXI2(void);
// 250 SCI SCI2 TXI2
#pragma interrupt INT_SCI_SCI2_TXI2(resbank)
extern void INT_SCI_SCI2_TXI2(void);
// 251 SCI SCI2 TEI2
#pragma interrupt INT_SCI_SCI2_TEI2(resbank)
extern void INT_SCI_SCI2_TEI2(void);
// 252 SCIF SCIF3 BRI3
#pragma interrupt INT_SCIF_SCIF3_BRI3(resbank)
extern void INT_SCIF_SCIF3_BRI3(void);
// 253 SCIF SCIF3 ERI3
#pragma interrupt INT_SCIF_SCIF3_ERI3(resbank)
extern void INT_SCIF_SCIF3_ERI3(void);
// 254 SCIF SCIF3 RXI3
#pragma interrupt INT_SCIF_SCIF3_RXI3(resbank)
extern void INT_SCIF_SCIF3_RXI3(void);
// 255 SCIF SCIF3 TXI3
#pragma interrupt INT_SCIF_SCIF3_TXI3(resbank)
extern void INT_SCIF_SCIF3_TXI3(void);
// Dummy
#pragma interrupt Dummy(resbank)
extern void Dummy(void);
#endif /* VECT_H */
/* End of File */

View file

@ -0,0 +1,553 @@
/***********************************************************************/
/* */
/* FILE :vecttbl.c */
/* DATE :Sun, Dec 27, 2009 */
/* DESCRIPTION :Initialize of Vector Table */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.16). */
/* */
/***********************************************************************/
#include "vect.h"
extern void vPortStartFirstTask( void );
extern void vPortYieldHandler( void );
extern void vPortPreemptiveTick( void );
extern void vEMAC_ISR_Wrapper( void );
extern void MTU_Match( void );
#pragma section VECTTBL
void *RESET_Vectors[] = {
//;<<VECTOR DATA START (POWER ON RESET)>>
//;0 Power On Reset PC
(void*) PowerON_Reset_PC,
//;<<VECTOR DATA END (POWER ON RESET)>>
// 1 Power On Reset SP
__secend("S"),
//;<<VECTOR DATA START (MANUAL RESET)>>
//;2 Manual Reset PC
(void*) Manual_Reset_PC,
//;<<VECTOR DATA END (MANUAL RESET)>>
// 3 Manual Reset SP
__secend("S")
};
#pragma section INTTBL
void *INT_Vectors[] = {
// 4 Illegal code
(void*) INT_Illegal_code,
// 5 Reserved
(void*) Dummy,
// 6 Illegal slot
(void*) INT_Illegal_slot,
// 7 Reserved
(void*) Dummy,
// 8 Reserved
(void*) Dummy,
// 9 CPU Address error
(void*) INT_CPU_Address,
// 10 DMAC Address error
(void*) INT_DMAC_Address,
// 11 NMI
(void*) INT_NMI,
// 12 User breakpoint trap
(void*) INT_User_Break,
// 13 Reserved
(void*) Dummy,
// 14 H-UDI
(void*) INT_HUDI,
// 15 Register bank over
(void*) INT_Bank_Overflow,
// 16 Register bank under
(void*) INT_Bank_Underflow,
// 17 ZERO_DIV
(void*) INT_Divide_by_Zero,
// 18 OVER_DIV
(void*) INT_Divide_Overflow,
// 19 Reserved
(void*) Dummy,
// 20 Reserved
(void*) Dummy,
// 21 Reserved
(void*) Dummy,
// 22 Reserved
(void*) Dummy,
// 23 Reserved
(void*) Dummy,
// 24 Reserved
(void*) Dummy,
// 25 Reserved
(void*) Dummy,
// 26 Reserved
(void*) Dummy,
// 27 Reserved
(void*) Dummy,
// 28 Reserved
(void*) Dummy,
// 29 Reserved
(void*) Dummy,
// 30 Reserved
(void*) Dummy,
// 31 Reserved
(void*) Dummy,
// 32 TRAPA (User Vecter)
// (void*) INT_TRAPA32,
(void*) vPortStartFirstTask,
// 33 TRAPA (User Vecter)
// (void*) INT_TRAPA33,
(void*) vPortYieldHandler,
// 34 TRAPA (User Vecter)
(void*) INT_TRAPA34,
// 35 TRAPA (User Vecter)
(void*) INT_TRAPA35,
// 36 TRAPA (User Vecter)
(void*) INT_TRAPA36,
// 37 TRAPA (User Vecter)
(void*) INT_TRAPA37,
// 38 TRAPA (User Vecter)
(void*) INT_TRAPA38,
// 39 TRAPA (User Vecter)
(void*) INT_TRAPA39,
// 40 TRAPA (User Vecter)
(void*) INT_TRAPA40,
// 41 TRAPA (User Vecter)
(void*) INT_TRAPA41,
// 42 TRAPA (User Vecter)
(void*) INT_TRAPA42,
// 43 TRAPA (User Vecter)
(void*) INT_TRAPA43,
// 44 TRAPA (User Vecter)
(void*) INT_TRAPA44,
// 45 TRAPA (User Vecter)
(void*) INT_TRAPA45,
// 46 TRAPA (User Vecter)
(void*) INT_TRAPA46,
// 47 TRAPA (User Vecter)
(void*) INT_TRAPA47,
// 48 TRAPA (User Vecter)
(void*) INT_TRAPA48,
// 49 TRAPA (User Vecter)
(void*) INT_TRAPA49,
// 50 TRAPA (User Vecter)
(void*) INT_TRAPA50,
// 51 TRAPA (User Vecter)
(void*) INT_TRAPA51,
// 52 TRAPA (User Vecter)
(void*) INT_TRAPA52,
// 53 TRAPA (User Vecter)
(void*) INT_TRAPA53,
// 54 TRAPA (User Vecter)
(void*) INT_TRAPA54,
// 55 TRAPA (User Vecter)
(void*) INT_TRAPA55,
// 56 TRAPA (User Vecter)
(void*) INT_TRAPA56,
// 57 TRAPA (User Vecter)
(void*) INT_TRAPA57,
// 58 TRAPA (User Vecter)
(void*) INT_TRAPA58,
// 59 TRAPA (User Vecter)
(void*) INT_TRAPA59,
// 60 TRAPA (User Vecter)
(void*) INT_TRAPA60,
// 61 TRAPA (User Vecter)
(void*) INT_TRAPA61,
// 62 TRAPA (User Vecter)
(void*) INT_TRAPA62,
// 63 TRAPA (User Vecter)
(void*) INT_TRAPA63,
// 64 Interrupt IRQ0
(void*) INT_IRQ0,
// 65 Interrupt IRQ1
(void*) INT_IRQ1,
// 66 Interrupt IRQ2
(void*) INT_IRQ2,
// 67 Interrupt IRQ3
(void*) INT_IRQ3,
// 68 Interrupt IRQ4
(void*) INT_IRQ4,
// 69 Interrupt IRQ5
(void*) INT_IRQ5,
// 70 Interrupt IRQ6
(void*) INT_IRQ6,
// 71 Interrupt IRQ7
(void*) INT_IRQ7,
// 72 Reserved
(void*) Dummy,
// 73 Reserved
(void*) Dummy,
// 74 Reserved
(void*) Dummy,
// 75 Reserved
(void*) Dummy,
// 76 Reserved
(void*) Dummy,
// 77 Reserved
(void*) Dummy,
// 78 Reserved
(void*) Dummy,
// 79 Reserved
(void*) Dummy,
// 80 Interrupt PINT0
(void*) INT_PINT0,
// 81 Interrupt PINT1
(void*) INT_PINT1,
// 82 Interrupt PINT2
(void*) INT_PINT2,
// 83 Interrupt PINT3
(void*) INT_PINT3,
// 84 Interrupt PINT4
(void*) INT_PINT4,
// 85 Interrupt PINT5
(void*) INT_PINT5,
// 86 Interrupt PINT6
(void*) INT_PINT6,
// 87 Interrupt PINT7
(void*) INT_PINT7,
// 88 Reserved
(void*) Dummy,
// 89 Reserved
(void*) Dummy,
// 90 Reserved
(void*) Dummy,
// 91 ROM FIFE
(void*) INT_ROM_FIFE,
// 92 A/D ADI0
(void*) INT_AD_ADI0,
// 93 Reserved
(void*) Dummy,
// 94 Reserved
(void*) Dummy,
// 95 Reserved
(void*) Dummy,
// 96 A/D ADI1
(void*) INT_AD_ADI1,
// 97 Reserved
(void*) Dummy,
// 98 Reserved
(void*) Dummy,
// 99 Reserved
(void*) Dummy,
// 100 Reserved
(void*) Dummy,
// 101 Reserved
(void*) Dummy,
// 102 Reserved
(void*) Dummy,
// 103 Reserved
(void*) Dummy,
// 104 RCANET0 ERS_0
(void*) INT_RCANET0_ERS_0,
// 105 RCANET0 OVR_0
(void*) INT_RCANET0_OVR_0,
// 106 RCANET0 RM01_0
(void*) INT_RCANET0_RM01_0,
// 107 RCANET0 SLE_0
(void*) INT_RCANET0_SLE_0,
// 108 DMAC0 DEI0
(void*) INT_DMAC0_DEI0,
// 109 DMAC0 HEI0
(void*) INT_DMAC0_HEI0,
// 110 Reserved
(void*) Dummy,
// 111 Reserved
(void*) Dummy,
// 112 DMAC1 DEI1
(void*) INT_DMAC1_DEI1,
// 113 DMAC1 HEI1
(void*) INT_DMAC1_HEI1,
// 114 Reserved
(void*) Dummy,
// 115 Reserved
(void*) Dummy,
// 116 DMAC2 DEI2
(void*) INT_DMAC2_DEI2,
// 117 DMAC2 HEI2
(void*) INT_DMAC2_HEI2,
// 118 Reserved
(void*) Dummy,
// 119 Reserved
(void*) Dummy,
// 120 DMAC3 DEI3
(void*) INT_DMAC3_DEI3,
// 121 DMAC3 HEI3
(void*) INT_DMAC3_HEI3,
// 122 Reserved
(void*) Dummy,
// 123 Reserved
(void*) Dummy,
// 124 DMAC4 DEI4
(void*) INT_DMAC4_DEI4,
// 125 DMAC4 HEI4
(void*) INT_DMAC4_HEI4,
// 126 Reserved
(void*) Dummy,
// 127 Reserved
(void*) Dummy,
// 128 DMAC5 DEI5
(void*) INT_DMAC5_DEI5,
// 129 DMAC5 HEI5
(void*) INT_DMAC5_HEI5,
// 130 Reserved
(void*) Dummy,
// 131 Reserved
(void*) Dummy,
// 132 DMAC6 DEI6
(void*) INT_DMAC6_DEI6,
// 133 DMAC6 HEI6
(void*) INT_DMAC6_HEI6,
// 134 Reserved
(void*) Dummy,
// 135 Reserved
(void*) Dummy,
// 136 DMAC7 DEI7
(void*) INT_DMAC7_DEI7,
// 137 DMAC7 HEI7
(void*) INT_DMAC7_HEI7,
// 138 Reserved
(void*) Dummy,
// 139 Reserved
(void*) Dummy,
// 140 CMT CMI0
// (void*) INT_CMT_CMI0,
(void*) vPortPreemptiveTick,
// 141 Reserved
(void*) Dummy,
// 142 Reserved
(void*) Dummy,
// 143 Reserved
(void*) Dummy,
// 144 CMT CMI1
(void*) INT_CMT_CMI1,
// 145 Reserved
(void*) Dummy,
// 146 Reserved
(void*) Dummy,
// 147 Reserved
(void*) Dummy,
// 148 BSC CMTI
(void*) INT_BSC_CMTI,
// 149 Reserved
(void*) Dummy,
// 150 USB EP4FULL
(void*) INT_USB_EP4FULL,
// 151 USB EP5EMPTY
(void*) INT_USB_EP5EMPTY,
// 152 WDT ITI
(void*) INT_WDT_ITI,
// 153 E-DMAC EINT0
(void*) vEMAC_ISR_Wrapper,
// 154 USB EP1FULL
(void*) INT_USB_EP1FULL,
// 155 USB EP2EMPTY
(void*) INT_USB_EP2EMPTY,
// 156 MTU2 MTU0 TGI0A
// (void*) INT_MTU2_MTU0_TGI0A,
(void*) MTU_Match,
// 157 MTU2 MTU0 TGI0B
(void*) INT_MTU2_MTU0_TGI0B,
// 158 MTU2 MTU0 TGI0C
(void*) INT_MTU2_MTU0_TGI0C,
// 159 MTU2 MTU0 TGI0D
(void*) INT_MTU2_MTU0_TGI0D,
// 160 MTU2 MTU0 TGI0V
(void*) INT_MTU2_MTU0_TGI0V,
// 161 MTU2 MTU0 TGI0E
(void*) INT_MTU2_MTU0_TGI0E,
// 162 MTU2 MTU0 TGI0F
(void*) INT_MTU2_MTU0_TGI0F,
// 163 Reserved
(void*) Dummy,
// 164 MTU2 MTU1 TGI1A
(void*) INT_MTU2_MTU1_TGI1A,
// 165 MTU2 MTU1 TGI1B
(void*) INT_MTU2_MTU1_TGI1B,
// 166 Reserved
(void*) Dummy,
// 167 Reserved
(void*) Dummy,
// 168 MTU2 MTU1 TGI1V
(void*) INT_MTU2_MTU1_TGI1V,
// 169 MTU2 MTU1 TGI1U
(void*) INT_MTU2_MTU1_TGI1U,
// 170 Reserved
(void*) Dummy,
// 171 Reserved
(void*) Dummy,
// 172 MTU2 MTU2 TGI2A
(void*) INT_MTU2_MTU2_TGI2A,
// 173 MTU2 MTU2 TGI2B
(void*) INT_MTU2_MTU2_TGI2B,
// 174 Reserved
(void*) Dummy,
// 175 Reserved
(void*) Dummy,
// 176 MTU2 MTU2 TGI2V
(void*) INT_MTU2_MTU2_TGI2V,
// 177 MTU2 MTU2 TGI2U
(void*) INT_MTU2_MTU2_TGI2U,
// 178 Reserved
(void*) Dummy,
// 179 Reserved
(void*) Dummy,
// 180 MTU2 MTU3 TGI3A
(void*) INT_MTU2_MTU3_TGI3A,
// 181 MTU2 MTU3 TGI3B
(void*) INT_MTU2_MTU3_TGI3B,
// 182 MTU2 MTU3 TGI3C
(void*) INT_MTU2_MTU3_TGI3C,
// 183 MTU2 MTU3 TGI3D
(void*) INT_MTU2_MTU3_TGI3D,
// 184 MTU2 MTU3 TGI3V
(void*) INT_MTU2_MTU3_TGI3V,
// 185 Reserved
(void*) Dummy,
// 186 Reserved
(void*) Dummy,
// 187 Reserved
(void*) Dummy,
// 188 MTU2 MTU4 TGI4A
(void*) INT_MTU2_MTU4_TGI4A,
// 189 MTU2 MTU4 TGI4B
(void*) INT_MTU2_MTU4_TGI4B,
// 190 MTU2 MTU4 TGI4C
(void*) INT_MTU2_MTU4_TGI4C,
// 191 MTU2 MTU4 TGI4D
(void*) INT_MTU2_MTU4_TGI4D,
// 192 MTU2 MTU4 TGI4V
(void*) INT_MTU2_MTU4_TGI4V,
// 193 Reserved
(void*) Dummy,
// 194 Reserved
(void*) Dummy,
// 195 Reserved
(void*) Dummy,
// 196 MTU2 MTU5 TGI5U
(void*) INT_MTU2_MTU5_TGI5U,
// 197 MTU2 MTU5 TGI5V
(void*) INT_MTU2_MTU5_TGI5V,
// 198 MTU2 MTU5 TGI5W
(void*) INT_MTU2_MTU5_TGI5W,
// 199 Reserved
(void*) Dummy,
// 200 POE2 OEI1
(void*) INT_POE2_OEI1,
// 201 POE2 OEI2
(void*) INT_POE2_OEI2,
// 202 Reserved
(void*) Dummy,
// 203 Reserved
(void*) Dummy,
// 204 MTU2S MTU3S TGI3A
(void*) INT_MTU2S_MTU3S_TGI3A,
// 205 MTU2S MTU3S TGI3B
(void*) INT_MTU2S_MTU3S_TGI3B,
// 206 MTU2S MTU3S TGI3C
(void*) INT_MTU2S_MTU3S_TGI3C,
// 207 MTU2S MTU3S TGI3D
(void*) INT_MTU2S_MTU3S_TGI3D,
// 208 MTU2S MTU3S TGI3V
(void*) INT_MTU2S_MTU3S_TGI3V,
// 209 Reserved
(void*) Dummy,
// 210 Reserved
(void*) Dummy,
// 211 Reserved
(void*) Dummy,
// 212 MTU2S MTU4S TGI4A
(void*) INT_MTU2S_MTU4S_TGI4A,
// 213 MTU2S MTU4S TGI4B
(void*) INT_MTU2S_MTU4S_TGI4B,
// 214 MTU2S MTU4S TGI4C
(void*) INT_MTU2S_MTU4S_TGI4C,
// 215 MTU2S MTU4S TGI4D
(void*) INT_MTU2S_MTU4S_TGI4D,
// 216 MTU2S MTU4S TGI4V
(void*) INT_MTU2S_MTU4S_TGI4V,
// 217 Reserved
(void*) Dummy,
// 218 Reserved
(void*) Dummy,
// 219 Reserved
(void*) Dummy,
// 220 MTU2S MTU5S TGI5U
(void*) INT_MTU2S_MTU5S_TGI5U,
// 221 MTU2S MTU5S TGI5V
(void*) INT_MTU2S_MTU5S_TGI5V,
// 222 MTU2S MTU5S TGI5W
(void*) INT_MTU2S_MTU5S_TGI5W,
// 223 Reserved
(void*) Dummy,
// 224 POE2 OEI3
(void*) INT_POE2_OEI3,
// 225 Reserved
(void*) Dummy,
// 226 USB USI0
(void*) INT_USB_USI0,
// 227 USB USI1
(void*) INT_USB_USI1,
// 228 IIC3 STPI
(void*) INT_IIC3_STPI,
// 229 IIC3 NAKI
(void*) INT_IIC3_NAKI,
// 230 IIC3 RXI
(void*) INT_IIC3_RXI,
// 231 IIC3 TXI
(void*) INT_IIC3_TXI,
// 232 IIC3 TEI
(void*) INT_IIC3_TEI,
// 233 RSPI SPERI
(void*) INT_RSPI_SPERI,
// 234 RSPI SPRXI
(void*) INT_RSPI_SPRXI,
// 235 RSPI SPTXI
(void*) INT_RSPI_SPTXI,
// 236 SCI SCI4 ERI4
(void*) INT_SCI_SCI4_ERI4,
// 237 SCI SCI4 RXI4
(void*) INT_SCI_SCI4_RXI4,
// 238 SCI SCI4 TXI4
(void*) INT_SCI_SCI4_TXI4,
// 239 SCI SCI4 TEI4
(void*) INT_SCI_SCI4_TEI4,
// 240 SCI SCI0 ERI0
(void*) INT_SCI_SCI0_ERI0,
// 241 SCI SCI0 RXI0
(void*) INT_SCI_SCI0_RXI0,
// 242 SCI SCI0 TXI0
(void*) INT_SCI_SCI0_TXI0,
// 243 SCI SCI0 TEI0
(void*) INT_SCI_SCI0_TEI0,
// 244 SCI SCI1 ERI1
(void*) INT_SCI_SCI1_ERI1,
// 245 SCI SCI1 RXI1
(void*) INT_SCI_SCI1_RXI1,
// 246 SCI SCI1 TXI1
(void*) INT_SCI_SCI1_TXI1,
// 247 SCI SCI1 TEI1
(void*) INT_SCI_SCI1_TEI1,
// 248 SCI SCI2 ERI2
(void*) INT_SCI_SCI2_ERI2,
// 249 SCI SCI2 RXI2
(void*) INT_SCI_SCI2_RXI2,
// 250 SCI SCI2 TXI2
(void*) INT_SCI_SCI2_TXI2,
// 251 SCI SCI2 TEI2
(void*) INT_SCI_SCI2_TEI2,
// 252 SCIF SCIF3 BRI3
(void*) INT_SCIF_SCIF3_BRI3,
// 253 SCIF SCIF3 ERI3
(void*) INT_SCIF_SCIF3_ERI3,
// 254 SCIF SCIF3 RXI3
(void*) INT_SCIF_SCIF3_RXI3,
// 255 SCIF SCIF3 TXI3
(void*) INT_SCIF_SCIF3_TXI3,
// xx Reserved
(void*) Dummy
};
/* End of File */

View file

@ -0,0 +1,571 @@
/*
FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong? *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest information,
license and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/* Hardware specific includes. */
#include "iodefine.h"
#include "typedefine.h"
#include "hwEthernet.h"
#include "hwEthernetPhy.h"
/* FreeRTOS includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* uIP includes. */
#include "net/uip.h"
/* The time to wait between attempts to obtain a free buffer. */
#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_RATE_MS )
/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving
up on attempting to obtain a free buffer all together. */
#define emacBUFFER_WAIT_ATTEMPTS ( 30 )
/* The number of Rx descriptors. */
#define emacNUM_RX_DESCRIPTORS 3
/* The number of Tx descriptors. When using uIP there is not point in having
more than two. */
#define emacNUM_TX_BUFFERS 2
/* The total number of EMAC buffers to allocate. */
#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS )
/* The time to wait for the Tx descriptor to become free. */
#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_RATE_MS )
/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to
become free. */
#define emacTX_WAIT_ATTEMPTS ( 5 )
/* Only Rx end and Tx end interrupts are used by this driver. */
#define emacTX_END_INTERRUPT ( 1UL << 21UL )
#define emacRX_END_INTERRUPT ( 1UL << 18UL )
/*-----------------------------------------------------------*/
/* The buffers and descriptors themselves. */
#pragma section RX_DESCR
ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ];
#pragma section TX_DESCR
ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ];
#pragma section _ETHERNET_BUFFERS
char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ];
#pragma section
/* Used to indicate which buffers are free and which are in use. If an index
contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise
the buffer is in use or about to be used. */
static unsigned char ucBufferInUse[ emacNUM_BUFFERS ];
/*-----------------------------------------------------------*/
/*
* Initialise both the Rx and Tx descriptors.
*/
static void prvInitialiseDescriptors( void );
/*
* Return a pointer to a free buffer within xEthernetBuffers.
*/
static unsigned char *prvGetNextBuffer( void );
/*
* Return a buffer to the list of free buffers.
*/
static void prvReturnBuffer( unsigned char *pucBuffer );
/*
* Examine the status of the next Rx FIFO to see if it contains new data.
*/
static unsigned long prvCheckRxFifoStatus( void );
/*
* Setup the microcontroller for communication with the PHY.
*/
static void prvSetupPortPinsAndReset( void );
/*
* Configure the Ethernet interface peripherals.
*/
static void prvConfigureEtherCAndEDMAC( void );
/*
* Something has gone wrong with the descriptor usage. Reset all the buffers
* and descriptors.
*/
static void prvResetEverything( void );
/*-----------------------------------------------------------*/
/* Points to the Rx descriptor currently in use. */
static ethfifo *xCurrentRxDesc = NULL;
/* The buffer used by the uIP stack to both receive and send. This points to
one of the Ethernet buffers when its actually in use. */
unsigned char *uip_buf = NULL;
/*-----------------------------------------------------------*/
void vInitEmac( void )
{
/* Setup the SH hardware for MII communications. */
prvSetupPortPinsAndReset();
/* Set the Rx and Tx descriptors into their initial state. */
prvInitialiseDescriptors();
/* Set the MAC address into the ETHERC */
EtherC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) |
( ( unsigned long ) configMAC_ADDR1 << 16UL ) |
( ( unsigned long ) configMAC_ADDR2 << 8UL ) |
( unsigned long ) configMAC_ADDR3;
EtherC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) |
( unsigned long ) configMAC_ADDR5;
/* Perform rest of interface hardware configuration. */
prvConfigureEtherCAndEDMAC();
/* Nothing received yet, so uip_buf points nowhere. */
uip_buf = NULL;
/* Initialize the PHY */
phyReset();
}
/*-----------------------------------------------------------*/
void vEMACWrite( void )
{
long x;
/* Wait until the second transmission of the last packet has completed. */
for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ )
{
if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 )
{
/* Descriptor is still active. */
vTaskDelay( emacTX_WAIT_DELAY_ms );
}
else
{
break;
}
}
/* Is the descriptor free after waiting for it? */
if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 )
{
/* Something has gone wrong. */
prvResetEverything();
}
/* Setup both descriptors to transmit the frame. */
xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf;
xTxDescriptors[ 0 ].bufsize = uip_len;
xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf;
xTxDescriptors[ 1 ].bufsize = uip_len;
/* uip_buf is being sent by the Tx descriptor. Allocate a new buffer
for use by the stack. */
uip_buf = prvGetNextBuffer();
/* Clear previous settings and go. */
xTxDescriptors[0].status &= ~( FP1 | FP0 );
xTxDescriptors[0].status |= ( FP1 | FP0 | ACT );
xTxDescriptors[1].status &= ~( FP1 | FP0 );
xTxDescriptors[1].status |= ( FP1 | FP0 | ACT );
EDMAC.EDTRR.LONG = 0x00000001;
}
/*-----------------------------------------------------------*/
unsigned long ulEMACRead( void )
{
unsigned long ulBytesReceived;
ulBytesReceived = prvCheckRxFifoStatus();
if( ulBytesReceived > 0 )
{
xCurrentRxDesc->status &= ~( FP1 | FP0 );
xCurrentRxDesc->status |= ACT;
if( EDMAC.EDRRR.LONG == 0x00000000L )
{
/* Restart Ethernet if it has stopped */
EDMAC.EDRRR.LONG = 0x00000001L;
}
/* Mark the pxDescriptor buffer as free as uip_buf is going to be set to
the buffer that contains the received data. */
prvReturnBuffer( uip_buf );
uip_buf = ( void * ) xCurrentRxDesc->buf_p;
/* Move onto the next buffer in the ring. */
xCurrentRxDesc = xCurrentRxDesc->next;
}
return ulBytesReceived;
}
/*-----------------------------------------------------------*/
long lEMACWaitForLink( void )
{
long lReturn;
/* Set the link status. */
switch( phyStatus() )
{
/* Half duplex link */
case PHY_LINK_100H:
case PHY_LINK_10H:
EtherC.ECMR.BIT.DM = 0;
lReturn = pdPASS;
break;
/* Full duplex link */
case PHY_LINK_100F:
case PHY_LINK_10F:
EtherC.ECMR.BIT.DM = 1;
lReturn = pdPASS;
break;
default:
lReturn = pdFAIL;
break;
}
if( lReturn == pdPASS )
{
/* Enable receive and transmit. */
EtherC.ECMR.BIT.RE = 1;
EtherC.ECMR.BIT.TE = 1;
/* Enable EDMAC receive */
EDMAC.EDRRR.LONG = 0x1;
}
return lReturn;
}
/*-----------------------------------------------------------*/
static void prvInitialiseDescriptors( void )
{
ethfifo *pxDescriptor;
long x;
for( x = 0; x < emacNUM_BUFFERS; x++ )
{
/* Ensure none of the buffers are shown as in use at the start. */
ucBufferInUse[ x ] = pdFALSE;
}
/* Initialise the Rx descriptors. */
for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ )
{
pxDescriptor = &( xRxDescriptors[ x ] );
pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] );
pxDescriptor->bufsize = UIP_BUFSIZE;
pxDescriptor->size = 0;
pxDescriptor->status = ACT;
pxDescriptor->next = &xRxDescriptors[ x + 1 ];
/* Mark this buffer as in use. */
ucBufferInUse[ x ] = pdTRUE;
}
/* The last descriptor points back to the start. */
pxDescriptor->status |= DL;
pxDescriptor->next = &xRxDescriptors[ 0 ];
/* Initialise the Tx descriptors. */
for( x = 0; x < emacNUM_TX_BUFFERS; x++ )
{
pxDescriptor = &( xTxDescriptors[ x ] );
/* A buffer is not allocated to the Tx descriptor until a send is
actually required. */
pxDescriptor->buf_p = NULL;
pxDescriptor->bufsize = UIP_BUFSIZE;
pxDescriptor->size = 0;
pxDescriptor->status = 0;
pxDescriptor->next = &xTxDescriptors[ x + 1 ];
}
/* The last descriptor points back to the start. */
pxDescriptor->status |= DL;
pxDescriptor->next = &( xTxDescriptors[ 0 ] );
/* Use the first Rx descriptor to start with. */
xCurrentRxDesc = &( xRxDescriptors[ 0 ] );
}
/*-----------------------------------------------------------*/
static unsigned char *prvGetNextBuffer( void )
{
long x;
unsigned char *pucReturn = NULL;
unsigned long ulAttempts = 0;
while( pucReturn == NULL )
{
/* Look through the buffers to find one that is not in use by
anything else. */
for( x = 0; x < emacNUM_BUFFERS; x++ )
{
if( ucBufferInUse[ x ] == pdFALSE )
{
ucBufferInUse[ x ] = pdTRUE;
pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] );
break;
}
}
/* Was a buffer found? */
if( pucReturn == NULL )
{
ulAttempts++;
if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS )
{
break;
}
/* Wait then look again. */
vTaskDelay( emacBUFFER_WAIT_DELAY_ms );
}
}
return pucReturn;
}
/*-----------------------------------------------------------*/
static void prvReturnBuffer( unsigned char *pucBuffer )
{
unsigned long ul;
/* Return a buffer to the pool of free buffers. */
for( ul = 0; ul < emacNUM_BUFFERS; ul++ )
{
if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer )
{
ucBufferInUse[ ul ] = pdFALSE;
break;
}
}
}
/*-----------------------------------------------------------*/
static void prvResetEverything( void )
{
/* Temporary code just to see if this gets called. This function has not
been implemented. */
portDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
static unsigned long prvCheckRxFifoStatus( void )
{
unsigned long ulReturn = 0;
if( ( xCurrentRxDesc->status & ACT ) != 0 )
{
/* Current descriptor is still active. */
}
else if( ( xCurrentRxDesc->status & FE ) != 0 )
{
/* Frame error. Clear the error. */
xCurrentRxDesc->status &= ~( FP1 | FP0 | FE );
xCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF );
xCurrentRxDesc->status |= ACT;
xCurrentRxDesc = xCurrentRxDesc->next;
if( EDMAC.EDRRR.LONG == 0x00000000UL )
{
/* Restart Ethernet if it has stopped. */
EDMAC.EDRRR.LONG = 0x00000001UL;
}
}
else
{
/* The descriptor contains a frame. Because of the size of the buffers
the frame should always be complete. */
if( (xCurrentRxDesc->status & FP0) == FP0 )
{
ulReturn = xCurrentRxDesc->size;
}
else
{
/* Do not expect to get here. */
prvResetEverything();
}
}
return ulReturn;
}
/*-----------------------------------------------------------*/
static void prvSetupPortPinsAndReset( void )
{
/* Initialisation code taken from Renesas example project. */
PFC.PACRL4.BIT.PA12MD = 0x7; /* Set TX_CLK input (EtherC) */
PFC.PACRL3.BIT.PA11MD = 0x7; /* Set TX_EN output (EtherC) */
PFC.PACRL3.BIT.PA10MD = 0x7; /* Set MII_TXD0 output (EtherC) */
PFC.PACRL3.BIT.PA9MD = 0x7; /* Set MII_TXD1 output (EtherC) */
PFC.PACRL3.BIT.PA8MD = 0x7; /* Set MII_TXD2 output (EtherC) */
PFC.PACRL2.BIT.PA7MD = 0x7; /* Set MII_TXD3 output (EtherC) */
PFC.PACRL2.BIT.PA6MD = 0x7; /* Set TX_ER output (EtherC) */
PFC.PDCRH4.BIT.PD31MD = 0x7; /* Set RX_DV input (EtherC) */
PFC.PDCRH4.BIT.PD30MD = 0x7; /* Set RX_ER input (EtherC) */
PFC.PDCRH4.BIT.PD29MD = 0x7; /* Set MII_RXD3 input (EtherC) */
PFC.PDCRH4.BIT.PD28MD = 0x7; /* Set MII_RXD2 input (EtherC) */
PFC.PDCRH3.BIT.PD27MD = 0x7; /* Set MII_RXD1 input (EtherC) */
PFC.PDCRH3.BIT.PD26MD = 0x7; /* Set MII_RXD0 input (EtherC) */
PFC.PDCRH3.BIT.PD25MD = 0x7; /* Set RX_CLK input (EtherC) */
PFC.PDCRH3.BIT.PD24MD = 0x7; /* Set CRS input (EtherC) */
PFC.PDCRH2.BIT.PD23MD = 0x7; /* Set COL input (EtherC) */
PFC.PDCRH2.BIT.PD22MD = 0x7; /* Set WOL output (EtherC) */
PFC.PDCRH2.BIT.PD21MD = 0x7; /* Set EXOUT output (EtherC) */
PFC.PDCRH2.BIT.PD20MD = 0x7; /* Set MDC output (EtherC) */
PFC.PDCRH1.BIT.PD19MD = 0x7; /* Set LINKSTA input (EtherC) */
PFC.PDCRH1.BIT.PD18MD = 0x7; /* Set MDIO input/output (EtherC) */
STB.CR4.BIT._ETHER = 0x0;
EDMAC.EDMR.BIT.SWR = 1;
/* Crude wait for reset to complete. */
vTaskDelay( 500 / portTICK_RATE_MS );
}
/*-----------------------------------------------------------*/
static void prvConfigureEtherCAndEDMAC( void )
{
/* Initialisation code taken from Renesas example project. */
/* TODO: Check bit 5 */
EtherC.ECSR.LONG = 0x00000037; /* Clear all EtherC statuS BFR, PSRTO, LCHNG, MPD, ICD */
/* TODO: Check bit 5 */
EtherC.ECSIPR.LONG = 0x00000020; /* Disable EtherC status change interrupt */
EtherC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */
EtherC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */
/* EDMAC */
EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all EtherC and EDMAC status bits */
EDMAC.RDLAR = ( void * ) xCurrentRxDesc; /* Initialaize Rx Descriptor List Address */
EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */
EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */
EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */
EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */
EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */
/* Set the EDMAC interrupt priority - the interrupt priority must be
configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to
generate the tick interrupt. */
INTC.IPR19.BIT._EDMAC = portKERNEL_INTERRUPT_PRIORITY;
EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; /* Enable Rx and Tx end interrupts. */
/* Clear the interrupt flag. */
CMT0.CMCSR.BIT.CMF = 0;
}
/*-----------------------------------------------------------*/
void vEMAC_ISR_Handler( void )
{
unsigned long ul = EDMAC.EESR.LONG;
long lHigherPriorityTaskWoken = pdFALSE;
extern xSemaphoreHandle xEMACSemaphore;
static long ulTxEndInts = 0;
/* Has a Tx end occurred? */
if( ul & emacTX_END_INTERRUPT )
{
++ulTxEndInts;
if( ulTxEndInts >= 2 )
{
/* Only return the buffer to the pool once both Txes have completed. */
prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p );
ulTxEndInts = 0;
}
EDMAC.EESR.LONG = emacTX_END_INTERRUPT;
}
/* Has an Rx end occurred? */
if( ul & emacRX_END_INTERRUPT )
{
/* Make sure the Ethernet task is not blocked waiting for a packet. */
xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken );
portYIELD_FROM_ISR( lHigherPriorityTaskWoken );
EDMAC.EESR.LONG = emacRX_END_INTERRUPT;
}
}

View file

@ -0,0 +1,79 @@
;/*
; FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
;
;
; ***************************************************************************
; * *
; * FreeRTOS tutorial books are available in pdf and paperback. *
; * Complete, revised, and edited pdf reference manuals are also *
; * available. *
; * *
; * Purchasing FreeRTOS documentation will not only help you, by *
; * ensuring you get running as quickly as possible and with an *
; * in-depth knowledge of how to use FreeRTOS, it will also help *
; * the FreeRTOS project to continue with its mission of providing *
; * professional grade, cross platform, de facto standard solutions *
; * for microcontrollers - completely free of charge! *
; * *
; * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
; * *
; * Thank you for using FreeRTOS, and thank you for your support! *
; * *
; ***************************************************************************
;
;
; This file is part of the FreeRTOS distribution.
;
; FreeRTOS is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License (version 2) as published by the
; Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
; >>>NOTE<<< The modification to the GPL is included to allow you to
; distribute a combined work that includes FreeRTOS without being obliged to
; provide the source code for proprietary components outside of the FreeRTOS
; kernel. FreeRTOS is distributed in the hope that it will be useful, but
; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
; more details. You should have received a copy of the GNU General Public
; License and the FreeRTOS license exception along with FreeRTOS; if not it
; can be viewed here: http://www.freertos.org/a00114.html and also obtained
; by writing to Richard Barry, contact details for whom are available on the
; FreeRTOS WEB site.
;
; 1 tab == 4 spaces!
;
; http://www.FreeRTOS.org - Documentation, latest information, license and
; contact details.
;
; http://www.SafeRTOS.com - A version that is certified for use in safety
; critical systems.
;
; http://www.OpenRTOS.com - Commercial support, development, porting,
; licensing and training services.
;*/
.import _vEMAC_ISR_Handler
.import _pxCurrentTCB
.export _vEMAC_ISR_Wrapper
.INCLUDE "ISR_Support.inc"
.section P
;-----------------------------------------------------------
_vEMAC_ISR_Wrapper:
portSAVE_CONTEXT
mov.l #_vEMAC_ISR_Handler, r0
jsr @r0
nop
portRESTORE_CONTEXT
;-----------------------------------------------------------
.end

View file

@ -0,0 +1,254 @@
/**
* \addtogroup httpd
* @{
*/
/**
* \file
* Web server script interface
* \author
* Adam Dunkels <adam@sics.se>
*
*/
/*
* Copyright (c) 2001-2006, Adam Dunkels.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This file is part of the uIP TCP/IP stack.
*
* $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $
*
*/
#include "net/uip.h"
#include "net/psock.h"
#include "apps/httpd/httpd.h"
#include "apps/httpd/httpd-cgi.h"
#include "apps/httpd/httpd-fs.h"
#include <stdio.h>
#include <string.h>
#include "FreeRTOS.h"
#include "task.h"
HTTPD_CGI_CALL( file, "file-stats", file_stats );
HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats );
HTTPD_CGI_CALL( net, "net-stats", net_stats );
HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats );
HTTPD_CGI_CALL( run, "run-time", run_time );
HTTPD_CGI_CALL( io, "led-io", led_io );
static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL };
/*---------------------------------------------------------------------------*/
static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) )
{
PSOCK_BEGIN( &s->sout );
( void ) ptr;
PSOCK_END( &s->sout );
}
/*---------------------------------------------------------------------------*/
httpd_cgifunction httpd_cgi( char *name )
{
const struct httpd_cgi_call **f;
/* Find the matching name in the table, return the function. */
for( f = calls; *f != NULL; ++f )
{
if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 )
{
return( *f )->function;
}
}
return nullfunction;
}
/*---------------------------------------------------------------------------*/
static unsigned short generate_file_stats( void *arg )
{
char *f = ( char * ) arg;
return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) );
}
/*---------------------------------------------------------------------------*/
static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) )
{
PSOCK_BEGIN( &s->sout );
PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 );
PSOCK_END( &s->sout );
}
/*---------------------------------------------------------------------------*/
static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 };
static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 };
static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 };
static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 };
static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 };
static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 };
static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 };
static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 };
static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 };
static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack };
static unsigned short generate_tcp_stats( void *arg )
{
struct uip_conn *conn;
struct httpd_state *s = ( struct httpd_state * ) arg;
conn = &uip_conns[s->count];
return sprintf( ( char * ) uip_appdata,
"<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n", htons(conn->lport),
htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8,
htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer,
(uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' );
}
/*---------------------------------------------------------------------------*/
static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) )
{
PSOCK_BEGIN( &s->sout );
( void ) ptr;
for( s->count = 0; s->count < UIP_CONNS; ++s->count )
{
if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED )
{
PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s );
}
}
PSOCK_END( &s->sout );
}
/*---------------------------------------------------------------------------*/
static unsigned short generate_net_stats( void *arg )
{
struct httpd_state *s = ( struct httpd_state * ) arg;
return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] );
}
static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) )
{
PSOCK_BEGIN( &s->sout );
( void ) ptr;
#if UIP_STATISTICS
for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count )
{
PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s );
}
#endif /* UIP_STATISTICS */
PSOCK_END( &s->sout );
}
/*---------------------------------------------------------------------------*/
extern void vTaskList( signed char *pcWriteBuffer );
extern char *pcGetTaskStatusMessage( void );
static char cCountBuf[128];
long lRefreshCount = 0;
static unsigned short generate_rtos_stats( void *arg )
{
( void ) arg;
lRefreshCount++;
sprintf( cCountBuf, "<p><br>Refresh count = %d<p><br>%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() );
vTaskList( uip_appdata );
strcat( uip_appdata, cCountBuf );
return strlen( uip_appdata );
}
/*---------------------------------------------------------------------------*/
static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) )
{
PSOCK_BEGIN( &s->sout );
( void ) ptr;
PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL );
PSOCK_END( &s->sout );
}
/*---------------------------------------------------------------------------*/
char *pcStatus;
unsigned long ulString;
static unsigned short generate_io_state( void *arg )
{
extern long lParTestGetLEDState( void );
( void ) arg;
/* Get the state of the LEDs that are on the FIO1 port. */
if( lParTestGetLEDState() )
{
pcStatus = "";
}
else
{
pcStatus = "checked";
}
sprintf( uip_appdata, "<input type=\"checkbox\" name=\"LED0\" value=\"1\" %s>LED<p><p>", pcStatus );
return strlen( uip_appdata );
}
/*---------------------------------------------------------------------------*/
extern void vTaskGetRunTimeStats( signed char *pcWriteBuffer );
static unsigned short generate_runtime_stats( void *arg )
{
( void ) arg;
lRefreshCount++;
sprintf( cCountBuf, "<p><br>Refresh count = %d", ( int ) lRefreshCount );
vTaskGetRunTimeStats( uip_appdata );
strcat( uip_appdata, cCountBuf );
return strlen( uip_appdata );
}
/*---------------------------------------------------------------------------*/
static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) )
{
PSOCK_BEGIN( &s->sout );
( void ) ptr;
PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL );
PSOCK_END( &s->sout );
}
/*---------------------------------------------------------------------------*/
static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) )
{
PSOCK_BEGIN( &s->sout );
( void ) ptr;
PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL );
PSOCK_END( &s->sout );
}
/** @} */

View file

@ -0,0 +1,8 @@
<html>
<body bgcolor="white">
<center>
<h1>404 - file not found</h1>
<h3>Go <a href="/">here</a> instead.</h3>
</center>
</body>
</html>

View file

@ -0,0 +1,13 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org uIP WEB server demo</title>
</head>
<BODY onLoad="window.setTimeout(&quot;location.href='index.shtml'&quot;,100)">
<font face="arial">
Loading index.shtml. Click <a href="index.shtml">here</a> if not automatically redirected.
</font>
</font>
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org uIP WEB server demo</title>
</head>
<BODY onLoad="window.setTimeout(&quot;location.href='index.shtml'&quot;,2000)">
<font face="arial">
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS Homepage</a> <b>|</b> <a href="io.shtml">IO</a> <b>|</b> <a href="logo.jpg">37K jpg</a>
<br><p>
<hr>
<br><p>
<h2>Task statistics</h2>
Page will refresh every 2 seconds.<p>
<font face="courier"><pre>Task State Priority Stack #<br>************************************************<br>
%! rtos-stats
</pre></font>
</font>
</body>
</html>

View file

@ -0,0 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org uIP WEB server demo</title>
</head>
<BODY>
<font face="arial">
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS Homepage</a> <b>|</b> <a href="io.shtml">IO</a> <b>|</b> <a href="logo.jpg">37K jpg</a>
<br><p>
<hr>
<b>LED and LCD IO</b><br>
<p>
Use the check box to turn on or off LED 4, then click "Update IO".
<p>
<form name="aForm" action="/io.shtml" method="get">
%! led-io
<p>
<input type="submit" value="Update IO">
</form>
<br><p>
</font>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org uIP WEB server demo</title>
</head>
<BODY onLoad="window.setTimeout(&quot;location.href='runtime.shtml'&quot;,2000)">
<font face="arial">
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS Homepage</a> <b>|</b> <a href="io.shtml">IO</a> <b>|</b> <a href="logo.jpg">37K jpg</a>
<br><p>
<hr>
<br><p>
<h2>Run-time statistics</h2>
Page will refresh every 2 seconds.<p>
<font face="courier"><pre>Task Abs Time % Time<br>****************************************<br>
%! run-time
</pre></font>
</font>
</body>
</html>

View file

@ -0,0 +1,47 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org uIP WEB server demo</title>
</head>
<BODY>
<font face="arial">
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS Homepage</a> <b>|</b> <a href="io.shtml">IO</a> <b>|</b> <a href="logo.jpg">37K jpg</a>
<br><p>
<hr>
<br><p>
<h2>Network statistics</h2>
<table width="300" border="0">
<tr><td align="left"><font face="courier"><pre>
IP Packets received
Packets sent
Forwaded
Dropped
IP errors IP version/header length
IP length, high byte
IP length, low byte
IP fragments
Header checksum
Wrong protocol
ICMP Packets received
Packets sent
Packets dropped
Type errors
Checksum errors
TCP Packets received
Packets sent
Packets dropped
Checksum errors
Data packets without ACKs
Resets
Retransmissionsa
Syn to closed port
UDP Packets dropped
Packets received
Packets sent
Packets chkerr
No connection avaliable
</pre></font></td><td><font face="courier"><pre>%! net-stats
</pre></font></td></table>
</font>
</body>
</html>

View file

@ -0,0 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org uIP WEB server demo</title>
</head>
<BODY>
<font face="arial">
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS Homepage</a> <b>|</b> <a href="io.shtml">IO</a> <b>|</b> <a href="logo.jpg">37K jpg</a>
<br><p>
<hr>
<br>
<h2>Network connections</h2>
<p>
<table>
<tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th></tr>
%! tcp-connections
</pre></font>
</font>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,78 @@
#!/usr/bin/perl
open(OUTPUT, "> httpd-fsdata.c");
chdir("httpd-fs");
opendir(DIR, ".");
@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
closedir(DIR);
foreach $file (@files) {
if(-d $file && $file !~ /^\./) {
print "Processing directory $file\n";
opendir(DIR, $file);
@newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
closedir(DIR);
printf "Adding files @newfiles\n";
@files = (@files, map { $_ = "$file/$_" } @newfiles);
next;
}
}
foreach $file (@files) {
if(-f $file) {
print "Adding file $file\n";
open(FILE, $file) || die "Could not open file $file\n";
$file =~ s-^-/-;
$fvar = $file;
$fvar =~ s-/-_-g;
$fvar =~ s-\.-_-g;
# for AVR, add PROGMEM here
print(OUTPUT "static const unsigned char data".$fvar."[] = {\n");
print(OUTPUT "\t/* $file */\n\t");
for($j = 0; $j < length($file); $j++) {
printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
}
printf(OUTPUT "0,\n");
$i = 0;
while(read(FILE, $data, 1)) {
if($i == 0) {
print(OUTPUT "\t");
}
printf(OUTPUT "%#02x, ", unpack("C", $data));
$i++;
if($i == 10) {
print(OUTPUT "\n");
$i = 0;
}
}
print(OUTPUT "0};\n\n");
close(FILE);
push(@fvars, $fvar);
push(@pfiles, $file);
}
}
for($i = 0; $i < @fvars; $i++) {
$file = $pfiles[$i];
$fvar = $fvars[$i];
if($i == 0) {
$prevfile = "NULL";
} else {
$prevfile = "file" . $fvars[$i - 1];
}
print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");
print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");
}
print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");
print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n");

View file

@ -0,0 +1,163 @@
/**
* \addtogroup uipopt
* @{
*/
/**
* \name Project-specific configuration options
* @{
*
* uIP has a number of configuration options that can be overridden
* for each project. These are kept in a project-specific uip-conf.h
* file and all configuration names have the prefix UIP_CONF.
*/
/*
* Copyright (c) 2006, Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Institute nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* This file is part of the uIP TCP/IP stack
*
* $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
*/
/**
* \file
* An example uIP configuration file
* \author
* Adam Dunkels <adam@sics.se>
*/
#ifndef __UIP_CONF_H__
#define __UIP_CONF_H__
#define UIP_CONF_EXTERNAL_BUFFER
#define UIP_CONF_PROCESS_HTTPD_FORMS 1
/**
* 8 bit datatype
*
* This typedef defines the 8-bit type used throughout uIP.
*
* \hideinitializer
*/
typedef unsigned char u8_t;
/**
* 16 bit datatype
*
* This typedef defines the 16-bit type used throughout uIP.
*
* \hideinitializer
*/
typedef unsigned short u16_t;
typedef unsigned long u32_t;
/**
* Statistics datatype
*
* This typedef defines the dataype used for keeping statistics in
* uIP.
*
* \hideinitializer
*/
typedef unsigned short uip_stats_t;
/**
* Maximum number of TCP connections.
*
* \hideinitializer
*/
#define UIP_CONF_MAX_CONNECTIONS 40
/**
* Maximum number of listening TCP ports.
*
* \hideinitializer
*/
#define UIP_CONF_MAX_LISTENPORTS 40
/**
* uIP buffer size.
*
* \hideinitializer
*/
#define UIP_CONF_BUFFER_SIZE 1480
/**
* CPU byte order.
*
* \hideinitializer
*/
#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN
/**
* Logging on or off
*
* \hideinitializer
*/
#define UIP_CONF_LOGGING 0
/**
* UDP support on or off
*
* \hideinitializer
*/
#define UIP_CONF_UDP 0
/**
* UDP checksums on or off
*
* \hideinitializer
*/
#define UIP_CONF_UDP_CHECKSUMS 1
/**
* uIP statistics on or off
*
* \hideinitializer
*/
#define UIP_CONF_STATISTICS 1
/* Here we include the header file for the application(s) we use in
our project. */
/*#include "smtp.h"*/
/*#include "hello-world.h"*/
/*#include "telnetd.h"*/
#include "webserver.h"
/*#include "dhcpc.h"*/
/*#include "resolv.h"*/
/*#include "webclient.h"*/
#define CCIF
#define CC_REGISTER_ARG
#endif /* __UIP_CONF_H__ */
/** @} */
/** @} */

View file

@ -0,0 +1,47 @@
/*
* Copyright (c) 2002, Adam Dunkels.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This file is part of the uIP TCP/IP stack
*
* $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $
*
*/
#ifndef __WEBSERVER_H__
#define __WEBSERVER_H__
#include "apps/httpd/httpd.h"
typedef struct httpd_state uip_tcp_appstate_t;
/* UIP_APPCALL: the name of the application function. This function
must return void and take no arguments (i.e., C type "void
appfunc(void)"). */
#define UIP_APPCALL httpd_appcall
#endif /* __WEBSERVER_H__ */