diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo.tws b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo.tws
index cd506b80d2..910becbd14 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo.tws
+++ b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo.tws
@@ -7,13 +7,21 @@
 [GENERAL_DATA]
 [BREAKPOINTS]
 [OPEN_WORKSPACE_FILES]
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\include\flash_timer.h" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\FreeRTOSConfig.h" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" 
 [WORKSPACE_FILE_STATES]
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" 22 22 1142 391 0 0 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" 154 154 835 366 0 1 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" -4 -23 1019 569 1 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" 0 0 1326 516 0 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\include\flash_timer.h" 66 66 1120 448 0 3 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\FreeRTOSConfig.h" 44 44 1164 335 0 1 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" 88 88 1120 448 0 4 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" 154 154 835 366 0 0 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" -4 -23 1326 673 1 6 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" 110 110 1120 448 0 5 
 [LOADED_PROJECTS]
 "RTOSDemo" 
 [END]
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h
index 3d56a1e7d1..86b84fb33c 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h
+++ b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h
@@ -92,6 +92,7 @@
 
 #define configMAX_PRIORITIES			( ( unsigned portBASE_TYPE ) 7 )
 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
+
 /* Software timer definitions. */
 #define configUSE_TIMERS				1
 #define configTIMER_TASK_PRIORITY		( 3 )
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp
index 51c9b052c0..6dde714761 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp
+++ b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp
@@ -124,7 +124,7 @@
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Common demo tasks" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Common demo tasks" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Common demo tasks" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "User" "C source file|Common demo tasks" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "User" "C source file|Common demo tasks" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Common demo tasks" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Common demo tasks" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Common demo tasks" 2 
@@ -139,16 +139,15 @@
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "User" "C source file|Renesas Files" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "User" "C source file|Renesas Files" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "User" "C source file|Renesas Files" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\lcd.c" "User" "C source file" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-blinky.c" "User" "C source file" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" "User" "C source file" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\switches.c" "User" "C source file" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS|Portable layer" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "User" "C source file|FreeRTOS|Portable layer" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "User" "Assembly source file" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "User" "C source file" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "User" "C source file|FreeRTOS" 2 
 [FOLDER]
 "Assembly source file" "Assembly source file" 
 "C header file" "C header file" 
@@ -209,74 +208,68 @@
 [ON_DEMAND_COMPONENTS_LOADED]
 [SYNC_SESSION_NAMES]
 [SESSIONS]
-"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\DefaultSession.hsf" 0 
 "SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 
-"SimSessionRX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-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" "00bd89f6bf10dc10" 5 
+"Single Shot" "0a2367d2f830dc10" 5 
 [OPTIONS_Blinky_Renesas RX Assembler]
 "Assembly source file" "00bd89f6bf10dc10" 4 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "00bd89f6bf10dc10" 4 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "00bd89f6bf10dc10" 4 
 "Linkage symbol file" "00bd89f6bf10dc10" 4 
 [OPTIONS_Blinky_Renesas RX C/C++ Compiler]
-"C source file" "00a669f6bf10dc10" 3 
-"C++ source file" "00a669f6bf10dc10" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\ParTest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\lcd.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\switches.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "00a669f6bf10dc10" 3 
+"C source file" "00a669f6bf10dc10" 2 
+"C++ source file" "00a669f6bf10dc10" 3 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "0cad76d2f830dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\ParTest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-blinky.c" "0ae1d1e2b530dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "00a669f6bf10dc10" 2 
 [OPTIONS_Blinky_Renesas RX C/C++ Library Generator]
 "Single Shot" "00a669f6bf10dc10" 1 
 [OPTIONS_Blinky_Renesas RX Configurator]
-"Single Shot" "00bd89f6bf10dc10" 6 
+"Single Shot" "0cad76d2f830dc10" 6 
 [OPTIONS_Blinky]
 "" 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|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1]
 " 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)\webserver^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [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] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1]
-" 2 
-"[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)\webserver^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [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] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1]
 " 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)\webserver^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [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] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1]
+" 2 
 "[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|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^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(0FFF81000)|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^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1]
 " 5 
 [EXCLUDED_FILES_Blinky]
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" 
@@ -290,69 +283,69 @@
 [LINKAGE_ORDER_Blinky]
 [GENERAL_DATA_CONFIGURATION_Blinky]
 [OPTIONS_Debug_Renesas OptLinker]
