From bb2799502454d5ddb9ae6cbb4cae995ccddeaa6b Mon Sep 17 00:00:00 2001 From: richardbarry Date: Fri, 7 Oct 2011 09:58:16 +0000 Subject: [PATCH] Update RX630 to add in some timer demo code, and remove all mention of Ethernet. Minor comment corrections in the RX200 demo. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1618 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../RTOSDemo/RTOSDemo.nav | Bin 277032 -> 277050 bytes .../RTOSDemo/RTOSDemo.tps | 2 +- .../RTOSDemo/SessionRX200_E1_E20_SYSTEM.hsf | 4 +- .../RTOSDemo/main-full.c | 27 +- Demo/RX600_RX630-RSK_Renesas/RTOSDemo.tws | 10 +- .../RTOSDemo/FreeRTOSConfig.h | 2 +- .../RTOSDemo/RTOSDemo.hwp | 168 +-------- .../RTOSDemo/RTOSDemo.nav | Bin 209015 -> 208864 bytes .../RTOSDemo/RTOSDemo.tps | 38 +- .../RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf | 38 +- .../RTOSDemo/main-blinky.c | 36 +- .../RTOSDemo/main-full.c | 313 ++++++++-------- .../RTOSDemo/uIP_Task.c | 345 ------------------ 13 files changed, 211 insertions(+), 772 deletions(-) delete mode 100644 Demo/RX600_RX630-RSK_Renesas/RTOSDemo/uIP_Task.c diff --git a/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/RTOSDemo.nav b/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/RTOSDemo.nav index 2f918a35faa2641dce9828b328f375ce1056ef2e..ad310ee243b472aaa826febb4b94e317237aa29e 100644 GIT binary patch delta 8606 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 delta 8251 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 L)TsT`X@&m-0_$<~ diff --git a/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/RTOSDemo.tps b/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/RTOSDemo.tps index 0a64a117c..404a9d4a1 100644 --- a/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/RTOSDemo.tps +++ b/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/RTOSDemo.tps @@ -16,7 +16,7 @@ [GENERAL_DATA_PROJECT] "FDT_UserBootAreaFiles" "" [GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" +"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" [SESSIONS_Blinky] "DefaultSession" "SessionRX200_E1_E20_SYSTEM" diff --git a/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/SessionRX200_E1_E20_SYSTEM.hsf b/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/SessionRX200_E1_E20_SYSTEM.hsf index eda0123ff..b40478bd7 100644 --- a/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/SessionRX200_E1_E20_SYSTEM.hsf +++ b/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/SessionRX200_E1_E20_SYSTEM.hsf @@ -525,8 +525,6 @@ [WINDOW_POSITION_STATE_DATA_VD4] [WINDOW_Z_ORDER] "{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000013_SYMBOL} TOOLBAR 0" -"{WK_TB00000011_CPU} TOOLBAR 0" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX200_RX210-RSK_Renesas\RTOSDemo\main-full.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX200_RX210-RSK_Renesas\RTOSDemo\main-blinky.c" [TARGET_NAME] @@ -551,8 +549,8 @@ "SBK_TAR_EMUE100|Exception" 1 "SBK_TAR_EMUE100|BreakCondition" 1 "SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 "SBK_TAR_EMUE100|ExecutionTime" 1 +"SBK_TAR_EMUE100|PC" 1 [STATUSBAR_DEBUGGER_PANESTATE_VD2] [STATUSBAR_DEBUGGER_PANESTATE_VD3] [STATUSBAR_DEBUGGER_PANESTATE_VD4] diff --git a/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/main-full.c b/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/main-full.c index 818104c61..e384e1e19 100644 --- a/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/main-full.c +++ b/Demo/RX200_RX210-RSK_Renesas/RTOSDemo/main-full.c @@ -82,7 +82,7 @@ * standard demo tasks are not only still executing, but are executing without * reporting any errors. If the check timer discovers that a task has either * stalled, or reported an error, then it changes its own period from the - * initial three seconds, to just 200ms. The check timer callback function + * initial five seconds, to just 200ms. The check timer callback function * also toggles LED 3 each time it is called. This provides a visual * indication of the system status: If the LED toggles every five seconds, * then no issues have been discovered. If the LED toggles every 200ms, then @@ -164,7 +164,7 @@ The tasks check that the values are passed in correctly. */ #define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) -/* The LED toggled by the check task. */ +/* The LED toggled by the check timer. */ #define mainCHECK_LED ( 3 ) /* The period at which the check timer will expire, in ms, provided no errors @@ -234,7 +234,7 @@ static void prvCheckTimerCallback( xTimerHandle xTimer ); /*-----------------------------------------------------------*/ /* 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 +provided the tasks have not reported any errors. The check timer inspects these variables to ensure they are still incrementing as expected. If a variable stops incrementing then it is likely that its associate task has stalled. */ unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; @@ -304,62 +304,52 @@ extern void HardwareSetup( void ); for( ;; ); } /*-----------------------------------------------------------*/ -volatile long temp = 0; + static void prvCheckTimerCallback( xTimerHandle xTimer ) { static long lChangedTimerPeriodAlready = pdFALSE, lErrorStatus = pdPASS; static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -volatile long temp2; + /* Check the standard demo tasks are running without error. */ if( xAreGenericQueueTasksStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 1; } else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 2; } else if( xAreBlockingQueuesStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 3; } else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 4; } else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 5; } else if( xArePollingQueuesStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 6; } else if( xIsCreateTaskStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 7; } else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 8; } else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) { lErrorStatus = pdFAIL; - temp = 9; } else if( xAreIntQueueTasksStillRunning() != pdPASS ) { lErrorStatus = pdFAIL; - temp = 10; } /* Check the reg test tasks are still cycling. They will stop incrementing @@ -367,13 +357,11 @@ volatile long temp2; if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) { lErrorStatus = pdFAIL; - temp = 11; } if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) { lErrorStatus = pdFAIL; - temp = 12; } ulLastRegTest1CycleCount = ulRegTest1CycleCount; @@ -387,7 +375,6 @@ volatile long temp2; /* Was an error detected this time through the callback execution? */ if( lErrorStatus != pdPASS ) { - temp2 = temp; if( lChangedTimerPeriodAlready == pdFALSE ) { lChangedTimerPeriodAlready = pdTRUE; @@ -582,7 +569,7 @@ TestLoop1: RegTest1Error: ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. + ; causing the check timer to indicate the error. BRA RegTest1Error } /*-----------------------------------------------------------*/ @@ -660,7 +647,7 @@ TestLoop2: RegTest2Error: ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. + ; - causing the check timer to indicate the error. BRA RegTest2Error } /*-----------------------------------------------------------*/ diff --git a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo.tws b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo.tws index 017ae1c06..8065db0e6 100644 --- a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo.tws +++ b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo.tws @@ -7,15 +7,11 @@ [GENERAL_DATA] [BREAKPOINTS] [OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" [WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" 66 66 1104 430 0 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" 0 0 1144 335 0 0 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" -4 -23 1310 655 1 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" 22 22 1104 430 0 1 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" 66 66 1126 360 0 1 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" -4 -23 1310 581 1 0 [LOADED_PROJECTS] "RTOSDemo" [END] diff --git a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h index 1c8994ec8..f21a5df14 100644 --- a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h +++ b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h @@ -70,7 +70,7 @@ *----------------------------------------------------------*/ #define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 +#define configUSE_IDLE_HOOK 1 #define configUSE_TICK_HOOK 0 #define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx630def.h. */ #define configPERIPHERAL_CLOCK_HZ ( PCLKB_FREQUENCY ) /* Set in rskrx630def.h. */ diff --git a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/RTOSDemo.hwp b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/RTOSDemo.hwp index b51e571b7..8dc5692e3 100644 --- a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/RTOSDemo.hwp +++ b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/RTOSDemo.hwp @@ -11,9 +11,7 @@ [CONFIGURATIONS] "Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Blinky" "Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" "Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Debug_with_optimisation" -"SimDebug_RX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\SimDebug_RX600" [BUILD_PHASES] "Renesas OptLinker" 1 "Renesas RX Assembler" 1 @@ -211,12 +209,8 @@ [ON_DEMAND_COMPONENTS_LOADED] [SYNC_SESSION_NAMES] [SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\DefaultSession.hsf" 0 "SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -"SimSessionRX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\SimSessionRX600.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] [GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SimSessionRX600] [OPTIONS_Blinky_Renesas OptLinker] "Single Shot" "06a7a4a28738cc10" 5 [OPTIONS_Blinky_Renesas RX Assembler] @@ -357,69 +351,8 @@ "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" [LINKAGE_ORDER_Debug] [GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas OptLinker] -"Single Shot" "058b41409738cc10" 5 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Assembler] -"Assembly source file" "0d805402da28cc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0d805402da28cc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0d805402da28cc10" 4 -"Linkage symbol file" "0d805402da28cc10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Compiler] -"C source file" "02d403988738cc10" 2 -"C++ source file" "02d403988738cc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\ParTest.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\cgc.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "02d403988738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "02d403988738cc10" 2 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Library Generator] -"Single Shot" "05beda5b8738cc10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Configurator] -"Single Shot" "0bf59a677438cc10" 6 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[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 -"[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] -" 3 -"[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] -" 2 -"[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] -" 1 -"[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)] -" 5 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] [OPTIONS_Debug_with_optimisation_Renesas OptLinker] -"Single Shot" "02af16b39738cc10" 5 +"Single Shot" "026be049ed48cc10" 5 [OPTIONS_Debug_with_optimisation_Renesas RX Assembler] "Assembly source file" "0c257402da28cc10" 4 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0c257402da28cc10" 4 @@ -474,118 +407,21 @@ " 2 "[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] " 1 -"[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] +"[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] " 5 [EXCLUDED_FILES_Debug_with_optimisation] "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" [LINKAGE_ORDER_Debug_with_optimisation] [GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[OPTIONS_SimDebug_RX600_Renesas OptLinker] -"Single Shot" "027615ed9738cc10" 5 -[OPTIONS_SimDebug_RX600_Renesas RX Assembler] -"Assembly source file" "07f86402da28cc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "07f86402da28cc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "07f86402da28cc10" 4 -"Linkage symbol file" "07f86402da28cc10" 4 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Compiler] -"C source file" "074935dc9738cc10" 2 -"C++ source file" "074935dc9738cc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\ParTest.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\cgc.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "074935dc9738cc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "074935dc9738cc10" 2 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Library Generator] -"Single Shot" "0cd2772f9738cc10" 1 -[OPTIONS_SimDebug_RX600_Renesas RX Configurator] -"Single Shot" "0bf59a677438cc10" 6 -[OPTIONS_SimDebug_RX600] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[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 -"[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] -" 3 -"[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] -" 2 -"[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] -" 1 -"[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)] -" 5 -[EXCLUDED_FILES_SimDebug_RX600] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" [GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] [SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] "MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -"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^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" [GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] [SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] "MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -"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^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -"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^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" [GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] [SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] "MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -"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^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -"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^"]" [EXT_DEBUGGER_INFO] 0 "" "" "" "" [END] diff --git a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/RTOSDemo.nav b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/RTOSDemo.nav index 6b9dd1377e471eefba31e3cf4f84b7d3e758404e..b43bee5e5787dc4bcad4af625e1bf278cf710f24 100644 GIT binary patch delta 2880 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 z@ab>|32773|32774|<>|32820|<>|32801|32824" "0.0" +"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 297 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 374 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" "{WK_00000001_DEBUGCONSOLE}" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" "{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -23 1310 655 9 0 "" "0.0" "{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" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.54" 277 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 205 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" +"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 297 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "0.87" 413 0 0 350 200 2065 0 "" "0.0" "{WK_00000001_STACKTRACE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.50" 277 0 0 350 200 2065 0 "" "0.0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 374 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" @@ -486,7 +486,7 @@ "{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 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 914 231 0 0 18 0 "" "0.0" +"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 1 "0.00" 0 914 231 0 0 18 0 "" "0.0" "{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 0 "0.00" 0 298 189 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" 0 0 0 "0.00" 0 427 225 0 0 5 0 "" "0.0" @@ -508,12 +508,8 @@ [WINDOW_POSITION_STATE_DATA_VD4] [WINDOW_Z_ORDER] "{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000013_SYMBOL} TOOLBAR 0" -"{WK_TB00000011_CPU} TOOLBAR 0" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX630-RSK_Renesas\RTOSDemo\main-blinky.c" [TARGET_NAME] "RX E1/E20 SYSTEM" "" 0 [STATUSBAR_STATEINFO_VD1] diff --git a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-blinky.c b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-blinky.c index 15d26d343..a63ebd622 100644 --- a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-blinky.c +++ b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-blinky.c @@ -92,7 +92,8 @@ static void prvQueueSendTask( void *pvParameters ); static xQueueHandle xQueue = NULL; /* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ +purely to allow the project to link as it is used by the full build +configuration. */ volatile unsigned long ulHighFrequencyTickCount = 0UL; /*-----------------------------------------------------------*/ @@ -120,9 +121,9 @@ extern void HardwareSetup( void ); vTaskStartScheduler(); } - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ + /* If all is well the next line of code will not be reached as the scheduler + will be running. If the next line is reached then it is likely that there was + insufficient heap available for the idle task to be created. */ for( ;; ); } /*-----------------------------------------------------------*/ @@ -144,8 +145,10 @@ const unsigned long ulValueToSend = 100UL; /* Send to the queue - causing the queue receive task to flash its LED. 0 is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); + should always be empty here (it should always be empty because the task + removing items from the queue has a higher priority than the task adding + things to the queue). */ + xQueueSend( xQueue, &ulValueToSend, 0UL ); } } /*-----------------------------------------------------------*/ @@ -171,6 +174,11 @@ unsigned long ulReceivedValue; } /*-----------------------------------------------------------*/ +/* A callback function named vApplicationSetupTimerInterrupt() must be defined +to configure a tick interrupt source, and configTICK_VECTOR set in +FreeRTOSConfig.h to install the tick interrupt handler in the correct position +in the vector table. This example uses a compare match timer. It can be +into any FreeRTOS project, provided the same compare match timer is available. */ void vApplicationSetupTimerInterrupt( void ) { /* Enable compare match timer 0. */ @@ -196,24 +204,28 @@ void vApplicationSetupTimerInterrupt( void ) } /*-----------------------------------------------------------*/ -/* This function is explained by the comments above its prototype at the top -of this file. */ +/* If configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h, then this +function will be called if pvPortMalloc() returns NULL because it has exhausted +the available FreeRTOS heap space. See http://www.freertos.org/a00111.html. */ void vApplicationMallocFailedHook( void ) { for( ;; ); } /*-----------------------------------------------------------*/ -/* This function is explained by the comments above its prototype at the top -of this file. */ +/* If configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2 in +FreeRTOSConfig.h, then this function will be called if a task overflows its +stack space. See +http://www.freertos.org/Stacks-and-stack-overflow-checking.html. */ void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName ) { for( ;; ); } /*-----------------------------------------------------------*/ -/* This function is explained by the comments above its prototype at the top -of this file. */ +/* If configUSE_IDLE_HOOK is set to 1 in FreeRTOSConfig.h, then this function +will be called on each iteration of the idle task. See +http://www.freertos.org/a00016.html */ void vApplicationIdleHook( void ) { /* Just to prevent the variable getting optimised away. */ diff --git a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-full.c b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-full.c index cf4231ba5..b7ac879fd 100644 --- a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-full.c +++ b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/main-full.c @@ -54,7 +54,8 @@ /* **************************************************************************** * This project includes a lot of tasks and tests and is therefore complex. * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. + * the 'Blinky' build configuration within the HEW IDE. The Blinky build + * configuration uses main-blinky.c instead of main-full.c. * **************************************************************************** * * Creates all the demo application tasks, then starts the scheduler. The web @@ -67,33 +68,35 @@ * In addition to the standard demo tasks, the following tasks and tests are * defined and/or created within this file: * - * "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 check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. + * "Reg test" tasks - These fill the registers with known values, then + * repeatedly check that each register still contains its expected value for + * the lifetime of the tasks. Each task uses different values. The tasks run + * with very low priority so get preempted very frequently. A check variable + * is incremented on each iteration of the test loop. A register containing an + * unexpected value is indicative of an error in the context switching + * mechanism and will result in a branch to a null loop - which in turn will + * prevent the check variable from incrementing any further and allow the check + * timer (described below) to determine that an error has occurred. The nature + * of the reg test tasks necessitates that they are written in assembly code. * - * "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 LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. + * "Check Timer" and Callback Function - The check timer period is initially + * set to five seconds. The check timer callback function checks that all the + * standard demo tasks are not only still executing, but are executing without + * reporting any errors. If the check timer discovers that a task has either + * stalled, or reported an error, then it changes its own period from the + * initial five seconds, to just 200ms. The check timer callback function + * also toggles LED 3 each time it is called. This provides a visual + * indication of the system status: If the LED toggles every five seconds, + * then no issues have been discovered. If the LED toggles every 200ms, then + * an issue has been discovered with at least one task. * * "High frequency timer test" - A high frequency periodic interrupt is * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything + * configMAX_SYSCALL_INTERRUPT_PRIORITY, so will not be effected by anything * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result + * combination with other standard tests executed in this demo, will result * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. + * included in build configurations that have the optimiser switched on. * * *NOTE 1* If LED3 is toggling every 5 seconds then all the demo application * tasks are executing as expected and no errors have been reported in any @@ -118,6 +121,8 @@ /* Kernel includes. */ #include "FreeRTOS.h" #include "task.h" +#include "timers.h" +#include "semphr.h" /* Standard demo includes. */ #include "partest.h" @@ -140,33 +145,30 @@ tasks check that the values are passed in correctly. */ #define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) /* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) #define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) #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. */ +/* The LED toggled by the check timer. */ #define mainCHECK_LED ( 3 ) -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_RATE_MS ) +/* The period at which the check timer will expire, in ms, provided no errors +have been reported by any of the standard demo tasks. ms are converted to the +equivalent in ticks using the portTICK_RATE_MS constant. */ +#define mainCHECK_TIMER_PERIOD_MS ( 5000UL / portTICK_RATE_MS ) + +/* The period at which the check timer will expire, in ms, if an error has been +reported in one of the standard demo tasks. ms are converted to the equivalent +in ticks using the portTICK_RATE_MS constant. */ +#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_RATE_MS ) -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_RATE_MS ) +/* A block time of zero simple means "Don't Block". */ +#define mainDONT_BLOCK ( 0UL ) /* * vApplicationMallocFailedHook() will only be called if @@ -214,27 +216,22 @@ static void prvRegTest1Implementation( void ); static void prvRegTest2Implementation( void ); /* - * The check task as described at the top of this file. + * The check timer callback function, as described at the top of this file. */ -static void prvCheckTask( void *pvParameters ); +static void prvCheckTimerCallback( xTimerHandle xTimer ); -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); /*-----------------------------------------------------------*/ /* 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 +provided the tasks have not reported any errors. The check timer inspects these variables to ensure they are still incrementing as expected. If a variable stops incrementing then it is likely that its associate task has stalled. */ 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. This will report any errors picked up -by the reg test task. */ -const char *pcStatusMessage = "All tasks executing without error."; +/* The check timer. This uses prvCheckTimerCallback() as its callback +function. */ +static xTimerHandle xCheckTimer = NULL; /*-----------------------------------------------------------*/ @@ -253,9 +250,6 @@ extern void HardwareSetup( void ); xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - /* Create the standard demo tasks. */ vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); vCreateBlockTimeTasks(); @@ -274,119 +268,117 @@ extern void HardwareSetup( void ); or not the correct/expected number of tasks are running at any given time. */ vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); + /* Create the software timer that performs the 'check' functionality, + as described at the top of this file. */ + xCheckTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */ + ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ + pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ + ( void * ) 0, /* The ID is not used, so can be set to anything. */ + prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ + ); + + /* Sanity check that the check timer was indeed created. */ + configASSERT( xCheckTimer ); + + /* Start the check timer. It will actually start when the scheduler is + started. */ + xTimerStart( xCheckTimer, mainDONT_BLOCK ); + /* Start the tasks running. */ vTaskStartScheduler(); - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ + /* If all is well, the following line will never be reached as the scheduler + will be running. If the following line is reached, there was insufficient + FreeRTOS heap available for the idle task to be created. See + http://www.freertos.org/a00111.html and the malloc failed hook function for + more information. */ for( ;; ); } /*-----------------------------------------------------------*/ -static void prvCheckTask( void *pvParameters ) +static void prvCheckTimerCallback( xTimerHandle xTimer ) { +static long lChangedTimerPeriodAlready = pdFALSE, lErrorStatus = pdPASS; static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -portTickType xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time and can disrupt other tests. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); + /* Check the standard demo tasks are running without error. */ + if( xAreGenericQueueTasksStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xAreBlockingQueuesStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xArePollingQueuesStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xIsCreateTaskStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) + { + lErrorStatus = pdFAIL; + } + else if( xAreIntQueueTasksStillRunning() != pdPASS ) + { + lErrorStatus = pdFAIL; + } + else if( xAreMathsTaskStillRunning() != pdPASS ) + { + lErrorStatus = pdFAIL; + } - for( ;; ) + /* Check the reg test tasks are still cycling. They will stop incrementing + their loop counters if they encounter an error. */ + if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); + lErrorStatus = pdFAIL; + } - /* Check the standard demo tasks are running without error. */ - 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: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: QueuePeek"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockQueue"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockTime"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: SemTest"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: PollQueue"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Death"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntMath"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RecMutex"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntQueue"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Flop"; - } + if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) + { + lErrorStatus = pdFAIL; + } - /* 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: RegTest1"; - } + ulLastRegTest1CycleCount = ulRegTest1CycleCount; + ulLastRegTest2CycleCount = ulRegTest2CycleCount; - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) + /* 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 ); + + /* Was an error detected this time through the callback execution? */ + if( lErrorStatus != pdPASS ) + { + if( lChangedTimerPeriodAlready == pdFALSE ) { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest2"; + lChangedTimerPeriodAlready = pdTRUE; + + /* This call to xTimerChangePeriod() uses a zero block time. + Functions called from inside of a timer callback function must + *never* attempt to block. */ + xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); } - - 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 ); } } /*-----------------------------------------------------------*/ @@ -438,6 +430,19 @@ void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName of this file. */ void vApplicationIdleHook( void ) { + /* If this is being executed then the kernel has been started. Start the high + frequency timer test as described at the top of this file. This is only + included in the optimised build configuration - otherwise it takes up too much + CPU time and can disrupt other tests. */ + #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST + static portBASE_TYPE xTimerTestStarted = pdFALSE; + extern void vSetupHighFrequencyTimer( void ); + if( xTimerTestStarted == pdFALSE ) + { + vSetupHighFrequencyTimer(); + xTimerTestStarted = pdTRUE; + } + #endif } /*-----------------------------------------------------------*/ @@ -559,7 +564,7 @@ TestLoop1: RegTest1Error: ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. + ; causing the check timer to indicate the error. BRA RegTest1Error } /*-----------------------------------------------------------*/ @@ -637,18 +642,8 @@ TestLoop2: RegTest2Error: ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. + ; - causing the check timer to indicate the error. BRA RegTest2Error } /*-----------------------------------------------------------*/ -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - return ( char * ) pcStatusMessage; -} -/*-----------------------------------------------------------*/ - - diff --git a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/uIP_Task.c b/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 906f0e183..000000000 --- a/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,345 +0,0 @@ -/* - FreeRTOS V7.0.2 - Copyright (C) 2011 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. -*/ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.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" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.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 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( xTimerHandle xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -xQueueHandle xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* 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 - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - 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( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -xTimerHandle xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - 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 queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( ( const signed char * const ) "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_RATE_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( ( const signed char * const ) "PeriodicTimer", - ( 500 / portTICK_RATE_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( xTimerHandle xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -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; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - -- 2.39.5