[GENERAL_DATA_PROJECT]\r
"FDT_UserBootAreaFiles" "" \r
[GENERAL_DATA_CONFIGURATION_Blinky]\r
-"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" \r
+"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" \r
[SESSIONS_Blinky]\r
"DefaultSession" \r
"SessionRX200_E1_E20_SYSTEM" \r
[WINDOW_POSITION_STATE_DATA_VD4]\r
[WINDOW_Z_ORDER]\r
"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" \r
-"{WK_TB00000013_SYMBOL} TOOLBAR 0" \r
-"{WK_TB00000011_CPU} TOOLBAR 0" \r
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX200_RX210-RSK_Renesas\RTOSDemo\main-full.c" \r
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX200_RX210-RSK_Renesas\RTOSDemo\main-blinky.c" \r
[TARGET_NAME]\r
"SBK_TAR_EMUE100|Exception" 1 \r
"SBK_TAR_EMUE100|BreakCondition" 1 \r
"SBK_TAR_EMUE100|TaskID" 1 \r
-"SBK_TAR_EMUE100|PC" 1 \r
"SBK_TAR_EMUE100|ExecutionTime" 1 \r
+"SBK_TAR_EMUE100|PC" 1 \r
[STATUSBAR_DEBUGGER_PANESTATE_VD2]\r
[STATUSBAR_DEBUGGER_PANESTATE_VD3]\r
[STATUSBAR_DEBUGGER_PANESTATE_VD4]\r
* standard demo tasks are not only still executing, but are executing without \r
* reporting any errors. If the check timer discovers that a task has either \r
* stalled, or reported an error, then it changes its own period from the \r
- * initial three seconds, to just 200ms. The check timer callback function \r
+ * initial five seconds, to just 200ms. The check timer callback function \r
* also toggles LED 3 each time it is called. This provides a visual \r
* indication of the system status: If the LED toggles every five seconds, \r
* then no issues have been discovered. If the LED toggles every 200ms, then \r
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )\r
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )\r
\r
-/* The LED toggled by the check task. */\r
+/* The LED toggled by the check timer. */\r
#define mainCHECK_LED ( 3 )\r
\r
/* The period at which the check timer will expire, in ms, provided no errors\r
/*-----------------------------------------------------------*/\r
\r
/* Variables that are incremented on each iteration of the reg test tasks -\r
-provided the tasks have not reported any errors. The check task inspects these\r
+provided the tasks have not reported any errors. The check timer inspects these\r
variables to ensure they are still incrementing as expected. If a variable\r
stops incrementing then it is likely that its associate task has stalled. */\r
unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;\r
for( ;; );\r
}\r
/*-----------------------------------------------------------*/\r
-volatile long temp = 0;\r
+\r
static void prvCheckTimerCallback( xTimerHandle xTimer )\r
{\r
static long lChangedTimerPeriodAlready = pdFALSE, lErrorStatus = pdPASS;\r
static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;\r
-volatile long temp2;\r
+\r
/* Check the standard demo tasks are running without error. */\r
if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 1;\r
}\r
else if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 2;\r
}\r
else if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 3;\r
}\r
else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 4;\r
}\r
else if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 5;\r
}\r
else if( xArePollingQueuesStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 6;\r
}\r
else if( xIsCreateTaskStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 7;\r
}\r
else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 8;\r
}\r
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 9;\r
}\r
else if( xAreIntQueueTasksStillRunning() != pdPASS )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 10;\r
}\r
\r
/* Check the reg test tasks are still cycling. They will stop incrementing\r
if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 11;\r
}\r
\r
if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )\r
{\r
lErrorStatus = pdFAIL;\r
- temp = 12;\r
}\r
\r
ulLastRegTest1CycleCount = ulRegTest1CycleCount;\r
/* Was an error detected this time through the callback execution? */\r
if( lErrorStatus != pdPASS )\r
{\r
- temp2 = temp;\r
if( lChangedTimerPeriodAlready == pdFALSE )\r
{\r
lChangedTimerPeriodAlready = pdTRUE;\r
\r
RegTest1Error:\r
; A compare failed, just loop here so the loop counter stops incrementing\r
- ; causing the check task to indicate the error.\r
+ ; causing the check timer to indicate the error.\r
BRA RegTest1Error\r
}\r
/*-----------------------------------------------------------*/\r
\r
RegTest2Error:\r
; A compare failed, just loop here so the loop counter stops incrementing\r
- ; - causing the check task to indicate the error.\r
+ ; - causing the check timer to indicate the error.\r
BRA RegTest2Error\r
}\r
/*-----------------------------------------------------------*/\r
[GENERAL_DATA]\r
[BREAKPOINTS]\r
[OPEN_WORKSPACE_FILES]\r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" \r
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" \r
[WORKSPACE_FILE_STATES]\r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" 66 66 1104 430 0 3 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" 0 0 1144 335 0 0 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" -4 -23 1310 655 1 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" 22 22 1104 430 0 1 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" 66 66 1126 360 0 1 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" -4 -23 1310 581 1 0 \r
[LOADED_PROJECTS]\r
"RTOSDemo" \r
[END]\r
*----------------------------------------------------------*/\r
\r
#define configUSE_PREEMPTION 1\r
-#define configUSE_IDLE_HOOK 0\r
+#define configUSE_IDLE_HOOK 1\r
#define configUSE_TICK_HOOK 0\r
#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx630def.h. */\r
#define configPERIPHERAL_CLOCK_HZ ( PCLKB_FREQUENCY ) /* Set in rskrx630def.h. */\r
[CONFIGURATIONS]\r
"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Blinky" \r
"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Debug" \r
-"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" \r
"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Debug_with_optimisation" \r
-"SimDebug_RX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\SimDebug_RX600" \r
[BUILD_PHASES]\r
"Renesas OptLinker" 1 \r
"Renesas RX Assembler" 1 \r
[ON_DEMAND_COMPONENTS_LOADED]\r
[SYNC_SESSION_NAMES]\r
[SESSIONS]\r
-"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\DefaultSession.hsf" 0 \r
"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 \r
-"SimSessionRX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\SimSessionRX600.hsf" 0 \r
-[GENERAL_DATA_SESSION_DefaultSession]\r
[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM]\r
-[GENERAL_DATA_SESSION_SimSessionRX600]\r
[OPTIONS_Blinky_Renesas OptLinker]\r
"Single Shot" "06a7a4a28738cc10" 5 \r
[OPTIONS_Blinky_Renesas RX Assembler]\r
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" \r
[LINKAGE_ORDER_Debug]\r
[GENERAL_DATA_CONFIGURATION_Debug]\r
-[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas OptLinker]\r
-"Single Shot" "058b41409738cc10" 5 \r
-[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Assembler]\r
-"Assembly source file" "0d805402da28cc10" 4 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0d805402da28cc10" 4 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0d805402da28cc10" 4 \r
-"Linkage symbol file" "0d805402da28cc10" 4 \r
-[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Compiler]\r
-"C source file" "02d403988738cc10" 2 \r
-"C++ source file" "02d403988738cc10" 3 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\ParTest.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\cgc.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "02d403988738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "02d403988738cc10" 2 \r
-[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Library Generator]\r
-"Single Shot" "05beda5b8738cc10" 1 \r
-[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Configurator]\r
-"Single Shot" "0bf59a677438cc10" 6 \r
-[OPTIONS_Debug_RX600_E1_E20_SYSTEM]\r
-"" 0 \r
-"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 \r
-"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 \r
-"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\Renesas-Files^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [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|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16]\r
-" 3 \r
-"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\Renesas-Files^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [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|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16]\r
-" 2 \r
-"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NEW|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16]\r
-" 1 \r
-"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(00)|PResetPRG(0FFE00000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*,L(0FFE01000)|FIXEDVECT(0FFFFFFD0)]\r
-" 5 \r
-[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM]\r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" \r
-[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM]\r
-[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM]\r
[OPTIONS_Debug_with_optimisation_Renesas OptLinker]\r
-"Single Shot" "02af16b39738cc10" 5 \r
+"Single Shot" "026be049ed48cc10" 5 \r
[OPTIONS_Debug_with_optimisation_Renesas RX Assembler]\r
"Assembly source file" "0c257402da28cc10" 4 \r
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0c257402da28cc10" 4 \r
" 2 \r
"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1]\r
" 1 \r
-"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|SPACE|^"FF^"] [S|OPTIMIZEITEMS|SPEED] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(00)|PResetPRG(0FFE00000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*,L(0FFE01000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1]\r
+"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|SPACE|^"FF^"] [S|OPTIMIZEITEMS|SPEED] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(00)|PResetPRG(0FFE00000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*,L(0FFE01000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1]\r
" 5 \r
[EXCLUDED_FILES_Debug_with_optimisation]\r
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" \r
[LINKAGE_ORDER_Debug_with_optimisation]\r
[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation]\r
-[OPTIONS_SimDebug_RX600_Renesas OptLinker]\r
-"Single Shot" "027615ed9738cc10" 5 \r
-[OPTIONS_SimDebug_RX600_Renesas RX Assembler]\r
-"Assembly source file" "07f86402da28cc10" 4 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "07f86402da28cc10" 4 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "07f86402da28cc10" 4 \r
-"Linkage symbol file" "07f86402da28cc10" 4 \r
-[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Compiler]\r
-"C source file" "074935dc9738cc10" 2 \r
-"C++ source file" "074935dc9738cc10" 3 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\ParTest.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\cgc.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "074935dc9738cc10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "074935dc9738cc10" 2 \r
-[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Library Generator]\r
-"Single Shot" "0cd2772f9738cc10" 1 \r
-[OPTIONS_SimDebug_RX600_Renesas RX Configurator]\r
-"Single Shot" "0bf59a677438cc10" 6 \r
-[OPTIONS_SimDebug_RX600]\r
-"" 0 \r
-"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 \r
-"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 \r
-"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\Renesas-Files^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [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|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16]\r
-" 3 \r
-"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\Renesas-Files^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [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|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16]\r
-" 2 \r
-"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NEW|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16]\r
-" 1 \r
-"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(00)|PResetPRG(0FFE00000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*,L(0FFE01000)|FIXEDVECT(0FFFFFFD0)]\r
-" 5 \r
-[EXCLUDED_FILES_SimDebug_RX600]\r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" \r
-[LINKAGE_ORDER_SimDebug_RX600]\r
-[GENERAL_DATA_CONFIGURATION_SimDebug_RX600]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession]\r
-"MEMORY_MAPPING_OPTIONS" "" \r
[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM]\r
[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM]\r
"MEMORY_MAPPING_OPTIONS" "Unknown Options" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600]\r
-"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession]\r
-"MEMORY_MAPPING_OPTIONS" "" \r
[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM]\r
[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM]\r
"MEMORY_MAPPING_OPTIONS" "Unknown Options" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600]\r
-"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession]\r
-"MEMORY_MAPPING_OPTIONS" "" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM]\r
-"MEMORY_MAPPING_OPTIONS" "Unknown Options" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600]\r
-"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession]\r
-"MEMORY_MAPPING_OPTIONS" "" \r
[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM]\r
[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM]\r
"MEMORY_MAPPING_OPTIONS" "Unknown Options" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600]\r
-[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600]\r
-"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession]\r
-[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession]\r
-"MEMORY_MAPPING_OPTIONS" "" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM]\r
-[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM]\r
-"MEMORY_MAPPING_OPTIONS" "Unknown Options" \r
-[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600]\r
-[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600]\r
-"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" \r
[EXT_DEBUGGER_INFO]\r
0 "" "" "" "" \r
[END]\r
[DATABASE_VERSION]\r
"1.1" \r
[SESSIONS_]\r
-"DefaultSession" \r
"SessionRX600_E1_E20_SYSTEM" \r
-"SimSessionRX600" \r
[CONFIGURATIONS]\r
"Blinky" \r
"Debug" \r
-"Debug_RX600_E1_E20_SYSTEM" \r
"Debug_with_optimisation" \r
-"SimDebug_RX600" \r
[CURRENT_CONFIGURATION]\r
"Debug" \r
[CURRENT_SESSION]\r
[GENERAL_DATA_PROJECT]\r
"FDT_UserBootAreaFiles" "" \r
[GENERAL_DATA_CONFIGURATION_Blinky]\r
-"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" \r
+"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" \r
[SESSIONS_Blinky]\r
-"DefaultSession" \r
"SessionRX600_E1_E20_SYSTEM" \r
-"SimSessionRX600" \r
[GENERAL_DATA_CONFIGURATION_Debug]\r
"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" \r
[SESSIONS_Debug]\r
-"DefaultSession" \r
-"SessionRX600_E1_E20_SYSTEM" \r
-"SimSessionRX600" \r
-[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM]\r
-"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" \r
-[SESSIONS_Debug_RX600_E1_E20_SYSTEM]\r
-"DefaultSession" \r
"SessionRX600_E1_E20_SYSTEM" \r
-"SimSessionRX600" \r
[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation]\r
"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" \r
[SESSIONS_Debug_with_optimisation]\r
-"DefaultSession" \r
-"SessionRX600_E1_E20_SYSTEM" \r
-"SimSessionRX600" \r
-[GENERAL_DATA_CONFIGURATION_SimDebug_RX600]\r
-"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" \r
-[SESSIONS_SimDebug_RX600]\r
-"DefaultSession" \r
"SessionRX600_E1_E20_SYSTEM" \r
-"SimSessionRX600" \r
-[GENERAL_DATA_SESSION_SimSessionRX600]\r
-[GENERAL_DATA_SESSION_DefaultSession]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600]\r
[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession]\r
[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession]\r
-[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600]\r
[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM]\r
[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM]\r
[END]\r
"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000007500" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000092C" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "00000000A5A5A5A5" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000A5A5A5A5" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000C4658E35" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "000000000000BAA4" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "00000000A5A5A5A5" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000007500" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000C378" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030000" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFE02C63" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "00000000CA0A613B" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFE01388" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000092C" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000C044" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030003" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFE044D3" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "000000000000B940" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFE013C8" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000040000100" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "00008A613AE30000" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "00000000A5A5A5A5" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "000000000000FEEE" \r
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "000000000000FEED" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000001" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000001" \r
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "000000000000B940" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "00000000A5A5A5A5" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "00000000A5A5A5A5" \r
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" \r
[WINDOW_POSITION_STATE_DATA_VD1]\r
"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
"QzROM" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
-"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 205 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" \r
+"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 297 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" \r
"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 374 0 0 350 200 17 0 "57634|57637|57633|<<separator>>|32781|32782|<<separator>>|32780|32785|32787" "0.0" \r
"{WK_00000001_DEBUGCONSOLE}" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<<separator>>|32781|32782|<<separator>>|32780|32785|32787" "0.0" \r
"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -23 1310 655 9 0 "" "0.0" \r
"{WK_00000001_IO}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 2 "0.35" 187 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" \r
"{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.54" 277 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" \r
-"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 205 560 340 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" \r
+"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 297 560 340 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" \r
"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "0.87" 413 0 0 350 200 2065 0 "" "0.0" \r
"{WK_00000001_STACKTRACE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.50" 277 0 0 350 200 2065 0 "" "0.0" \r
"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 374 0 0 853 610 17 0 "32781|32783|<<separator>>|32771|32829|32772|32827|32773|<<separator>>|32786|<<separator>>|32810|32811" "0.0" \r
"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" \r
-"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 914 231 0 0 18 0 "" "0.0" \r
+"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 1 "0.00" 0 914 231 0 0 18 0 "" "0.0" \r
"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 0 "0.00" 0 298 189 0 0 18 0 "" "0.0" \r
"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
"{WK_TB00000011_CPU}" "TOOLBAR 0" 0 0 0 "0.00" 0 427 225 0 0 5 0 "" "0.0" \r
[WINDOW_POSITION_STATE_DATA_VD4]\r
[WINDOW_Z_ORDER]\r
"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" \r
-"{WK_TB00000013_SYMBOL} TOOLBAR 0" \r
-"{WK_TB00000011_CPU} TOOLBAR 0" \r
"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" \r
[TARGET_NAME]\r
"RX E1/E20 SYSTEM" "" 0 \r
[STATUSBAR_STATEINFO_VD1]\r
static xQueueHandle xQueue = NULL;\r
\r
/* This variable is not used by this simple Blinky example. It is defined \r
-purely to allow the project to link as it is used by the full project. */\r
+purely to allow the project to link as it is used by the full build \r
+configuration. */\r
volatile unsigned long ulHighFrequencyTickCount = 0UL;\r
/*-----------------------------------------------------------*/\r
\r
vTaskStartScheduler();\r
}\r
\r
- /* If all is well we will never reach here as the scheduler will now be\r
- running. If we do reach here then it is likely that there was insufficient\r
- heap available for the idle task to be created. */\r
+ /* If all is well the next line of code will not be reached as the scheduler \r
+ will be running. If the next line is reached then it is likely that there was \r
+ insufficient heap available for the idle task to be created. */\r
for( ;; );\r
}\r
/*-----------------------------------------------------------*/\r
\r
/* Send to the queue - causing the queue receive task to flash its LED. 0\r
is used so the send does not block - it shouldn't need to as the queue\r
- should always be empty here. */\r
- xQueueSend( xQueue, &ulValueToSend, 0 );\r
+ should always be empty here (it should always be empty because the task\r
+ removing items from the queue has a higher priority than the task adding\r
+ things to the queue). */\r
+ xQueueSend( xQueue, &ulValueToSend, 0UL );\r
}\r
}\r
/*-----------------------------------------------------------*/\r
}\r
/*-----------------------------------------------------------*/\r
\r
+/* A callback function named vApplicationSetupTimerInterrupt() must be defined\r
+to configure a tick interrupt source, and configTICK_VECTOR set in \r
+FreeRTOSConfig.h to install the tick interrupt handler in the correct position\r
+in the vector table. This example uses a compare match timer. It can be\r
+into any FreeRTOS project, provided the same compare match timer is available. */\r
void vApplicationSetupTimerInterrupt( void )\r
{\r
/* Enable compare match timer 0. */\r
}\r
/*-----------------------------------------------------------*/\r
\r
-/* This function is explained by the comments above its prototype at the top\r
-of this file. */\r
+/* If configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h, then this\r
+function will be called if pvPortMalloc() returns NULL because it has exhausted\r
+the available FreeRTOS heap space. See http://www.freertos.org/a00111.html. */\r
void vApplicationMallocFailedHook( void )\r
{\r
for( ;; );\r
}\r
/*-----------------------------------------------------------*/\r
\r
-/* This function is explained by the comments above its prototype at the top\r
-of this file. */\r
+/* If configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2 in \r
+FreeRTOSConfig.h, then this function will be called if a task overflows its \r
+stack space. See \r
+http://www.freertos.org/Stacks-and-stack-overflow-checking.html. */\r
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )\r
{\r
for( ;; );\r
}\r
/*-----------------------------------------------------------*/\r
\r
-/* This function is explained by the comments above its prototype at the top\r
-of this file. */\r
+/* If configUSE_IDLE_HOOK is set to 1 in FreeRTOSConfig.h, then this function\r
+will be called on each iteration of the idle task. See \r
+http://www.freertos.org/a00016.html */\r
void vApplicationIdleHook( void )\r
{\r
/* Just to prevent the variable getting optimised away. */\r
/* ****************************************************************************\r
* This project includes a lot of tasks and tests and is therefore complex.\r
* If you would prefer a much simpler project to get started with then select\r
- * the 'Blinky' build configuration within the HEW IDE.\r
+ * the 'Blinky' build configuration within the HEW IDE. The Blinky build\r
+ * configuration uses main-blinky.c instead of main-full.c.\r
* ****************************************************************************\r
*\r
* Creates all the demo application tasks, then starts the scheduler. The web\r
* In addition to the standard demo tasks, the following tasks and tests are\r
* defined and/or created within this file:\r
*\r
- * "Reg test" tasks - These fill the registers with known values, then check\r
- * that each register still contains its expected value. Each task uses\r
- * different values. The tasks run with very low priority so get preempted\r
- * very frequently. A check variable is incremented on each iteration of the\r
- * test loop. A register containing an unexpected value is indicative of an\r
- * error in the context switching mechanism and will result in a branch to a\r
- * null loop - which in turn will prevent the check variable from incrementing\r
- * any further and allow the check task (described below) to determine that an\r
- * error has occurred. The nature of the reg test tasks necessitates that they\r
- * are written in assembly code.\r
+ * "Reg test" tasks - These fill the registers with known values, then \r
+ * repeatedly check that each register still contains its expected value for \r
+ * the lifetime of the tasks. Each task uses different values. The tasks run \r
+ * with very low priority so get preempted very frequently. A check variable \r
+ * is incremented on each iteration of the test loop. A register containing an \r
+ * unexpected value is indicative of an error in the context switching \r
+ * mechanism and will result in a branch to a null loop - which in turn will \r
+ * prevent the check variable from incrementing any further and allow the check \r
+ * timer (described below) to determine that an error has occurred. The nature \r
+ * of the reg test tasks necessitates that they are written in assembly code.\r
*\r
- * "Check" task - This only executes every five seconds but has a high priority\r
- * to ensure it gets processor time. Its main function is to check that all the\r
- * standard demo tasks are still operational. While no errors have been\r
- * discovered the check task will toggle LED 5 every 5 seconds - the toggle\r
- * rate increasing to 200ms being a visual indication that at least one task has\r
- * reported unexpected behaviour.\r
+ * "Check Timer" and Callback Function - The check timer period is initially \r
+ * set to five seconds. The check timer callback function checks that all the \r
+ * standard demo tasks are not only still executing, but are executing without \r
+ * reporting any errors. If the check timer discovers that a task has either \r
+ * stalled, or reported an error, then it changes its own period from the \r
+ * initial five seconds, to just 200ms. The check timer callback function \r
+ * also toggles LED 3 each time it is called. This provides a visual \r
+ * indication of the system status: If the LED toggles every five seconds, \r
+ * then no issues have been discovered. If the LED toggles every 200ms, then \r
+ * an issue has been discovered with at least one task.\r
*\r
* "High frequency timer test" - A high frequency periodic interrupt is\r
* generated using a timer - the interrupt is assigned a priority above\r
- * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything\r
+ * configMAX_SYSCALL_INTERRUPT_PRIORITY, so will not be effected by anything\r
* the kernel is doing. The frequency and priority of the interrupt, in\r
- * combination with other standard tests executed in this demo, should result\r
+ * combination with other standard tests executed in this demo, will result\r
* in interrupts nesting at least 3 and probably 4 deep. This test is only\r
- * included in build configurations that have the optimiser switched on. In\r
- * optimised builds the count of high frequency ticks is used as the time base\r
- * for the run time stats.\r
+ * included in build configurations that have the optimiser switched on.\r
*\r
* *NOTE 1* If LED3 is toggling every 5 seconds then all the demo application\r
* tasks are executing as expected and no errors have been reported in any\r
/* Kernel includes. */\r
#include "FreeRTOS.h"\r
#include "task.h"\r
+#include "timers.h"\r
+#include "semphr.h"\r
\r
/* Standard demo includes. */\r
#include "partest.h"\r
#define mainREG_TEST_2_PARAMETER ( 0x12345678UL )\r
\r
/* Priorities at which the tasks are created. */\r
-#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )\r
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 )\r
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )\r
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )\r
#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )\r
-#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )\r
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )\r
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )\r
\r
-/* The WEB server uses string handling functions, which in turn use a bit more\r
-stack than most of the other tasks. */\r
-#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 )\r
-\r
-/* The LED toggled by the check task. */\r
+/* The LED toggled by the check timer. */\r
#define mainCHECK_LED ( 3 )\r
\r
-/* The rate at which mainCHECK_LED will toggle when all the tasks are running\r
-without error. Controlled by the check task as described at the top of this\r
-file. */\r
-#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_RATE_MS )\r
+/* The period at which the check timer will expire, in ms, provided no errors\r
+have been reported by any of the standard demo tasks. ms are converted to the\r
+equivalent in ticks using the portTICK_RATE_MS constant. */\r
+#define mainCHECK_TIMER_PERIOD_MS ( 5000UL / portTICK_RATE_MS )\r
+\r
+/* The period at which the check timer will expire, in ms, if an error has been\r
+reported in one of the standard demo tasks. ms are converted to the equivalent\r
+in ticks using the portTICK_RATE_MS constant. */\r
+#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_RATE_MS )\r
\r
-/* The rate at which mainCHECK_LED will toggle when an error has been reported\r
-by at least one task. Controlled by the check task as described at the top of\r
-this file. */\r
-#define mainERROR_CYCLE_TIME ( 200 / portTICK_RATE_MS )\r
+/* A block time of zero simple means "Don't Block". */\r
+#define mainDONT_BLOCK ( 0UL )\r
\r
/*\r
* vApplicationMallocFailedHook() will only be called if\r
static void prvRegTest2Implementation( void );\r
\r
/*\r
- * The check task as described at the top of this file.\r
+ * The check timer callback function, as described at the top of this file.\r
*/\r
-static void prvCheckTask( void *pvParameters );\r
+static void prvCheckTimerCallback( xTimerHandle xTimer );\r
\r
-/*\r
- * Contains the implementation of the WEB server.\r
- */\r
-extern void vuIP_Task( void *pvParameters );\r
\r
/*-----------------------------------------------------------*/\r
\r
/* Variables that are incremented on each iteration of the reg test tasks -\r
-provided the tasks have not reported any errors. The check task inspects these\r
+provided the tasks have not reported any errors. The check timer inspects these\r
variables to ensure they are still incrementing as expected. If a variable\r
stops incrementing then it is likely that its associate task has stalled. */\r
unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;\r
\r
-/* The status message that is displayed at the bottom of the "task stats" web\r
-page, which is served by the uIP task. This will report any errors picked up\r
-by the reg test task. */\r
-const char *pcStatusMessage = "All tasks executing without error.";\r
+/* The check timer. This uses prvCheckTimerCallback() as its callback\r
+function. */\r
+static xTimerHandle xCheckTimer = NULL;\r
\r
/*-----------------------------------------------------------*/\r
\r
xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL );\r
xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );\r
\r
- /* Start the check task as described at the top of this file. */\r
- xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL );\r
-\r
/* Create the standard demo tasks. */\r
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );\r
vCreateBlockTimeTasks();\r
or not the correct/expected number of tasks are running at any given time. */\r
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );\r
\r
+ /* Create the software timer that performs the 'check' functionality,\r
+ as described at the top of this file. */\r
+ xCheckTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */\r
+ ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */\r
+ pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */\r
+ ( void * ) 0, /* The ID is not used, so can be set to anything. */\r
+ prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */\r
+ );\r
+ \r
+ /* Sanity check that the check timer was indeed created. */\r
+ configASSERT( xCheckTimer );\r
+ \r
+ /* Start the check timer. It will actually start when the scheduler is\r
+ started. */\r
+ xTimerStart( xCheckTimer, mainDONT_BLOCK );\r
+\r
/* Start the tasks running. */\r
vTaskStartScheduler();\r
\r
- /* If all is well we will never reach here as the scheduler will now be\r
- running. If we do reach here then it is likely that there was insufficient\r
- heap available for the idle task to be created. */\r
+ /* If all is well, the following line will never be reached as the scheduler \r
+ will be running. If the following line is reached, there was insufficient\r
+ FreeRTOS heap available for the idle task to be created. See\r
+ http://www.freertos.org/a00111.html and the malloc failed hook function for\r
+ more information. */\r
for( ;; );\r
}\r
/*-----------------------------------------------------------*/\r
\r
-static void prvCheckTask( void *pvParameters )\r
+static void prvCheckTimerCallback( xTimerHandle xTimer )\r
{\r
+static long lChangedTimerPeriodAlready = pdFALSE, lErrorStatus = pdPASS;\r
static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;\r
-portTickType xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME;\r
-extern void vSetupHighFrequencyTimer( void );\r
-\r
- /* If this is being executed then the kernel has been started. Start the high\r
- frequency timer test as described at the top of this file. This is only\r
- included in the optimised build configuration - otherwise it takes up too much\r
- CPU time and can disrupt other tests. */\r
- #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST\r
- vSetupHighFrequencyTimer();\r
- #endif\r
\r
- /* Initialise xNextWakeTime - this only needs to be done once. */\r
- xNextWakeTime = xTaskGetTickCount();\r
+ /* Check the standard demo tasks are running without error. */\r
+ if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xArePollingQueuesStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xIsCreateTaskStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreIntQueueTasksStillRunning() != pdPASS )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
+ else if( xAreMathsTaskStillRunning() != pdPASS )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
\r
- for( ;; )\r
+ /* Check the reg test tasks are still cycling. They will stop incrementing\r
+ their loop counters if they encounter an error. */\r
+ if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )\r
{\r
- /* Place this task in the blocked state until it is time to run again. */\r
- vTaskDelayUntil( &xNextWakeTime, xCycleFrequency );\r
+ lErrorStatus = pdFAIL;\r
+ }\r
\r
- /* Check the standard demo tasks are running without error. */\r
- if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
- {\r
- /* Increase the rate at which this task cycles, which will increase the\r
- rate at which mainCHECK_LED flashes to give visual feedback that an error\r
- has occurred. */\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: GenQueue";\r
- }\r
- else if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: QueuePeek";\r
- }\r
- else if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: BlockQueue";\r
- }\r
- else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: BlockTime";\r
- }\r
- else if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: SemTest";\r
- }\r
- else if( xArePollingQueuesStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: PollQueue";\r
- }\r
- else if( xIsCreateTaskStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: Death";\r
- }\r
- else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: IntMath";\r
- }\r
- else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: RecMutex";\r
- }\r
- else if( xAreIntQueueTasksStillRunning() != pdPASS )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: IntQueue";\r
- }\r
- else if( xAreMathsTaskStillRunning() != pdPASS )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: Flop";\r
- }\r
+ if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )\r
+ {\r
+ lErrorStatus = pdFAIL;\r
+ }\r
\r
- /* Check the reg test tasks are still cycling. They will stop incrementing\r
- their loop counters if they encounter an error. */\r
- if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )\r
- {\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: RegTest1";\r
- }\r
+ ulLastRegTest1CycleCount = ulRegTest1CycleCount;\r
+ ulLastRegTest2CycleCount = ulRegTest2CycleCount;\r
\r
- if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )\r
+ /* Toggle the check LED to give an indication of the system status. If\r
+ the LED toggles every 5 seconds then everything is ok. A faster toggle\r
+ indicates an error. */\r
+ vParTestToggleLED( mainCHECK_LED );\r
+ \r
+ /* Was an error detected this time through the callback execution? */\r
+ if( lErrorStatus != pdPASS )\r
+ {\r
+ if( lChangedTimerPeriodAlready == pdFALSE )\r
{\r
- xCycleFrequency = mainERROR_CYCLE_TIME;\r
- pcStatusMessage = "Error: RegTest2";\r
+ lChangedTimerPeriodAlready = pdTRUE;\r
+ \r
+ /* This call to xTimerChangePeriod() uses a zero block time. \r
+ Functions called from inside of a timer callback function must \r
+ *never* attempt to block. */\r
+ xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK );\r
}\r
-\r
- ulLastRegTest1CycleCount = ulRegTest1CycleCount;\r
- ulLastRegTest2CycleCount = ulRegTest2CycleCount;\r
-\r
- /* Toggle the check LED to give an indication of the system status. If\r
- the LED toggles every 5 seconds then everything is ok. A faster toggle\r
- indicates an error. */\r
- vParTestToggleLED( mainCHECK_LED );\r
}\r
}\r
/*-----------------------------------------------------------*/\r
of this file. */\r
void vApplicationIdleHook( void )\r
{\r
+ /* If this is being executed then the kernel has been started. Start the high\r
+ frequency timer test as described at the top of this file. This is only\r
+ included in the optimised build configuration - otherwise it takes up too much\r
+ CPU time and can disrupt other tests. */\r
+ #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST\r
+ static portBASE_TYPE xTimerTestStarted = pdFALSE;\r
+ extern void vSetupHighFrequencyTimer( void );\r
+ if( xTimerTestStarted == pdFALSE )\r
+ {\r
+ vSetupHighFrequencyTimer();\r
+ xTimerTestStarted = pdTRUE;\r
+ }\r
+ #endif\r
}\r
/*-----------------------------------------------------------*/\r
\r
\r
RegTest1Error:\r
; A compare failed, just loop here so the loop counter stops incrementing\r
- ; causing the check task to indicate the error.\r
+ ; causing the check timer to indicate the error.\r
BRA RegTest1Error\r
}\r
/*-----------------------------------------------------------*/\r
\r
RegTest2Error:\r
; A compare failed, just loop here so the loop counter stops incrementing\r
- ; - causing the check task to indicate the error.\r
+ ; - causing the check timer to indicate the error.\r
BRA RegTest2Error\r
}\r
/*-----------------------------------------------------------*/\r
\r
-char *pcGetTaskStatusMessage( void )\r
-{\r
- /* Not bothered about a critical section here although technically because of\r
- the task priorities the pointer could change it will be atomic if not near\r
- atomic and its not critical. */\r
- return ( char * ) pcStatusMessage;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.\r
- \r
-\r
- ***************************************************************************\r
- * *\r
- * FreeRTOS tutorial books are available in pdf and paperback. *\r
- * Complete, revised, and edited pdf reference manuals are also *\r
- * available. *\r
- * *\r
- * Purchasing FreeRTOS documentation will not only help you, by *\r
- * ensuring you get running as quickly as possible and with an *\r
- * in-depth knowledge of how to use FreeRTOS, it will also help *\r
- * the FreeRTOS project to continue with its mission of providing *\r
- * professional grade, cross platform, de facto standard solutions *\r
- * for microcontrollers - completely free of charge! *\r
- * *\r
- * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *\r
- * *\r
- * Thank you for using FreeRTOS, and thank you for your support! *\r
- * *\r
- ***************************************************************************\r
-\r
-\r
- This file is part of the FreeRTOS distribution.\r
-\r
- FreeRTOS is free software; you can redistribute it and/or modify it under\r
- the terms of the GNU General Public License (version 2) as published by the\r
- Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
- >>>NOTE<<< The modification to the GPL is included to allow you to\r
- distribute a combined work that includes FreeRTOS without being obliged to\r
- provide the source code for proprietary components outside of the FreeRTOS\r
- kernel. FreeRTOS is distributed in the hope that it will be useful, but\r
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
- more details. You should have received a copy of the GNU General Public\r
- License and the FreeRTOS license exception along with FreeRTOS; if not it\r
- can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
- by writing to Richard Barry, contact details for whom are available on the\r
- FreeRTOS WEB site.\r
-\r
- 1 tab == 4 spaces!\r
-\r
- http://www.FreeRTOS.org - Documentation, latest information, license and\r
- contact details.\r
-\r
- http://www.SafeRTOS.com - A version that is certified for use in safety\r
- critical systems.\r
-\r
- http://www.OpenRTOS.com - Commercial support, development, porting,\r
- licensing and training services.\r
-*/\r
-\r
-/* Standard includes. */\r
-#include <string.h>\r
-\r
-/* Scheduler includes. */\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-#include "timers.h"\r
-#include "queue.h"\r
-\r
-/* uip includes. */\r
-#include "net/uip.h"\r
-#include "net/uip_arp.h"\r
-#include "apps/httpd/httpd.h"\r
-#include "sys/timer.h"\r
-#include "net/clock-arch.h"\r
-#include "r_ether.h"\r
-\r
-/* Demo includes. */\r
-#include "ParTest.h"\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-/* How long to wait before attempting to connect the MAC again. */\r
-#define uipINIT_WAIT ( 100 / portTICK_RATE_MS )\r
-\r
-/* Shortcut to the header within the Rx buffer. */\r
-#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ])\r
-\r
-/* Standard constant. */\r
-#define uipTOTAL_FRAME_HEADER_SIZE 54\r
-\r
-/* The ARP timer and the periodic timer share a callback function, so the\r
-respective timer IDs are used to determine which timer actually expired. These\r
-constants are assigned to the timer IDs. */\r
-#define uipARP_TIMER 0\r
-#define uipPERIODIC_TIMER 1\r
-\r
-/* A block time of zero ticks simply means, "don't block". */\r
-#define uipDONT_BLOCK 0UL\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-/*\r
- * Setup the MAC address in the MAC itself, and in the uIP stack.\r
- */\r
-static void prvSetMACAddress( void );\r
-\r
-/*\r
- * Perform any uIP initialisation necessary. \r
- */\r
-static void prvInitialise_uIP( void );\r
-\r
-/*\r
- * The callback function that is assigned to both the periodic timer and the\r
- * ARP timer.\r
- */\r
-static void prvUIPTimerCallback( xTimerHandle xTimer );\r
-\r
-/*\r
- * Port functions required by the uIP stack.\r
- */\r
-clock_time_t clock_time( void );\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-/* The queue used to send TCP/IP events to the uIP stack. */\r
-xQueueHandle xEMACEventQueue = NULL;\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-clock_time_t clock_time( void )\r
-{\r
- return xTaskGetTickCount();\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vuIP_Task( void *pvParameters )\r
-{\r
-portBASE_TYPE i;\r
-unsigned long ulNewEvent = 0UL;\r
-unsigned long ulUIP_Events = 0UL;\r
-\r
- ( void ) pvParameters;\r
- \r
- /* Initialise the uIP stack. */\r
- prvInitialise_uIP();\r
-\r
- /* Initialise the MAC. */\r
- vInitEmac();\r
-\r
- while( lEMACWaitForLink() != pdPASS )\r
- {\r
- vTaskDelay( uipINIT_WAIT );\r
- }\r
-\r
- for( ;; )\r
- {\r
- if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL )\r
- { \r
- /* Is there received data ready to be processed? */\r
- uip_len = ( unsigned short ) ulEMACRead();\r
- \r
- if( ( uip_len > 0 ) && ( uip_buf != NULL ) )\r
- {\r
- /* Standard uIP loop taken from the uIP manual. */\r
- if( xHeader->type == htons( UIP_ETHTYPE_IP ) )\r
- {\r
- uip_arp_ipin();\r
- uip_input();\r
-\r
- /* If the above function invocation resulted in data that\r
- should be sent out on the network, the global variable\r
- uip_len is set to a value > 0. */\r
- if( uip_len > 0 )\r
- {\r
- uip_arp_out();\r
- vEMACWrite();\r
- }\r
- }\r
- else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) )\r
- {\r
- uip_arp_arpin();\r
-\r
- /* If the above function invocation resulted in data that\r
- should be sent out on the network, the global variable\r
- uip_len is set to a value > 0. */\r
- if( uip_len > 0 )\r
- {\r
- vEMACWrite();\r
- }\r
- }\r
- }\r
- else\r
- {\r
- ulUIP_Events &= ~uipETHERNET_RX_EVENT;\r
- }\r
- }\r
- \r
- if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL )\r
- {\r
- ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT;\r
- \r
- for( i = 0; i < UIP_CONNS; i++ )\r
- {\r
- uip_periodic( i );\r
-\r
- /* If the above function invocation resulted in data that\r
- should be sent out on the network, the global variable\r
- uip_len is set to a value > 0. */\r
- if( uip_len > 0 )\r
- {\r
- uip_arp_out();\r
- vEMACWrite();\r
- }\r
- }\r
- }\r
- \r
- /* Call the ARP timer function every 10 seconds. */\r
- if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 )\r
- {\r
- ulUIP_Events &= ~uipARP_TIMER_EVENT;\r
- uip_arp_timer();\r
- }\r
- \r
- if( ulUIP_Events == pdFALSE )\r
- {\r
- xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY );\r
- ulUIP_Events |= ulNewEvent;\r
- }\r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvInitialise_uIP( void )\r
-{\r
-xTimerHandle xARPTimer, xPeriodicTimer;\r
-uip_ipaddr_t xIPAddr;\r
-const unsigned long ul_uIPEventQueueLength = 10UL;\r
-\r
- /* Initialise the uIP stack. */\r
- uip_init();\r
- uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 );\r
- uip_sethostaddr( &xIPAddr );\r
- uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 );\r
- uip_setnetmask( &xIPAddr );\r
- prvSetMACAddress();\r
- httpd_init();\r
-\r
- /* Create the queue used to sent TCP/IP events to the uIP stack. */\r
- xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) );\r
-\r
- /* Create and start the uIP timers. */\r
- xARPTimer = xTimerCreate( ( const signed char * const ) "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */\r
- ( 10000UL / portTICK_RATE_MS ), /* Timer period. */\r
- pdTRUE, /* Autor-reload. */\r
- ( void * ) uipARP_TIMER,\r
- prvUIPTimerCallback\r
- );\r
-\r
- xPeriodicTimer = xTimerCreate( ( const signed char * const ) "PeriodicTimer",\r
- ( 500 / portTICK_RATE_MS ),\r
- pdTRUE, /* Autor-reload. */\r
- ( void * ) uipPERIODIC_TIMER,\r
- prvUIPTimerCallback\r
- );\r
-\r
- configASSERT( xARPTimer );\r
- configASSERT( xPeriodicTimer );\r
-\r
- xTimerStart( xARPTimer, portMAX_DELAY );\r
- xTimerStart( xPeriodicTimer, portMAX_DELAY );\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvUIPTimerCallback( xTimerHandle xTimer )\r
-{\r
-static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT;\r
-static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT;\r
-\r
- /* This is a time callback, so calls to xQueueSend() must not attempt to\r
- block. */\r
- switch( ( int ) pvTimerGetTimerID( xTimer ) )\r
- {\r
- case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK );\r
- break;\r
-\r
- case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK );\r
- break;\r
-\r
- default : /* Should not get here. */\r
- break;\r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvSetMACAddress( void )\r
-{\r
-struct uip_eth_addr xAddr;\r
-\r
- /* Configure the MAC address in the uIP stack. */\r
- xAddr.addr[ 0 ] = configMAC_ADDR0;\r
- xAddr.addr[ 1 ] = configMAC_ADDR1;\r
- xAddr.addr[ 2 ] = configMAC_ADDR2;\r
- xAddr.addr[ 3 ] = configMAC_ADDR3;\r
- xAddr.addr[ 4 ] = configMAC_ADDR4;\r
- xAddr.addr[ 5 ] = configMAC_ADDR5;\r
- uip_setethaddr( xAddr );\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vApplicationProcessFormInput( char *pcInputString )\r
-{\r
-char *c;\r
-\r
- /* Only interested in processing form input if this is the IO page. */\r
- c = strstr( pcInputString, "io.shtml" );\r
- \r
- if( c )\r
- {\r
- /* Is there a command in the string? */\r
- c = strstr( pcInputString, "?" );\r
- if( c )\r
- {\r
- /* Turn the LED's on or off in accordance with the check box status. */\r
- if( strstr( c, "LED0=1" ) != NULL )\r
- {\r
- /* Turn the LEDs on. */\r
- vParTestSetLED( 7, 1 );\r
- vParTestSetLED( 8, 1 );\r
- vParTestSetLED( 9, 1 );\r
- vParTestSetLED( 10, 1 );\r
- }\r
- else\r
- {\r
- /* Turn the LEDs off. */\r
- vParTestSetLED( 7, 0 );\r
- vParTestSetLED( 8, 0 );\r
- vParTestSetLED( 9, 0 );\r
- vParTestSetLED( 10, 0 );\r
- }\r
- }\r
- else\r
- {\r
- /* Commands to turn LEDs off are not always explicit. */\r
- vParTestSetLED( 7, 0 );\r
- vParTestSetLED( 8, 0 );\r
- vParTestSetLED( 9, 0 );\r
- vParTestSetLED( 10, 0 );\r
- }\r
- }\r
-}\r
-\r