-"Single Shot" "00a669f6bf10dc10" 5 
+"Single Shot" "0a2367d2f830dc10" 5 
 [OPTIONS_Debug_Renesas RX Assembler]
 "Assembly source file" "00a669f6bf10dc10" 4 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "00a669f6bf10dc10" 4 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "00a669f6bf10dc10" 4 
 "Linkage symbol file" "00a669f6bf10dc10" 4 
 [OPTIONS_Debug_Renesas RX C/C++ Compiler]
-"C source file" "00a669f6bf10dc10" 3 
-"C++ source file" "00a669f6bf10dc10" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\ParTest.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\lcd.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\switches.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "00a669f6bf10dc10" 3 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "00a669f6bf10dc10" 3 
+"C source file" "00a669f6bf10dc10" 2 
+"C++ source file" "00a669f6bf10dc10" 3 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "0cad76d2f830dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\ParTest.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-blinky.c" "0ae1d1e2b530dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "00a669f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "00a669f6bf10dc10" 2 
 [OPTIONS_Debug_Renesas RX C/C++ Library Generator]
 "Single Shot" "00a669f6bf10dc10" 1 
 [OPTIONS_Debug_Renesas RX Configurator]
-"Single Shot" "00a669f6bf10dc10" 6 
+"Single Shot" "0cad76d2f830dc10" 6 
 [OPTIONS_Debug]
 "" 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|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE]
 " 4 
 "[V|VERSION|1] [S|LANG|C99] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [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]
-" 3 
-"[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)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [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]
 " 2 
+"[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)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [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]
+" 3 
 "[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] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE]
 " 1 
-"[V|VERSION|6] [S|PRELINK|SKIP] [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|METHODALL|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)]
+"[V|VERSION|6] [S|PRELINK|SKIP] [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|METHODALL|SYMBOL|REFERENCE|XREFERENCE] [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(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [S|MEMORY|HIGH]
 " 5 
 [EXCLUDED_FILES_Debug]
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-blinky.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" 
 [LINKAGE_ORDER_Debug]
 [GENERAL_DATA_CONFIGURATION_Debug]
 [OPTIONS_Debug_with_optimisation_Renesas OptLinker]
-"Single Shot" "0158b9448c20dc10" 5 
+"Single Shot" "0a2367d2f830dc10" 5 
 [OPTIONS_Debug_with_optimisation_Renesas RX Assembler]
 "Assembly source file" "0f42b9f6bf10dc10" 4 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0f42b9f6bf10dc10" 4 
@@ -368,7 +361,7 @@
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0f42b9f6bf10dc10" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0f42b9f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "0cad76d2f830dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0f42b9f6bf10dc10" 2 
@@ -382,9 +375,8 @@
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "0f42b9f6bf10dc10" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\lcd.c" "0f42b9f6bf10dc10" 2 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-blinky.c" "0ae1d1e2b530dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" "0f42b9f6bf10dc10" 2 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\switches.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0f42b9f6bf10dc10" 2 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "0f42b9f6bf10dc10" 2 
@@ -394,7 +386,7 @@
 [OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Library Generator]
 "Single Shot" "0f42b9f6bf10dc10" 1 
 [OPTIONS_Debug_with_optimisation_Renesas RX Configurator]
-"Single Shot" "0f59d9f6bf10dc10" 6 
+"Single Shot" "0cad76d2f830dc10" 6 
 [OPTIONS_Debug_with_optimisation]
 "" 0 
 "[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 
@@ -409,37 +401,18 @@
 "[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^"] [S|OPTIMIZEITEMS|SPEED] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*,L(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1]
 " 5 
 [EXCLUDED_FILES_Debug_with_optimisation]
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\lcd.c" 
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\switches.c" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-blinky.c" 
 [LINKAGE_ORDER_Debug_with_optimisation]
 [GENERAL_DATA_CONFIGURATION_Debug_with_optimisation]
-[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_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^"]" 
 [EXT_DEBUGGER_INFO]
 0 "" "" "" "" 
 [END]
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.nav b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.nav
index 99a6c3d371..e41139a7b3 100644
Binary files a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.nav and b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.nav differ
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.tps b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.tps
index 97d09ccd7e..3bb4854246 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.tps
+++ b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/RTOSDemo.tps
@@ -3,15 +3,13 @@
 [DATABASE_VERSION]
 "1.1" 
 [SESSIONS_]
-"DefaultSession" 
 "SessionRX600_E1_E20_SYSTEM" 
-"SimSessionRX600" 
 [CONFIGURATIONS]
 "Blinky" 
 "Debug" 
 "Debug_with_optimisation" 
 [CURRENT_CONFIGURATION]
-"Debug_with_optimisation" 
+"Debug" 
 [CURRENT_SESSION]
 "SessionRX600_E1_E20_SYSTEM" 
 [GENERAL_DATA_PROJECT]
@@ -19,31 +17,17 @@
 [GENERAL_DATA_CONFIGURATION_Blinky]
 "PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" 
 [SESSIONS_Blinky]
-"DefaultSession" 
 "SessionRX600_E1_E20_SYSTEM" 
-"SimSessionRX600" 
 [GENERAL_DATA_CONFIGURATION_Debug]
-"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" 
-[SESSIONS_Debug]
-"DefaultSession" 
-"SessionRX600_E1_E20_SYSTEM" 
-"SimSessionRX600" 
-[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation]
 "PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" 
-[SESSIONS_Debug_with_optimisation]
-"DefaultSession" 
+[SESSIONS_Debug]
+"SessionRX600_E1_E20_SYSTEM" 
+[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation]
+"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" 
+[SESSIONS_Debug_with_optimisation]
 "SessionRX600_E1_E20_SYSTEM" 
-"SimSessionRX600" 
-[GENERAL_DATA_SESSION_SimSessionRX600]
-[GENERAL_DATA_SESSION_DefaultSession]
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600]
 [GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM]
-[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession]
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession]
 [GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM]
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600]
-[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession]
-[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600]
 [GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM]
 [GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM]
 [END]
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c
index 42ee02a677..9bf85976ad 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c
+++ b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c
@@ -57,7 +57,7 @@ void PowerON_Reset_PC(void)
 { 
 volatile unsigned int i;
 
-	set_intb((unsigned long)__sectop("C$VECT"));
+	set_intb(__sectop("C$VECT"));
 	set_fpsw(FPSW_init);
 
     /* MCU boots using the LOCO, so turn the speed up before setting up the C
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf
index a066a070d1..c896fc82f1 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf
+++ b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf
@@ -8,7 +8,7 @@
 "" 
 [GENERAL_DATA]
 "FIRST_CONNECTION_TAG" "NO" 
-"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|2a94|f|108a|1054|fff8cd9e|1050|fff8c484|88218|000870B4|000870AE|88204|88208|18b8" 
+"MRULABELS_DATAMANAGER_KEY" "00000000|FFFFFFFF|2a94|f|108a|1054|fff8cd9e|1050|fff8c484|88218|000870B4|000870AE|88204|88208|18b8" 
 "RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" 
 "{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" 
 "{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" 
@@ -89,32 +89,32 @@
 "{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000007274" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000006FF4" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000004750" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000446C" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "00000000A5A5A5A5" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000A5A5A5A5" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000A5A5A5A5" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000006A44" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000007274" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000E70C" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030004" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF84104" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF813CC" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000004774" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "00000000A5A5A5A5" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000004750" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000E73C" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030001" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF85D58" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000004774" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF81628" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "000000000000E168" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "000000000000E168" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000006AA4" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000006A44" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "000000000000E148" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "000000000000DB44" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "00000000A5A5A5A5" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" 
 "{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" 
 "{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" 
@@ -130,7 +130,7 @@
 "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," 
 "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" 
 "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" 
-"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "1" 
+"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" 
 "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" 
 "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" 
 "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" 
@@ -487,13 +487,13 @@
 "Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" 
 "QzROM" "TOOLBAR 0" 59419 4 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" 
 "{WK_00000001_CmdLine}ADC_Single_DTC_MTUDefaultSession" "WINDOW" 59422 0 1 "0.50" 230 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" 
-"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.33" 291 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" 
-"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 2 "1.00" 300 0 0 350 200 17 0 "57634|57637|57633|<<separator>>|32781|32782|<<separator>>|32780|32785|32787" "0.0" 
+"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.20" 187 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" 
+"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 300 0 0 350 200 17 0 "57634|57637|57633|<<separator>>|32781|32782|<<separator>>|32780|32785|32787" "0.0" 
 "{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 132 132 835 366 9 0 "" "0.0" 
-"{WK_00000001_IO}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 1 "0.50" 291 0 0 869 657 17 0 "32817|32826|32819|32820|32821" "0.0" 
+"{WK_00000001_IO}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 1 "0.50" 187 0 0 869 657 17 0 "32817|32826|32819|32820|32821" "0.0" 
 "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "1.00" 219 1452 519 1033 219 2053 0 "42202|42203|42204|42233|<<separator>>|42206|42205|42230|42229|42207|<<separator>>|42208|42209|42210|49076|42228|42227|<<separator>>|42231|42232|42234|42235|<<separator>>|42211|<<separator>>" "0.0" 
-"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 291 560 340 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" 
-"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 300 0 0 350 200 18 0 "" "0.0" 
+"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 187 560 340 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" 
+"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 300 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 "0.50" 300 0 0 1040 307 17 0 "32781|32783|<<separator>>|32771|32829|32772|32827|32773|<<separator>>|32786|<<separator>>|32810|32811" "0.0" 
 "{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 330 560 340 350 200 18 0 "" "0.0" 
@@ -529,7 +529,11 @@
 "{WK_TB00000011_CPU} TOOLBAR 0" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\FreeRTOSConfig.h" 
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\main-full.c" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\include\flash_timer.h" 
 [TARGET_NAME]
 "RX E1/E20 SYSTEM" "" 0 
 [STATUSBAR_STATEINFO_VD1]
@@ -560,7 +564,7 @@
 [DEBUGGER_OPTIONS]
 "" 
 [DOWNLOAD_MODULES]
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Debug_with_optimisation\RTOSDemo.abs" 0 "Elf/Dwarf2" 0 0 1 0 
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RSK_Renesas\RTOSDemo\Debug\RTOSDemo.abs" 0 "Elf/Dwarf2" 0 0 1 0 
 [CONNECT_ON_GO]
 "FALSE" 
 [DOWNLOAD_MODULES_AFTER_BUILD]
@@ -581,4 +585,5 @@
 [FLASH_DETAILS]
 "0.000000" 0 0 "" 0 "" 0 0 "" 1 1 0 0 0 0 0 "" "" "" "" "" 
 [BREAKPOINTS]
+"c:\e\dev\freertos\workingcopy\demo\rx600_rx63n-rsk_renesas\rtosdemo\renesas-files\resetprg.c" 137 -524083 1 "{00000000-0000-0000-C000-000000000046}" "" 
 [END]
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/main-blinky.c b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/main-blinky.c
index 154cd1484c..013e1452d5 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/main-blinky.c
+++ b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/main-blinky.c
@@ -52,15 +52,19 @@
 */
 
 /* 
- * This is a very simple demo that creates two tasks and one queue.  One task
- * (the queue receive task) blocks on the queue to wait for data to arrive, 
- * toggling an LED each time '100' is received.  The other task (the queue send
- * task) repeatedly blocks for a fixed period before sending '100' to the queue
- * (causing the first task to toggle the LED). 
+ * This is a very simple demo that creates two tasks, one queue, and one 
+ * software timer.  For a much more complete and complex example select either 
+ * the Debug or Debug_with_optimisation build configurations within the HEW,
+ * which build main_full.c in place of this file.
+ * 
+ * One task (the queue receive task) blocks on the queue to wait for data to 
+ * arrive, toggling LED0 each time '100' is received.  The other task (the 
+ * queue send task) repeatedly blocks for a fixed period before sending '100' 
+ * to the queue (causing the first task to toggle the LED). 
  *
- * For a much more complete and complex example select either the Debug or
- * Debug_with_optimisation build configurations within the HEW IDE. 
-*/
+ * The software timer is configured to auto-reload.  The timer callback 
+ * function periodically toggles LED1.
+ */
 
 /* Hardware specific includes. */
 #include "iodefine.h"
@@ -68,6 +72,7 @@
 /* Kernel includes. */
 #include "FreeRTOS.h"
 #include "task.h"
+#include "timers.h"
 #include "queue.h"
 
 /* Priorities at which the tasks are created. */
@@ -75,19 +80,31 @@
 #define	configQUEUE_SEND_TASK_PRIORITY		( tskIDLE_PRIORITY + 2 )
 
 /* The rate at which data is sent to the queue, specified in milliseconds. */
-#define mainQUEUE_SEND_FREQUENCY_MS			( 500 / portTICK_RATE_MS )
+#define mainQUEUE_SEND_PERIOD_MS			( 500 / portTICK_RATE_MS )
+
+/* The period of the software timer, specified in milliseconds. */
+#define mainSOFTWARE_TIMER_PERIOD_MS		( 150 / portTICK_RATE_MS )
 
 /* The number of items the queue can hold.  This is 1 as the receive task
 will remove items as they are added so the send task should always find the
 queue empty. */
 #define mainQUEUE_LENGTH					( 1 )
 
+/* The LEDs toggle by the task and timer respectively. */
+#define mainTASK_LED						( 0 )
+#define mainTIMER_LED						( 1 )
+
 /*
  * The tasks as defined at the top of this file.
  */
 static void prvQueueReceiveTask( void *pvParameters );
 static void prvQueueSendTask( void *pvParameters );
 
+/*
+ * The callback function used by the software timer.
+ */
+static void prvBlinkyTimerCallback( xTimerHandle xTimer );
+
 /* The queue used by both tasks. */
 static xQueueHandle xQueue = NULL;
 
@@ -98,22 +115,40 @@ volatile unsigned long ulHighFrequencyTickCount = 0UL;
 
 void main(void)
 {
-extern void HardwareSetup( void );
+xTimerHandle xTimer;
 
-	/* Renesas provided CPU configuration routine.  The clocks are configured in
-	here. */
-	HardwareSetup();
-	
 	/* Turn all LEDs off. */
 	vParTestInitialise();
 	
 	/* Create the queue. */
 	xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
 
+	/* Create the software timer, as described at the top of this file. */
+	xTimer = xTimerCreate( "BlinkyTimer", 					/* Just a text name to make debugging easier - not used by the scheduler. */
+							mainSOFTWARE_TIMER_PERIOD_MS, 	/* The timer period. */
+							pdTRUE, 						/* Set to pdTRUE for periodic timer, or pdFALSE for one-shot timer. */
+							NULL, 							/* The timer ID is not required. */
+							prvBlinkyTimerCallback );		/* The function executed when the timer expires. */
+							
+	if( xTimer != NULL )
+	{
+		/* Start the timer - it will not actually start running until the
+		scheduler has started.  The block time is set to 0, although, because
+		xTimerStart() is being called before the scheduler has been started,
+		the any block time specified would be ignored anyway. */
+		xTimerStart( xTimer, 0UL );
+	}
+	
 	if( xQueue != NULL )
 	{
 		/* Start the two tasks as described at the top of this file. */
-		xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL );
+		xTaskCreate( prvQueueReceiveTask, 					/* The function that implements the task. */
+					 "Rx", 									/* Just a text name to make debugging easier - not used by the scheduler. */
+					 configMINIMAL_STACK_SIZE, 				/* The size of the task stack, in words. */
+					 NULL, 									/* The task parameter is not used. */
+					 configQUEUE_RECEIVE_TASK_PRIORITY, 	/* The priority assigned to the task when it is created. */
+					 NULL );								/* The task handle is not used. */
+					 
 		xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL );
 
 		/* Start the tasks running. */
@@ -140,7 +175,7 @@ const unsigned long ulValueToSend = 100UL;
 		/* Place this task in the blocked state until it is time to run again. 
 		The block state is specified in ticks, the constant used converts ticks
 		to ms. */
-		vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS );
+		vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_PERIOD_MS );
 
 		/* 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
@@ -165,12 +200,19 @@ unsigned long ulReceivedValue;
 		value?  If it is, toggle the LED. */
 		if( ulReceivedValue == 100UL )
 		{
-			vParTestToggleLED( 0 );
+			vParTestToggleLED( mainTASK_LED );
 		}
 	}
 }
 /*-----------------------------------------------------------*/
 
+static void prvBlinkyTimerCallback( xTimerHandle xTimer )
+{
+	/* The software timer does nothing but toggle an LED. */
+	vParTestToggleLED( mainTIMER_LED );
+}
+/*-----------------------------------------------------------*/
+
 void vApplicationSetupTimerInterrupt( void )
 {
 	/* Enable compare match timer 0. */
diff --git a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/main-full.c b/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/main-full.c
index 7f8ff8b531..dfd7fc028b 100644
--- a/Demo/RX600_RX63N-RSK_Renesas/RTOSDemo/main-full.c
+++ b/Demo/RX600_RX63N-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 
+ * configuration builds main-blinky.c in place of this file.
  * ****************************************************************************
  *
  * Creates all the demo application tasks, then starts the scheduler.  The web
@@ -86,12 +87,17 @@
  * 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 - The check software timer period is initially set to five
+ * seconds.  The callback function associated with the check software timer
+ * checks that all the standard demo tasks, and the register check tasks, are
+ * not only still executing, but are executing without reporting any errors.  If
+ * the check software timer discovers that a task has either stalled, or
+ * reported an error, then it changes its own execution period from the initial
+ * five seconds, to just 200ms.  The check software timer callback function
+ * also toggles LED3 each time it is called.  This provides a visual indication 
+ * of the system status:  If LED3 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
@@ -103,7 +109,7 @@
  * optimised builds the count of high frequency ticks is used as the time base
  * for the run time stats.
  *
- * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application
+ * *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
  * tasks.  The toggle rate increasing to 200ms indicates that at least one task
  * has reported unexpected behaviour.
@@ -118,6 +124,8 @@
  *
  * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use
  * of all the 8bit timers (as two cascaded 16bit units).
+ *
+ * *
 */
 
 #include <string.h>
@@ -128,11 +136,12 @@
 /* Kernel includes. */
 #include "FreeRTOS.h"
 #include "task.h"
+#include "timers.h"
 #include "semphr.h"
 
 /* Standard demo includes. */
 #include "partest.h"
-#include "flash.h"
+#include "flash_timer.h"
 #include "IntQueue.h"
 #include "BlockQ.h"
 #include "death.h"
@@ -156,7 +165,6 @@ tasks check that the values are passed in correctly. */
 #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 )
@@ -166,18 +174,25 @@ tasks check that the values are passed in correctly. */
 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
+without error.  Controlled by the check timer as described at the top of this
 file. */
-#define mainNO_ERROR_CYCLE_TIME		( 5000 / portTICK_RATE_MS )
+#define mainNO_ERROR_CHECK_TIMER_PERIOD_MS	( 5000 / 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
+by at least one task.  Controlled by the check timer as described at the top of
 this file. */
-#define mainERROR_CYCLE_TIME		( 200 / portTICK_RATE_MS )
+#define mainERROR_CHECK_TIMER_PERIOD_MS		( 200 / portTICK_RATE_MS )
+
+/* A block time of zero simply means "don't block". */
+#define mainDONT_BLOCK	( 0UL )
+
+/* A set of timers are created, each of which toggles and LED.  This specifies
+the number of timers to create. */
+#define mainNUMBER_OF_LEDS_TO_FLASH		( 3 )
 
 /*
  * vApplicationMallocFailedHook() will only be called if
@@ -225,9 +240,9 @@ 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.
@@ -251,6 +266,7 @@ const char *pcStatusMessage = "All tasks executing without error.";
 
 void main(void)
 {
+xTimerHandle xCheckTimer;
 extern void HardwareSetup( void );
 
 	/* Turn all LEDs off. */
@@ -263,22 +279,35 @@ extern void HardwareSetup( void );
 	/* The web server task. */
 //	xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL );
 
-	/* Start the check task as described at the top of this file. */
-	xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL );
-
 	/* Create the standard demo tasks. */
 	vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
 	vCreateBlockTimeTasks();
 	vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
 	vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
 	vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY );
-	vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
-	vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY );
+	vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );	
 	vStartQueuePeekTasks();
 	vStartRecursiveMutexTasks();
 	vStartInterruptQueueTasks();
 //	vStartMathTasks( mainFLOP_TASK_PRIORITY );
 
+	/* Create the timers used to toggle the LEDs. */
+	vStartLEDFlashTimers( mainNUMBER_OF_LEDS_TO_FLASH );
+
+	/* Create the software timer that performs the 'check' functionality,
+	as described at the top of this file. */
+	xCheckTimer = xTimerCreate( "CheckTimer",							/* A text name, purely to help debugging. */
+								( mainNO_ERROR_CHECK_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. */
+							  );	
+	
+	if( xCheckTimer != NULL )
+	{
+		xTimerStart( xCheckTimer, mainDONT_BLOCK );
+	}
+
 	/* The suicide tasks must be created last as they need to know how many
 	tasks were running prior to their creation in order to ascertain whether
 	or not the correct/expected number of tasks are running at any given time. */
@@ -287,116 +316,123 @@ extern void HardwareSetup( void );
 	/* 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 scheduler will now be running, and the following line
+	will never be reached.  If the following line does execute, then there was
+	insufficient FreeRTOS heap memory available for the idle and/or timer tasks
+	to be created.  See the memory management section on the FreeRTOS web site
+	for more details. */
 	for( ;; );
 }
 /*-----------------------------------------------------------*/
 
-static void prvCheckTask( void *pvParameters )
+static void prvCheckTimerCallback( xTimerHandle xTimer )
 {
-static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;
-portTickType xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME;
-extern void vSetupHighFrequencyTimer( void );
+static long lChangedTimerPeriodAlready = pdFALSE;
+static unsigned long ulLastRegTest1CycleCount = 0, ulLastRegTest2CycleCount = 0;
+long lErrorFound = pdFALSE;
 
-	/* 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. */
+	/* 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();
-
-	for( ;; )
+	/* Check the standard demo tasks are running without error. */
+	if( xAreGenericQueueTasksStillRunning() != pdTRUE )
 	{
-		/* Place this task in the blocked state until it is time to run again. */
-		vTaskDelayUntil( &xNextWakeTime, xCycleFrequency );
-		
-		/* 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";
-		}
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: GenQueue";
+	}
+	else if( xAreQueuePeekTasksStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: QueuePeek";
+	}
+	else if( xAreBlockingQueuesStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: BlockQueue";
+	}
+	else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: BlockTime";
+	}
+	else if( xAreSemaphoreTasksStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: SemTest";
+	}
+	else if( xArePollingQueuesStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: PollQueue";
+	}
+	else if( xIsCreateTaskStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: Death";
+	}
+	else if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: IntMath";
+	}
+	else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: RecMutex";
+	}
+	else if( xAreIntQueueTasksStillRunning() != pdPASS )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: IntQueue";
+	}
 if( 0 )//		else if( xAreMathsTaskStillRunning() != pdPASS )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: Flop";
+	}
+
+	/* Check the reg test tasks are still cycling.  They will stop incrementing
+	their loop counters if they encounter an error. */
+	if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: RegTest1";
+	}
+
+	if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )
+	{
+		lErrorFound = pdTRUE;
+		pcStatusMessage = "Error: RegTest2";
+	}
+
+	ulLastRegTest1CycleCount = ulRegTest1CycleCount;
+	ulLastRegTest2CycleCount = ulRegTest2CycleCount;
+
+	/* Toggle the check LED to give an indication of the system status.  If
+	the LED toggles every mainNO_ERROR_CHECK_TIMER_PERIOD_MS milliseconds then
+	everything is ok.  A faster toggle indicates an error. */
+	vParTestToggleLED( mainCHECK_LED );	
+	
+	/* Have any errors been latch in lErrorFound?  If so, shorten the
+	period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds.
+	This will result in an increase in the rate at which mainCHECK_LED
+	toggles. */
+	if( lErrorFound != pdFALSE )
+	{
+		if( lChangedTimerPeriodAlready == pdFALSE )
 		{
-			xCycleFrequency = mainERROR_CYCLE_TIME;
-			pcStatusMessage = "Error: Flop";
+			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( xTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK );
 		}
-
-		/* 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";
-		}
-
-		if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )
-		{
-			xCycleFrequency = mainERROR_CYCLE_TIME;
-			pcStatusMessage = "Error: RegTest2";
-		}
-
-		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 );
 	}
 }
 /*-----------------------------------------------------------*/