]> git.sur5r.net Git - freertos/commitdiff
Demo tasks:
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 5 Oct 2015 15:23:09 +0000 (15:23 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 5 Oct 2015 15:23:09 +0000 (15:23 +0000)
- Complete the demo projects for the RX113 using IAR, GCC and Renesas compilers by including a basic UART CLI.

Standard demo tasks:
- Add some volatile qualifiers to variables in IntQueue.c.

git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2384 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

42 files changed:
FreeRTOS/Demo/Common/Minimal/IntQueue.c
FreeRTOS/Demo/Common/Minimal/recmutex.c
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/.HardwareDebuglinker
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/.cproject
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/.project
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/.settings/language.settings.xml
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/RTOSDemo HardwareDebug.launch
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/RTOSDemo.ewd
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/RTOSDemo.ewp
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/settings/RTOSDemo.dbgdt
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/settings/RTOSDemo.dni
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/settings/RTOSDemo.wsdt
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Blinky_Demo/main_blinky.c
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/FreeRTOSConfig.h
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Full_Demo/IntQueueTimer.c
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Full_Demo/main_full.c
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Renesas_Code/r_rsk_async.c [deleted file]
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Renesas_Code/r_rsk_async.h [deleted file]
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Renesas_Code/vector_table.c
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_macrodriver.h
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sbrk.c [deleted file]
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sbrk.h [deleted file]
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci.h
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user.c [deleted file]
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c [new file with mode: 0644]
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c [new file with mode: 0644]
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/main.c
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/.cproject
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/.project
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Blinky_Demo/main_blinky.c
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/FreeRTOSConfig.h
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Full_Demo/main_full.c
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Renesas_Code/r_rsk_async.c [deleted file]
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Renesas_Code/r_rsk_async.h [deleted file]
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci.h
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/main.c
FreeRTOS/Demo/WIN32-MSVC/DemosModifiedForLowTickRate/recmutex.c [deleted file]
FreeRTOS/Demo/WIN32-MSVC/WIN32.vcxproj
FreeRTOS/Demo/WIN32-MSVC/WIN32.vcxproj.filters
FreeRTOS/Source/portable/IAR/RX100/port.c
FreeRTOS/Source/portable/Renesas/RX100/portmacro.h

index 4a68d85adc6ae63e5dad6ab1c7f4e1eddc552de9..e97eaed6dd9f51933bfd025d4069769cf56d9661 100644 (file)
@@ -195,7 +195,7 @@ an interrupt. */
 static QueueHandle_t xNormallyEmptyQueue, xNormallyFullQueue;\r
 \r
 /* Variables used to detect a stall in one of the tasks. */\r
-static UBaseType_t uxHighPriorityLoops1 = 0, uxHighPriorityLoops2 = 0, uxLowPriorityLoops1 = 0, uxLowPriorityLoops2 = 0;\r
+static volatile UBaseType_t uxHighPriorityLoops1 = 0, uxHighPriorityLoops2 = 0, uxLowPriorityLoops1 = 0, uxLowPriorityLoops2 = 0;\r
 \r
 /* Any unexpected behaviour sets xErrorStatus to fail and log the line that\r
 caused the error in xErrorLine. */\r
@@ -207,7 +207,7 @@ static BaseType_t xWasSuspended = pdFALSE;
 \r
 /* The values that are sent to the queues.  An incremented value is sent each\r
 time to each queue. */\r
-volatile UBaseType_t uxValueForNormallyEmptyQueue = 0, uxValueForNormallyFullQueue = 0;\r
+static volatile UBaseType_t uxValueForNormallyEmptyQueue = 0, uxValueForNormallyFullQueue = 0;\r
 \r
 /* A handle to some of the tasks is required so they can be suspended/resumed. */\r
 TaskHandle_t xHighPriorityNormallyEmptyTask1, xHighPriorityNormallyEmptyTask2, xHighPriorityNormallyFullTask1, xHighPriorityNormallyFullTask2;\r
@@ -718,7 +718,6 @@ static UBaseType_t uxNextOperation = 0;
                timerNORMALLY_FULL_TX();\r
                timerNORMALLY_FULL_TX();\r
                timerNORMALLY_FULL_TX();\r
-               timerNORMALLY_FULL_TX();\r
        }\r
 \r
        return xHigherPriorityTaskWoken;\r
index f59d360d390f7e5d5174234211b1a951fd4aa5fd..f36e0b9285958eb1bb9e3b253022630c40b4bd72 100644 (file)
@@ -123,7 +123,7 @@ be overridden by a definition in FreeRTOSConfig.h. */
 #define recmuMAX_COUNT                                 ( 10 )\r
 \r
 /* Misc. */\r
-#define recmuSHORT_DELAY                               ( 20 / portTICK_PERIOD_MS )\r
+#define recmuSHORT_DELAY                               ( pdMS_TO_TICKS( 20 ) )\r
 #define recmuNO_DELAY                                  ( ( TickType_t ) 0 )\r
 #define recmuEIGHT_TICK_DELAY                  ( ( TickType_t ) 8 )\r
 \r
@@ -227,6 +227,10 @@ UBaseType_t ux;
                        {\r
                                xErrorOccurred = pdTRUE;\r
                        }\r
+\r
+                       #if( configUSE_PREEMPTION == 0 )\r
+                               taskYIELD();\r
+                       #endif\r
                }\r
 \r
                /* Having given it back the same number of times as it was taken, we\r
@@ -344,7 +348,14 @@ static void prvRecursiveMutexPollingTask( void *pvParameters )
                                error will be latched if the polling task has not returned the\r
                                mutex by the time this fixed period has expired. */\r
                                vTaskResume( xBlockingTaskHandle );\r
-                vTaskResume( xControllingTaskHandle );\r
+                               #if( configUSE_PREEMPTION == 0 )\r
+                                       taskYIELD();\r
+                               #endif\r
+\r
+                               vTaskResume( xControllingTaskHandle );\r
+                               #if( configUSE_PREEMPTION == 0 )\r
+                                       taskYIELD();\r
+                               #endif\r
 \r
                                /* The other two tasks should now have executed and no longer\r
                                be suspended. */\r
@@ -433,7 +444,7 @@ static UBaseType_t uxLastControllingCycles = 0, uxLastBlockingCycles = 0, uxLast
        }\r
        else\r
        {\r
-               xReturn = pdTRUE;\r
+               xReturn = pdPASS;\r
        }\r
 \r
        return xReturn;\r
index 8f67047ba1b69c14a031f2809ae66de563598e2f..cc70f7a084cd2a100d466caa0658d3261fe38cc4 100644 (file)
@@ -87,7 +87,7 @@
     <contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_mdata"/>\r
   </sections>\r
   <sections name=".data">\r
-    <sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="1540"/>\r
+    <sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="1796"/>\r
     <contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_data"/>\r
     <contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".data"/>\r
     <contents xsi:type="com.renesas.linkersection.model:WildCardExpression" specificSection="true" name=".data.*"/>\r
     <contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_end"/>\r
   </sections>\r
   <sections name=".ustack" isKeep="true">\r
-    <sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="1536"/>\r
+    <sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="1792"/>\r
     <contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_ustack"/>\r
   </sections>\r
   <sections name=".istack" isKeep="true">\r
-    <sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="768"/>\r
+    <sectionAddress xsi:type="com.renesas.linkersection.model:FixedAddress" fixedAddress="1024"/>\r
     <contents xsi:type="com.renesas.linkersection.model:Label" rhs="= .;" lhs="_istack"/>\r
   </sections>\r
 </com.renesas.linkersection.model:SectionContainer>\r
index 29d7efc14308dc8c07348d357dc27ac82cfc775b..34ae58d0ef8b29d2db3a204c98926cf2063ce318 100644 (file)
@@ -49,6 +49,7 @@
                                                                <option id="com.renesas.cdt.core.Compiler.option.deviceShortName.417233635" name="DeviceShortName" superClass="com.renesas.cdt.core.Compiler.option.deviceShortName" value="R5F51138AxFP" valueType="string"/>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.core.Compiler.option.includeFileDir.1240948637" name="Include file directories" superClass="com.renesas.cdt.core.Compiler.option.includeFileDir" valueType="includePath">\r
                                                                        <listOptionValue builtIn="false" value="&quot;${TCINSTALL}/rx-elf/optlibinc&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/FreeRTOS-Plus-CLI}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/GCC/RX100}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/include}&quot;"/>\r
                                                                <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.debugLevel.1132150265" name="Debug level" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.debugLevel" value="com.renesas.cdt.rx.HardwareDebug.Compiler.option.debugLevel.level3" valueType="enumerated"/>\r
                                                                <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.401905200" name="Optimization level" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel" value="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.none" valueType="enumerated"/>\r
                                                                <option id="com.renesas.cdt.core.Compiler.option.misc67.1560609407" name="Do not Inline functions early before doing `-fprofile-generate' instrumentation and real inlining pass (-fno-early-inlining)" superClass="com.renesas.cdt.core.Compiler.option.misc67" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.core.Compiler.option.misc61.1724789636" name="Disable emitting extra instructions to save and restore the registers around function calls (-fno-caller-saves )" superClass="com.renesas.cdt.core.Compiler.option.misc61" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.core.Compiler.option.misc25.1990067973" name="Don't put function addresses in registers(-fno-function-cse)" superClass="com.renesas.cdt.core.Compiler.option.misc25" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.core.Compiler.option.misc63.2081974601" name="Avoid keeping the whole uncompressed sections in memory, only retaining the compressed ones (-flto-compression-level=0)" superClass="com.renesas.cdt.core.Compiler.option.misc63" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.flto.514099016" name="Enable Link-time optimizations (-flto)" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.flto" value="false" valueType="boolean"/>\r
                                                                <inputType id="%Base.Compiler.C.InputType.Id.1426723031" name="C Input" superClass="%Base.Compiler.C.InputType.Id"/>\r
                                                                <inputType id="Base.Compiler.CPP.InputType.Id.2140325861" name="C++ Input" superClass="Base.Compiler.CPP.InputType.Id"/>\r
                                                        </tool>\r
                                                        <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id.19236880" name="Assembler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id">\r
-                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Assembler.option.dataEndian.2134524462" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Assembler.option.dataEndian" value="com.renesas.cdt.rx.HardwareDebug.Assembler.option.dataEndian.little" valueType="enumerated"/>\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Assembler.option.dataEndian.2134524462" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Assembler.option.dataEndian" value="Little-endian data" valueType="enumerated"/>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.core.Assembler.option.includeFileDirectories.1447534623" name="Include file directories" superClass="com.renesas.cdt.core.Assembler.option.includeFileDirectories" valueType="includePath">\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}/src&quot;"/>\r
                                                                </option>\r
                                                                <inputType id="%Base.Assembler.inputType.Id.1467040451" name="Assembler InputType" superClass="%Base.Assembler.inputType.Id"/>\r
                                                        </tool>\r
-                                                       <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id.564427274" name="Linker" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id">\r
-                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Linker.option.dataEndian.1575779452" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.dataEndian" value="com.renesas.cdt.rx.HardwareDebug.Linker.option.dataEndian.little" valueType="enumerated"/>\r
+                                                       <tool command="rx-elf-ld" id="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id.564427274" name="Linker" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id">\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Linker.option.dataEndian.1575779452" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.dataEndian" value="Little-endian data" valueType="enumerated"/>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveSearchDirectories.721512424" name="Archive search directories" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.archiveSearchDirectories" valueType="stringList">\r
                                                                        <listOptionValue builtIn="false" value="&quot;${CONFIGDIR}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${TCINSTALL}/lib/gcc/rx-elf/${GCC_VERSION}/no-fpu-libs&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="gcc"/>\r
                                                                </option>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.core.Linker.option.userDefinedOptions.1648005936" name="User defined options" superClass="com.renesas.cdt.core.Linker.option.userDefinedOptions" valueType="stringList">\r
-                                                                       <listOptionValue builtIn="false" value="-e_PowerON_Reset"/>\r
+                                                                       <listOptionValue builtIn="false" value="-Wl,-e_PowerON_Reset"/>\r
                                                                </option>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.core.Linker.option.linkOrderList.1612883595" name="" superClass="com.renesas.cdt.core.Linker.option.linkOrderList" valueType="stringList">\r
-                                                                       <listOptionValue builtIn="false" value="&quot;.\src\RTOSDemo.o&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;.\src\hardware_setup.o&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;.\src\interrupt_handlers.o&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;.\src\reset_program.o&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;.\src\vector_table.o&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;.\libRTOSDemo.a&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/cg_src\r_cg_cgc.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/cg_src\r_cg_cgc_user.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/cg_src\r_cg_hardware_setup.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/cg_src\r_cg_port.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/cg_src\r_cg_port_user.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/cg_src\r_cg_sci.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/cg_src\r_cg_sci_user_GCC.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Renesas_Code\interrupt_handlers.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Renesas_Code\reset_program.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Renesas_Code\vector_table.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\BlockQ.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\EventGroupsDemo.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\GenQTest.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\IntQueue.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\IntSemTest.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\QueueOverwrite.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\TaskNotify.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\TimerDemo.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\blocktim.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\countsem.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\death.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\dynamic.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\flop.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\recmutex.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/Standard_Demo_Tasks\semtest.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo/FreeRTOS-Plus-CLI\FreeRTOS_CLI.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo\IntQueueTimer.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo\RegTest_GCC.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo\Sample-CLI-commands.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo\UARTCommandConsole.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Full_Demo\main_full.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/FreeRTOS_Source/portable/MemMang\heap_4.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/FreeRTOS_Source/portable/GCC/RX100\port.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/FreeRTOS_Source\event_groups.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/FreeRTOS_Source\list.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/FreeRTOS_Source\queue.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/FreeRTOS_Source\tasks.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/FreeRTOS_Source\timers.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src/Blinky_Demo\main_blinky.o&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;.\src\main.o&quot;"/>\r
                                                                </option>\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Linker.option.linkOptimizationflto.581799385" name="Enable link-time optimizations (-flto)" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.linkOptimizationflto" value="false" valueType="boolean"/>\r
+                                                               <option command="-nostartfiles" id="com.renesas.cdt.rx.HardwareDebug.Linker.option.linkUsingGcc.1103324850" name="Link using &quot;gcc&quot; command instead of &quot;ld&quot; command" superClass="com.renesas.cdt.rx.HardwareDebug.Linker.option.linkUsingGcc" value="false" valueType="boolean"/>\r
                                                        </tool>\r
                                                        <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.objcopy.Id.634856905" name="Objcopy" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.objcopy.Id"/>\r
                                                </toolChain>\r
                                        </folderInfo>\r
-                                       <fileInfo id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.485661513.1746000023" name="RegTest_IAR.s" rcbsApplicability="disable" resourcePath="src/Full_Demo/RegTest_IAR.s" toolsToInvoke="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id.19236880.127535740">\r
-                                               <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id.19236880.127535740" name="Assembler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id.19236880"/>\r
+                                       <folderInfo id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.485661513.702678308" name="/" resourcePath="src/cg_src">\r
+                                               <toolChain id="%com.renesas.cdt.rx.hardwaredebug.win32.toolChain.Id.618147174" name="KPIT GNURX-ELF Toolchain" superClass="%com.renesas.cdt.rx.hardwaredebug.win32.toolChain.Id" unusedChildren="">\r
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE" id="com.renesas.cdt.rx.hardwaredebug.win32.targetPlatform.Id" osList="win32" superClass="com.renesas.cdt.rx.hardwaredebug.win32.targetPlatform.Id"/>\r
+                                                       <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.libgen.Id.1112916106" name="Library Generator" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.libgen.Id.2068462930"/>\r
+                                                       <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1945005018" name="Compiler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1424807284">\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.312595561" name="Optimization level" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel" value="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.speedCodeSize" valueType="enumerated"/>\r
+                                                               <option id="com.renesas.cdt.core.Compiler.option.misc61.1325218931" name="Disable emitting extra instructions to save and restore the registers around function calls (-fno-caller-saves )" superClass="com.renesas.cdt.core.Compiler.option.misc61" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.core.Compiler.option.misc25.1192094709" name="Don't put function addresses in registers(-fno-function-cse)" superClass="com.renesas.cdt.core.Compiler.option.misc25" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.core.Compiler.option.misc63.408932603" name="Avoid keeping the whole uncompressed sections in memory, only retaining the compressed ones (-flto-compression-level=0)" superClass="com.renesas.cdt.core.Compiler.option.misc63" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.flto.389571130" name="Enable Link-time optimizations (-flto)" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.flto" value="false" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.core.Compiler.option.misc67.49719833" name="Do not Inline functions early before doing `-fprofile-generate' instrumentation and real inlining pass (-fno-early-inlining)" superClass="com.renesas.cdt.core.Compiler.option.misc67" value="true" valueType="boolean"/>\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType.556980850" name="CPU type" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType" value="RX100" valueType="enumerated"/>\r
+                                                               <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian.1624388464" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian" value="Little-endian data" valueType="enumerated"/>\r
+                                                               <inputType id="%Base.Compiler.C.InputType.Id.1836594921" name="C Input" superClass="%Base.Compiler.C.InputType.Id"/>\r
+                                                               <inputType id="Base.Compiler.CPP.InputType.Id.1049685798" name="C++ Input" superClass="Base.Compiler.CPP.InputType.Id"/>\r
+                                                       </tool>\r
+                                                       <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id.482302878" name="Assembler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.assembler.Id.19236880">\r
+                                                               <inputType id="%Base.Assembler.inputType.Id.427384685" name="Assembler InputType" superClass="%Base.Assembler.inputType.Id"/>\r
+                                                       </tool>\r
+                                                       <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id.1153111216" name="Linker" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.linker.Id.564427274"/>\r
+                                                       <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.objcopy.Id.1747324511" name="Objcopy" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.objcopy.Id.634856905"/>\r
+                                               </toolChain>\r
+                                       </folderInfo>\r
+                                       <fileInfo id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.485661513.1042285317" name="IntQueue.c" rcbsApplicability="disable" resourcePath="src/Full_Demo/Standard_Demo_Tasks/IntQueue.c" toolsToInvoke="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1424807284.173350745">\r
+                                               <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1424807284.173350745" name="Compiler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1424807284">\r
+                                                       <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType.1173619311" name="CPU type" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType" value="RX100" valueType="enumerated"/>\r
+                                                       <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian.438635862" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian" value="Little-endian data" valueType="enumerated"/>\r
+                                                       <inputType id="%Base.Compiler.C.InputType.Id.1696311581" name="C Input" superClass="%Base.Compiler.C.InputType.Id"/>\r
+                                                       <inputType id="Base.Compiler.CPP.InputType.Id.393257669" name="C++ Input" superClass="Base.Compiler.CPP.InputType.Id"/>\r
+                                               </tool>\r
+                                               <tool customBuildStep="true" id="org.eclipse.cdt.managedbuilder.ui.rcbs.553315713" name="Resource Custom Build Step">\r
+                                                       <inputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.inputtype.1263892143" name="Resource Custom Build Step Input Type">\r
+                                                               <additionalInput kind="additionalinputdependency"/>\r
+                                                       </inputType>\r
+                                                       <outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1910448590" name="Resource Custom Build Step Output Type"/>\r
+                                               </tool>\r
+                                       </fileInfo>\r
+                                       <fileInfo id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.485661513.498883362" name="IntQueueTimer.c" rcbsApplicability="disable" resourcePath="src/Full_Demo/IntQueueTimer.c" toolsToInvoke="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1424807284.820409184">\r
+                                               <tool id="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1424807284.820409184" name="Compiler" superClass="com.renesas.cdt.rx.hardwaredebug.win32.tool.compiler.Id.1424807284">\r
+                                                       <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.445152985" name="Optimization level" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel" value="com.renesas.cdt.rx.HardwareDebug.Compiler.option.optimizationLevel.speedCodeSize" valueType="enumerated"/>\r
+                                                       <option id="com.renesas.cdt.core.Compiler.option.misc61.351049028" name="Disable emitting extra instructions to save and restore the registers around function calls (-fno-caller-saves )" superClass="com.renesas.cdt.core.Compiler.option.misc61" value="false" valueType="boolean"/>\r
+                                                       <option id="com.renesas.cdt.core.Compiler.option.misc25.20109428" name="Don't put function addresses in registers(-fno-function-cse)" superClass="com.renesas.cdt.core.Compiler.option.misc25" value="false" valueType="boolean"/>\r
+                                                       <option id="com.renesas.cdt.core.Compiler.option.misc63.1500858220" name="Avoid keeping the whole uncompressed sections in memory, only retaining the compressed ones (-flto-compression-level=0)" superClass="com.renesas.cdt.core.Compiler.option.misc63" value="false" valueType="boolean"/>\r
+                                                       <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.flto.1392792373" name="Enable Link-time optimizations (-flto)" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.flto" value="false" valueType="boolean"/>\r
+                                                       <option id="com.renesas.cdt.core.Compiler.option.misc67.832633692" name="Do not Inline functions early before doing `-fprofile-generate' instrumentation and real inlining pass (-fno-early-inlining)" superClass="com.renesas.cdt.core.Compiler.option.misc67" value="true" valueType="boolean"/>\r
+                                                       <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType.1973833273" name="CPU type" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.cpuType" value="RX100" valueType="enumerated"/>\r
+                                                       <option id="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian.1233319758" name="Data Endian" superClass="com.renesas.cdt.rx.HardwareDebug.Compiler.option.dataEndian" value="Little-endian data" valueType="enumerated"/>\r
+                                                       <inputType id="%Base.Compiler.C.InputType.Id.1583671307" name="C Input" superClass="%Base.Compiler.C.InputType.Id"/>\r
+                                                       <inputType id="Base.Compiler.CPP.InputType.Id.61282871" name="C++ Input" superClass="Base.Compiler.CPP.InputType.Id"/>\r
+                                               </tool>\r
                                        </fileInfo>\r
                                        <sourceEntries>\r
-                                               <entry excluding="Full_Demo/RegTest_IAR.s|cg_src/r_cg_sbrk.h|cg_src/r_cg_sbrk.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>\r
+                                               <entry excluding="Full_Demo/RegTest_IAR.s" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>\r
                                        </sourceEntries>\r
                                </configuration>\r
                        </storageModule>\r
index 2aaee4c2dbc2e1f2719f58625edc9b1390d062f2..f80c01262407558423f55801e4b39ef468d5aa52 100644 (file)
                        <type>2</type>\r
                        <locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI>\r
                </link>\r
+               <link>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>2</type>\r
+                       <locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI</locationURI>\r
+               </link>\r
+               <link>\r
+                       <name>src/Full_Demo/Sample-CLI-commands.c</name>\r
+                       <type>1</type>\r
+                       <locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/Sample-CLI-commands.c</locationURI>\r
+               </link>\r
                <link>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>2</type>\r
                        <locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI>\r
                </link>\r
+               <link>\r
+                       <name>src/Full_Demo/UARTCommandConsole.c</name>\r
+                       <type>1</type>\r
+                       <locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/UARTCommandConsole.c</locationURI>\r
+               </link>\r
                <link>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks/include</name>\r
                        <type>2</type>\r
@@ -43,7 +58,7 @@
        </linkedResources>\r
        <filteredResources>\r
                <filter>\r
-                       <id>1442930329366</id>\r
+                       <id>1443980078370</id>\r
                        <name></name>\r
                        <type>10</type>\r
                        <matcher>\r
                                <arguments>1.0-name-matches-false-false-settings</arguments>\r
                        </matcher>\r
                </filter>\r
+               <filter>\r
+                       <id>1443980078370</id>\r
+                       <name></name>\r
+                       <type>6</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-RTOSDemo.dep</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443980078380</id>\r
+                       <name></name>\r
+                       <type>6</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-RTOSDemo.ew*</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443980078390</id>\r
+                       <name></name>\r
+                       <type>10</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-Debug</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443979933599</id>\r
+                       <name>src</name>\r
+                       <type>6</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-PriorityDefinitions.h</arguments>\r
+                       </matcher>\r
+               </filter>\r
                <filter>\r
                        <id>1442848178229</id>\r
                        <name>src/FreeRTOS_Source</name>\r
                                <arguments>1.0-name-matches-false-false-croutine.c</arguments>\r
                        </matcher>\r
                </filter>\r
+               <filter>\r
+                       <id>1443970320129</id>\r
+                       <name>src/cg_src</name>\r
+                       <type>6</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-*_IAR.*</arguments>\r
+                       </matcher>\r
+               </filter>\r
                <filter>\r
                        <id>1442848203356</id>\r
                        <name>src/FreeRTOS_Source/portable</name>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849604975</id>\r
+                       <id>1443970649129</id>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>5</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-FreeRTOS_CLI.h</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443970649129</id>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>5</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-*.url</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443970649139</id>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>5</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-FreeRTOS_CLI.c</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443988296032</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849604980</id>\r
+                       <id>1443988296042</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849604984</id>\r
+                       <id>1443988296042</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849604987</id>\r
+                       <id>1443988296042</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849604991</id>\r
+                       <id>1443988296052</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849604996</id>\r
+                       <id>1443988296062</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605000</id>\r
+                       <id>1443988296062</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605004</id>\r
+                       <id>1443988296072</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605009</id>\r
+                       <id>1443988296072</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605013</id>\r
+                       <id>1443988296082</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605017</id>\r
+                       <id>1443988296082</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605021</id>\r
+                       <id>1443988296092</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605026</id>\r
+                       <id>1443988296102</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442849605030</id>\r
-                       <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
-                       <type>5</type>\r
-                       <matcher>\r
-                               <id>org.eclipse.ui.ide.multiFilter</id>\r
-                               <arguments>1.0-name-matches-false-false-TimerDemo.c</arguments>\r
-                       </matcher>\r
-               </filter>\r
-               <filter>\r
-                       <id>1442849605033</id>\r
+                       <id>1443988296102</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
index 77df28c89c164065a5b3133f84272db96c263611..bf4045202258caa80d1c2ed4338bfc5dcf4d7a37 100644 (file)
@@ -3,7 +3,7 @@
        <configuration id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.485661513" name="HardwareDebug">\r
                <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">\r
                        <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>\r
-                       <provider class="com.renesas.cdt.common.build.spec.RXGCCBuiltinSpecsDetector" console="false" env-hash="-41386653944825589" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="-645709713" parameter="rx-elf-gcc -E -P -v -dD ${INPUTS}" prefer-non-shared="true">\r
+                       <provider class="com.renesas.cdt.common.build.spec.RXGCCBuiltinSpecsDetector" console="false" env-hash="-83633861543855079" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="-645709713" parameter="rx-elf-gcc -E -P -v -dD ${INPUTS}" prefer-non-shared="true">\r
                                <language-scope id="org.eclipse.cdt.core.gcc"/>\r
                                <language-scope id="org.eclipse.cdt.core.g++"/>\r
                        </provider>\r
index c236cb0a1ca36b8077335ca9e2e86e8231b8aab9..d5d5d2ae37faed9229c93c35a592cd5e4be30665 100644 (file)
@@ -62,7 +62,7 @@
 <intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>\r
-<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX113-RSK_GCC_e2studio\RTOSDemo\HardwareDebug\RTOSDemo.x"/>\r
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX100_RX113-RSK_GCC_e2studio_IAR\HardwareDebug\RTOSDemo.x"/>\r
 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>\r
 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>\r
@@ -73,7 +73,7 @@
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>\r
 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>\r
-<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX113-RSK_GCC_e2studio\RTOSDemo\HardwareDebug\RTOSDemo.x"/>\r
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX100_RX113-RSK_GCC_e2studio_IAR\HardwareDebug\RTOSDemo.x"/>\r
 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>\r
index d7d0113553e7f7c9014fe94d3a1d6a3d5d579a9b..adaf3e36dc95978c214017286cf976b071f74386 100644 (file)
       </plugin>\r
       <plugin>\r
         <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>\r
-        <loadFlag>0</loadFlag>\r
+        <loadFlag>1</loadFlag>\r
       </plugin>\r
       <plugin>\r
         <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB7_Plugin.ewplugin</file>\r
index 5cda01ab94e993fbadf003a84219e2eee195d53e..3d38821709b3835e1550258fd9483964c23fc38b 100644 (file)
         </option>\r
         <option>\r
           <name>IccOptLevel</name>\r
-          <state>1</state>\r
+          <state>0</state>\r
         </option>\r
         <option>\r
           <name>IccOptStrategy</name>\r
           <version>0</version>\r
-          <state>0</state>\r
+          <state>2</state>\r
         </option>\r
         <option>\r
           <name>IccOptLevelSlave</name>\r
-          <state>1</state>\r
+          <state>0</state>\r
         </option>\r
         <option>\r
           <name>IccOptAllowList</name>\r
           <state>$PROJ_DIR$\..\..\Source\portable\IAR\RX100</state>\r
           <state>$PROJ_DIR$\..\Common\include</state>\r
           <state>$PROJ_DIR$\src\Full_Demo</state>\r
+          <state>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI</state>\r
         </option>\r
         <option>\r
           <name>CCStdIncCheck</name>\r
     <file>\r
       <name>$PROJ_DIR$\src\cg_src\r_cg_sci.c</name>\r
     </file>\r
+    <file>\r
+      <name>$PROJ_DIR$\src\cg_src\r_cg_sci_user_IAR.c</name>\r
+    </file>\r
   </group>\r
   <group>\r
     <name>FreeRTOS_Source</name>\r
   </group>\r
   <group>\r
     <name>Full_Demo</name>\r
+    <group>\r
+      <name>FreeRTOS+CLI</name>\r
+      <file>\r
+        <name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI\FreeRTOS_CLI.c</name>\r
+      </file>\r
+    </group>\r
     <group>\r
       <name>Standard_Demo_Tasks</name>\r
       <file>\r
       <file>\r
         <name>$PROJ_DIR$\..\Common\Minimal\TaskNotify.c</name>\r
       </file>\r
-      <file>\r
-        <name>$PROJ_DIR$\..\Common\Minimal\TimerDemo.c</name>\r
-      </file>\r
     </group>\r
     <file>\r
       <name>$PROJ_DIR$\src\Full_Demo\IntQueueTimer.c</name>\r
     <file>\r
       <name>$PROJ_DIR$\src\Full_Demo\RegTest_IAR.s</name>\r
     </file>\r
+    <file>\r
+      <name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\Sample-CLI-commands.c</name>\r
+    </file>\r
+    <file>\r
+      <name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\UARTCommandConsole.c</name>\r
+    </file>\r
   </group>\r
   <file>\r
     <name>$PROJ_DIR$\src\FreeRTOSConfig.h</name>\r
index 4e6e47d94105c622d69cc5de6771705d0ef7dd63..7a4d55cfed1861981253455f0e3be3aa1cce2a2c 100644 (file)
@@ -6,20 +6,20 @@
       <Debug-Log>\r
         \r
         \r
-      <ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>\r
+      <PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>\r
       <Build>\r
         <ColumnWidth0>20</ColumnWidth0>\r
         <ColumnWidth1>1216</ColumnWidth1>\r
         <ColumnWidth2>324</ColumnWidth2>\r
         <ColumnWidth3>81</ColumnWidth3>\r
-      </Build>\r
+      <PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Debug-Log</Factory></Window></Windows></PreferedWindows></Build>\r
       <Workspace>\r
         <ColumnWidths>\r
           \r
           \r
           \r
           \r
-        <Column0>255</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>\r
+        <Column0>239</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>\r
       </Workspace>\r
       <Disassembly>\r
         <col-names>\r
           <Windows/>\r
         </PreferedWindows>\r
       </Register>\r
-    </Static>\r
+    <TASKVIEW><Column0>200</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3><Column4>100</Column4><Column5>100</Column5><Column6>100</Column6><Column7>100</Column7><Column8>150</Column8></TASKVIEW></Static>\r
     <Windows>\r
       \r
       \r
-    <Wnd2>\r
-        <Tabs>\r
-          <Tab>\r
-            <Identity>TabID-6594-3339</Identity>\r
-            <TabName>Debug Log</TabName>\r
-            <Factory>Debug-Log</Factory>\r
-            <Session/>\r
-          </Tab>\r
-          <Tab>\r
-            <Identity>TabID-6072-3348</Identity>\r
-            <TabName>Build</TabName>\r
-            <Factory>Build</Factory>\r
-            <Session/>\r
-          </Tab>\r
-        </Tabs>\r
-        \r
-      <SelectedTab>0</SelectedTab></Wnd2><Wnd3>\r
+    <Wnd0>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-17343-3342</Identity>\r
             <Factory>Workspace</Factory>\r
             <Session>\r
               \r
-            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode></NodeDict></Session>\r
+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo/Standard_Demo_Tasks</ExpandedNode></NodeDict></Session>\r
           </Tab>\r
         </Tabs>\r
         \r
-      <SelectedTab>0</SelectedTab></Wnd3></Windows>\r
+      <SelectedTab>0</SelectedTab></Wnd0><Wnd2><Tabs><Tab><Identity>TabID-12090-10424</Identity><TabName>Tasks</TabName><Factory>TASKVIEW</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd2></Windows>\r
     <Editor>\r
       \r
       \r
       \r
       \r
-    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>111</YPos2><SelStart2>6264</SelStart2><SelEnd2>6264</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
+    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>124</YPos2><SelStart2>6239</SelStart2><SelEnd2>6239</SelEnd2></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Full_Demo\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>190</YPos2><SelStart2>11132</SelStart2><SelEnd2>11132</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\IntQueue.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>697</YPos2><SelStart2>26662</SelStart2><SelEnd2>26662</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\tasks.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>3309</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\QueueOverwrite.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>213</YPos2><SelStart2>8115</SelStart2><SelEnd2>8115</SelEnd2></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
     <Positions>\r
       \r
       \r
       \r
       \r
       \r
-    <Top><Row0><Sizes><Toolbar-00C882C0><key>iaridepm.enu1</key></Toolbar-00C882C0></Sizes></Row0><Row1><Sizes><Toolbar-1542CDB8><key>debuggergui.enu1</key></Toolbar-1542CDB8></Sizes></Row1><Row2><Sizes/></Row2></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>718</Bottom><Right>329</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>197024</sizeVertCX><sizeVertCY>731707</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+    <Top><Row0><Sizes><Toolbar-0114A4B8><key>iaridepm.enu1</key></Toolbar-0114A4B8><Toolbar-0CA66D80><key>debuggergui.enu1</key></Toolbar-0CA66D80></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>469</Bottom><Right>329</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>197024</sizeVertCX><sizeVertCY>478659</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>471</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>473</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>480691</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
   </Desktop>\r
 </Project>\r
 \r
index c2fb2881334d5694ba0efe90e6c9e795ba5a08a3..97d556283777860e1a8007ee7f0fc5e42a3d1b0f 100644 (file)
@@ -1,5 +1,5 @@
 [DebugChecksum]\r
-Checksum=-948946463\r
+Checksum=-1824360014\r
 [CodeCoverage]\r
 Enabled=_ 0\r
 [Stack]\r
@@ -53,116 +53,116 @@ PinMode=0
 RegMode=0\r
 Endian=0\r
 ExtMemBlockNum=55\r
-ExtMemEndian_000=0                                                                    \r
-ExtMemCondAccess_000=0                                                                    \r
-ExtMemEndian_001=0                                                                    \r
-ExtMemCondAccess_001=0                                                                    \r
-ExtMemEndian_002=0                                                                    \r
-ExtMemCondAccess_002=0                                                                    \r
-ExtMemEndian_003=0                                                                    \r
-ExtMemCondAccess_003=0                                                                    \r
-ExtMemEndian_004=0                                                                    \r
-ExtMemCondAccess_004=0                                                                    \r
-ExtMemEndian_005=0                                                                    \r
-ExtMemCondAccess_005=0                                                                    \r
-ExtMemEndian_006=0                                                                    \r
-ExtMemCondAccess_006=0                                                                    \r
-ExtMemEndian_007=0                                                                    \r
-ExtMemCondAccess_007=0                                                                    \r
-ExtMemEndian_008=0                                                                    \r
-ExtMemCondAccess_008=0                                                                    \r
-ExtMemEndian_009=0                                                                    \r
-ExtMemCondAccess_009=0                                                                    \r
-ExtMemEndian_010=0                                                                    \r
-ExtMemCondAccess_010=0                                                                    \r
-ExtMemEndian_011=0                                                                    \r
-ExtMemCondAccess_011=0                                                                    \r
-ExtMemEndian_012=0                                                                    \r
-ExtMemCondAccess_012=0                                                                    \r
-ExtMemEndian_013=0                                                                    \r
-ExtMemCondAccess_013=0                                                                    \r
-ExtMemEndian_014=0                                                                    \r
-ExtMemCondAccess_014=0                                                                    \r
-ExtMemEndian_015=0                                                                    \r
-ExtMemCondAccess_015=0                                                                    \r
-ExtMemEndian_016=0                                                                    \r
-ExtMemCondAccess_016=0                                                                    \r
-ExtMemEndian_017=0                                                                    \r
-ExtMemCondAccess_017=0                                                                    \r
-ExtMemEndian_018=0                                                                    \r
-ExtMemCondAccess_018=0                                                                    \r
-ExtMemEndian_019=0                                                                    \r
-ExtMemCondAccess_019=0                                                                    \r
-ExtMemEndian_020=0                                                                    \r
-ExtMemCondAccess_020=0                                                                    \r
-ExtMemEndian_021=0                                                                    \r
-ExtMemCondAccess_021=0                                                                    \r
-ExtMemEndian_022=0                                                                    \r
-ExtMemCondAccess_022=0                                                                    \r
-ExtMemEndian_023=0                                                                    \r
-ExtMemCondAccess_023=0                                                                    \r
-ExtMemEndian_024=0                                                                    \r
-ExtMemCondAccess_024=0                                                                    \r
-ExtMemEndian_025=0                                                                    \r
-ExtMemCondAccess_025=0                                                                    \r
-ExtMemEndian_026=0                                                                    \r
-ExtMemCondAccess_026=0                                                                    \r
-ExtMemEndian_027=0                                                                    \r
-ExtMemCondAccess_027=0                                                                    \r
-ExtMemEndian_028=0                                                                    \r
-ExtMemCondAccess_028=0                                                                    \r
-ExtMemEndian_029=0                                                                    \r
-ExtMemCondAccess_029=0                                                                    \r
-ExtMemEndian_030=0                                                                    \r
-ExtMemCondAccess_030=0                                                                    \r
-ExtMemEndian_031=0                                                                    \r
-ExtMemCondAccess_031=0                                                                    \r
-ExtMemEndian_032=0                                                                    \r
-ExtMemCondAccess_032=0                                                                    \r
-ExtMemEndian_033=0                                                                    \r
-ExtMemCondAccess_033=0                                                                    \r
-ExtMemEndian_034=0                                                                    \r
-ExtMemCondAccess_034=0                                                                    \r
-ExtMemEndian_035=0                                                                    \r
-ExtMemCondAccess_035=0                                                                    \r
-ExtMemEndian_036=0                                                                    \r
-ExtMemCondAccess_036=0                                                                    \r
-ExtMemEndian_037=0                                                                    \r
-ExtMemCondAccess_037=0                                                                    \r
-ExtMemEndian_038=0                                                                    \r
-ExtMemCondAccess_038=0                                                                    \r
-ExtMemEndian_039=0                                                                    \r
-ExtMemCondAccess_039=0                                                                    \r
-ExtMemEndian_040=0                                                                    \r
-ExtMemCondAccess_040=0                                                                    \r
-ExtMemEndian_041=0                                                                    \r
-ExtMemCondAccess_041=0                                                                    \r
-ExtMemEndian_042=0                                                                    \r
-ExtMemCondAccess_042=0                                                                    \r
-ExtMemEndian_043=0                                                                    \r
-ExtMemCondAccess_043=0                                                                    \r
-ExtMemEndian_044=0                                                                    \r
-ExtMemCondAccess_044=0                                                                    \r
-ExtMemEndian_045=0                                                                    \r
-ExtMemCondAccess_045=0                                                                    \r
-ExtMemEndian_046=0                                                                    \r
-ExtMemCondAccess_046=0                                                                    \r
-ExtMemEndian_047=0                                                                    \r
-ExtMemCondAccess_047=0                                                                    \r
-ExtMemEndian_048=0                                                                    \r
-ExtMemCondAccess_048=0                                                                    \r
-ExtMemEndian_049=0                                                                    \r
-ExtMemCondAccess_049=0                                                                    \r
-ExtMemEndian_050=0                                                                    \r
-ExtMemCondAccess_050=0                                                                    \r
-ExtMemEndian_051=0                                                                    \r
-ExtMemCondAccess_051=0                                                                    \r
-ExtMemEndian_052=0                                                                    \r
-ExtMemCondAccess_052=0                                                                    \r
-ExtMemEndian_053=0                                                                    \r
-ExtMemCondAccess_053=0                                                                    \r
-ExtMemEndian_054=0                                                                    \r
-ExtMemCondAccess_054=0                                                                    \r
+ExtMemEndian_000=0                                                                                                                        \r
+ExtMemCondAccess_000=0                                                                                                                        \r
+ExtMemEndian_001=0                                                                                                                        \r
+ExtMemCondAccess_001=0                                                                                                                        \r
+ExtMemEndian_002=0                                                                                                                        \r
+ExtMemCondAccess_002=0                                                                                                                        \r
+ExtMemEndian_003=0                                                                                                                        \r
+ExtMemCondAccess_003=0                                                                                                                        \r
+ExtMemEndian_004=0                                                                                                                        \r
+ExtMemCondAccess_004=0                                                                                                                        \r
+ExtMemEndian_005=0                                                                                                                        \r
+ExtMemCondAccess_005=0                                                                                                                        \r
+ExtMemEndian_006=0                                                                                                                        \r
+ExtMemCondAccess_006=0                                                                                                                        \r
+ExtMemEndian_007=0                                                                                                                        \r
+ExtMemCondAccess_007=0                                                                                                                        \r
+ExtMemEndian_008=0                                                                                                                        \r
+ExtMemCondAccess_008=0                                                                                                                        \r
+ExtMemEndian_009=0                                                                                                                        \r
+ExtMemCondAccess_009=0                                                                                                                        \r
+ExtMemEndian_010=0                                                                                                                        \r
+ExtMemCondAccess_010=0                                                                                                                        \r
+ExtMemEndian_011=0                                                                                                                        \r
+ExtMemCondAccess_011=0                                                                                                                        \r
+ExtMemEndian_012=0                                                                                                                        \r
+ExtMemCondAccess_012=0                                                                                                                        \r
+ExtMemEndian_013=0                                                                                                                        \r
+ExtMemCondAccess_013=0                                                                                                                        \r
+ExtMemEndian_014=0                                                                                                                        \r
+ExtMemCondAccess_014=0                                                                                                                        \r
+ExtMemEndian_015=0                                                                                                                        \r
+ExtMemCondAccess_015=0                                                                                                                        \r
+ExtMemEndian_016=0                                                                                                                        \r
+ExtMemCondAccess_016=0                                                                                                                        \r
+ExtMemEndian_017=0                                                                                                                        \r
+ExtMemCondAccess_017=0                                                                                                                        \r
+ExtMemEndian_018=0                                                                                                                        \r
+ExtMemCondAccess_018=0                                                                                                                        \r
+ExtMemEndian_019=0                                                                                                                        \r
+ExtMemCondAccess_019=0                                                                                                                        \r
+ExtMemEndian_020=0                                                                                                                        \r
+ExtMemCondAccess_020=0                                                                                                                        \r
+ExtMemEndian_021=0                                                                                                                        \r
+ExtMemCondAccess_021=0                                                                                                                        \r
+ExtMemEndian_022=0                                                                                                                        \r
+ExtMemCondAccess_022=0                                                                                                                        \r
+ExtMemEndian_023=0                                                                                                                        \r
+ExtMemCondAccess_023=0                                                                                                                        \r
+ExtMemEndian_024=0                                                                                                                        \r
+ExtMemCondAccess_024=0                                                                                                                        \r
+ExtMemEndian_025=0                                                                                                                        \r
+ExtMemCondAccess_025=0                                                                                                                        \r
+ExtMemEndian_026=0                                                                                                                        \r
+ExtMemCondAccess_026=0                                                                                                                        \r
+ExtMemEndian_027=0                                                                                                                        \r
+ExtMemCondAccess_027=0                                                                                                                        \r
+ExtMemEndian_028=0                                                                                                                        \r
+ExtMemCondAccess_028=0                                                                                                                        \r
+ExtMemEndian_029=0                                                                                                                        \r
+ExtMemCondAccess_029=0                                                                                                                        \r
+ExtMemEndian_030=0                                                                                                                        \r
+ExtMemCondAccess_030=0                                                                                                                        \r
+ExtMemEndian_031=0                                                                                                                        \r
+ExtMemCondAccess_031=0                                                                                                                        \r
+ExtMemEndian_032=0                                                                                                                        \r
+ExtMemCondAccess_032=0                                                                                                                        \r
+ExtMemEndian_033=0                                                                                                                        \r
+ExtMemCondAccess_033=0                                                                                                                        \r
+ExtMemEndian_034=0                                                                                                                        \r
+ExtMemCondAccess_034=0                                                                                                                        \r
+ExtMemEndian_035=0                                                                                                                        \r
+ExtMemCondAccess_035=0                                                                                                                        \r
+ExtMemEndian_036=0                                                                                                                        \r
+ExtMemCondAccess_036=0                                                                                                                        \r
+ExtMemEndian_037=0                                                                                                                        \r
+ExtMemCondAccess_037=0                                                                                                                        \r
+ExtMemEndian_038=0                                                                                                                        \r
+ExtMemCondAccess_038=0                                                                                                                        \r
+ExtMemEndian_039=0                                                                                                                        \r
+ExtMemCondAccess_039=0                                                                                                                        \r
+ExtMemEndian_040=0                                                                                                                        \r
+ExtMemCondAccess_040=0                                                                                                                        \r
+ExtMemEndian_041=0                                                                                                                        \r
+ExtMemCondAccess_041=0                                                                                                                        \r
+ExtMemEndian_042=0                                                                                                                        \r
+ExtMemCondAccess_042=0                                                                                                                        \r
+ExtMemEndian_043=0                                                                                                                        \r
+ExtMemCondAccess_043=0                                                                                                                        \r
+ExtMemEndian_044=0                                                                                                                        \r
+ExtMemCondAccess_044=0                                                                                                                        \r
+ExtMemEndian_045=0                                                                                                                        \r
+ExtMemCondAccess_045=0                                                                                                                        \r
+ExtMemEndian_046=0                                                                                                                        \r
+ExtMemCondAccess_046=0                                                                                                                        \r
+ExtMemEndian_047=0                                                                                                                        \r
+ExtMemCondAccess_047=0                                                                                                                        \r
+ExtMemEndian_048=0                                                                                                                        \r
+ExtMemCondAccess_048=0                                                                                                                        \r
+ExtMemEndian_049=0                                                                                                                        \r
+ExtMemCondAccess_049=0                                                                                                                        \r
+ExtMemEndian_050=0                                                                                                                        \r
+ExtMemCondAccess_050=0                                                                                                                        \r
+ExtMemEndian_051=0                                                                                                                        \r
+ExtMemCondAccess_051=0                                                                                                                        \r
+ExtMemEndian_052=0                                                                                                                        \r
+ExtMemCondAccess_052=0                                                                                                                        \r
+ExtMemEndian_053=0                                                                                                                        \r
+ExtMemCondAccess_053=0                                                                                                                        \r
+ExtMemEndian_054=0                                                                                                                        \r
+ExtMemCondAccess_054=0                                                                                                                        \r
 InputClock=16.000000\r
 ICLK=32.000000\r
 AllowClkSrcChange=1\r
@@ -220,16 +220,16 @@ UnspecRange=1
 ActionState=1\r
 [Simulator]\r
 Freq=98000000\r
+[DataSample]\r
+LogEnabled=0\r
+GraphEnabled=0\r
+ShowTimeLog=1\r
 [DriverProfiling]\r
 Enabled=0\r
 Mode=1\r
 Graph=0\r
 Symbiont=0\r
 Exclusions=\r
-[DataSample]\r
-LogEnabled=0\r
-GraphEnabled=0\r
-ShowTimeLog=1\r
 [Log file]\r
 LoggingEnabled=_ 0\r
 LogFile=_ ""\r
@@ -238,7 +238,9 @@ Category=_ 0
 LoggingEnabled=_ 0\r
 LogFile=_ ""\r
 [Breakpoints]\r
-Count=0\r
+Bp0=_ "STD_CODE" "{$PROJ_DIR$\src\Full_Demo\main_full.c}.415.4" 1 0 0 0 "" 0 ""\r
+Bp1=_ "STD_CODE" "{$PROJ_DIR$\..\Common\Minimal\IntQueue.c}.302.2" 1 0 0 0 "" 0 ""\r
+Count=2\r
 [Monitor Execution]\r
 Leave target running=0\r
 Release target=0\r
index d9c95c34c1b470dcd4da0f10f09d7be6052acbb2..dc8b9692898dad4ada46baf58829baad064df656 100644 (file)
@@ -37,7 +37,7 @@
             <Factory>Workspace</Factory>\r
             <Session>\r
               \r
-            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Blinky_Demo</ExpandedNode></NodeDict></Session>\r
+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo/Standard_Demo_Tasks</ExpandedNode></NodeDict></Session>\r
           </Tab>\r
         </Tabs>\r
         \r
       \r
       \r
       \r
-    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>111</YPos2><SelStart2>6264</SelStart2><SelEnd2>6264</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
+    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>64</YPos2><SelStart2>6239</SelStart2><SelEnd2>6239</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
     <Positions>\r
       \r
       \r
       \r
       \r
       \r
-    <Top><Row0><Sizes><Toolbar-00C882C0><key>iaridepm.enu1</key></Toolbar-00C882C0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>627</Bottom><Right>400</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>239286</sizeVertCX><sizeVertCY>639228</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>313</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>315</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>320122</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+    <Top><Row0><Sizes><Toolbar-0114A4B8><key>iaridepm.enu1</key></Toolbar-0114A4B8></Sizes></Row0><Row1><Sizes/></Row1><Row2><Sizes/></Row2></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>627</Bottom><Right>400</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>239286</sizeVertCX><sizeVertCY>639228</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>313</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>315</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>320122</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
   </Desktop>\r
 </Workspace>\r
 \r
index 9ad0a7a618eb0a1fb91bdaffc750010ea96de1ef..6ef0660f008cf383da926ed46b428938dadf9d23 100644 (file)
  *\r
  * The Queue Send Task:\r
  * The queue send task is implemented by the prvQueueSendTask() function in\r
- * this file.  prvQueueSendTask() sits in a loop that causes it to repeatedly\r
- * block for 200 milliseconds, before sending the value 100 to the queue that\r
- * was created within main_blinky().  Once the value is sent, the task loops\r
- * back around to block for another 200 milliseconds...and so on.\r
+ * this file.  It sends the value 100 to the queue every 200 milliseconds.\r
  *\r
  * The Queue Receive Task:\r
  * The queue receive task is implemented by the prvQueueReceiveTask() function\r
- * in this file.  prvQueueReceiveTask() sits in a loop where it repeatedly\r
- * blocks on attempts to read data from the queue that was created within\r
- * main_blinky().  When data is received, the task checks the value of the\r
- * data, and if the value equals the expected 100, toggles an LED.  The 'block\r
- * time' parameter passed to the queue receive function specifies that the\r
- * task should be held in the Blocked state indefinitely to wait for data to\r
- * be available on the queue.  The queue receive task will only leave the\r
- * Blocked state when the queue send task writes to the queue.  As the queue\r
- * send task writes to the queue every 200 milliseconds, the queue receive\r
- * task leaves the Blocked state every 200 milliseconds, and therefore toggles\r
- * the LED every 200 milliseconds.\r
+ * in this file.  It blocks on the queue to wait for data to arrive from the\r
+ * queue send task - toggling the LED each time it receives the value 100.  The\r
+ * queue send task writes to the queue every 200ms, so the LED should toggle\r
+ * every 200ms.\r
  */\r
 \r
 /* Kernel includes. */\r
 \r
 /* The rate at which data is sent to the queue.  The 200ms value is converted\r
 to ticks using the portTICK_PERIOD_MS constant. */\r
-#define mainQUEUE_SEND_FREQUENCY_MS                    ( 200 / portTICK_PERIOD_MS )\r
+#define mainQUEUE_SEND_FREQUENCY_MS                    ( pdMS_TO_TICKS( 200UL ) )\r
 \r
 /* The number of items the queue can hold.  This is 1 as the receive task\r
 will remove items as they are added, meaning the send task should always find\r
index 50f3250c976a40de10f7a03cef2ba970ee8aabf6..2600afee5fc653e13205b92f3e26101c764c71d5 100644 (file)
  *----------------------------------------------------------*/\r
 \r
 #define configUSE_PREEMPTION                   1\r
-#define configUSE_IDLE_HOOK                            0\r
+#define configUSE_IDLE_HOOK                            1\r
 #define configUSE_TICK_HOOK                            1\r
 #define configCPU_CLOCK_HZ                             ( 32000000 ) /* Set in mcu_info.h. */\r
 #define configPERIPHERAL_CLOCK_HZ              ( 32000000 ) /* Set in muc_info.h. */\r
 #define configTICK_RATE_HZ                             ( ( TickType_t ) 1000 )\r
-#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 125 )\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 45 * 1024 ) )\r
+#define configMAX_PRIORITIES                   ( 7 )\r
+#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 38 * 1024 ) )\r
 #define configMAX_TASK_NAME_LEN                        ( 12 )\r
 #define configUSE_TRACE_FACILITY               1\r
 #define configUSE_16_BIT_TICKS                 0\r
 #define configUSE_MALLOC_FAILED_HOOK   0\r
 #define configUSE_APPLICATION_TASK_TAG 0\r
 #define configUSE_COUNTING_SEMAPHORES  1\r
+#define configUSE_TICKLESS_IDLE                        0\r
 \r
-#define configMAX_PRIORITIES                   ( 7 )\r
-#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
+#ifdef __ICCRX__\r
+       #define configMINIMAL_STACK_SIZE                ( ( unsigned short ) 100 )\r
+#endif\r
+\r
+#ifdef __GNUC__\r
+       #define configMINIMAL_STACK_SIZE                ( ( unsigned short ) 120 )\r
+#endif\r
+/* This demo makes use of one or more example stats formatting functions.  These\r
+format the raw data provided by the uxTaskGetSystemState() function in to human\r
+readable ASCII form.  See the notes in the implementation of vTaskList() within\r
+FreeRTOS/Source/tasks.c for limitations. */\r
+#define configUSE_STATS_FORMATTING_FUNCTIONS   1\r
 \r
 /* Software timer definitions. */\r
 #define configUSE_TIMERS                               1\r
@@ -130,11 +141,11 @@ the pended interrupt.  This would normally be the lowest priority. */
 /* The maximum interrupt priority from which FreeRTOS API calls can be made.\r
 Interrupts that use a priority above this will not be effected by anything the\r
 kernel is doing. */\r
-#define configMAX_SYSCALL_INTERRUPT_PRIORITY    4\r
+#define configMAX_SYSCALL_INTERRUPT_PRIORITY    5\r
 \r
 /* Set the following definitions to 1 to include the API function, or zero\r
-to exclude the API function. */\r
-\r
+to exclude the API function - alternative just use the linker to remove unused\r
+functions - which would be normal anyway. */\r
 #define INCLUDE_vTaskPrioritySet                       1\r
 #define INCLUDE_uxTaskPriorityGet                      1\r
 #define INCLUDE_vTaskDelete                                    1\r
@@ -147,21 +158,24 @@ to exclude the API function. */
 #define INCLUDE_eTaskGetState                          1\r
 #define INCLUDE_xTimerPendFunctionCall         1\r
 \r
+/* Assert stops the system on the line that failed the assert(), which can then\r
+be viewed by pausing the debugger. */\r
 #define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }\r
 \r
-/* The configPRE_SLEEP_PROCESSING() and configPOST_SLEEP_PROCESSING() macros\r
-allow the application writer to add additional code before and after the MCU is\r
-placed into the low power state respectively.  The implementations provided in\r
-this demo can be extended to save even more power - for example the analog\r
-input used by the low power demo could be switched off in the pre-sleep macro\r
-and back on again in the post sleep macro. */\r
-void vPreSleepProcessing( unsigned long xExpectedIdleTime );\r
-void vPostSleepProcessing( unsigned long xExpectedIdleTime );\r
-#define configPRE_SLEEP_PROCESSING( xExpectedIdleTime ) vPreSleepProcessing( xExpectedIdleTime );\r
-#define configPOST_SLEEP_PROCESSING( xExpectedIdleTime ) vPostSleepProcessing( xExpectedIdleTime );\r
+/* The buffer into which output generated by FreeRTOS+CLI is placed.  This must\r
+be at least big enough to contain the output of the task-stats command, as the\r
+example implementation does not include buffer overlow checking. */\r
+#define configCOMMAND_INT_MAX_OUTPUT_SIZE      3500\r
+#define configINCLUDE_QUERY_HEAP_COMMAND       1\r
 \r
 /* configTICK_VECTOR must be set to the interrupt vector used by the peripheral\r
 that generates the tick interrupt. */\r
 #define configTICK_VECTOR VECT_CMT0_CMI0\r
 \r
+/* Override some of the priorities set in the common demo tasks.  This is\r
+required to ensure false positive timing errors are not reported. */\r
+#define bktPRIMARY_PRIORITY            ( configMAX_PRIORITIES - 3 )\r
+#define bktSECONDARY_PRIORITY  ( configMAX_PRIORITIES - 4 )\r
+#define intqHIGHER_PRIORITY            ( configMAX_PRIORITIES - 3 )\r
+\r
 #endif /* FREERTOS_CONFIG_H */\r
index 5fc16a55502dd8d8547b8fe0e409d9e12fffdbe1..c05f36defc6b7dc2d7af3646b8c75cfba6dc8f3a 100644 (file)
  * This file contains the non-portable and therefore RX62N specific parts of\r
  * the IntQueue standard demo task - namely the configuration of the timers\r
  * that generate the interrupts and the interrupt entry points.\r
+ *\r
+ * ***NOTE***: When using GCC it is best to compile this file with maximum speed\r
+ * optimisation - otherwise standard demo tasks that monitor their own\r
+ * performance might fail assertion tests.\r
  */\r
 \r
 /* Scheduler includes. */\r
@@ -82,7 +86,7 @@
 #include "IntQueue.h"\r
 \r
 #define tmrTIMER_0_1_FREQUENCY ( 2000UL )\r
-#define tmrTIMER_2_3_FREQUENCY ( 2111UL )\r
+#define tmrTIMER_2_3_FREQUENCY ( 2007UL )\r
 \r
 void vInitialiseTimerForIntQueueTest( void )\r
 {\r
index bae60b1d335df716470e8cccb4abcdadff9ce0cc..31a1c29d5d03dd8f43c4387066d9bc83eed274b2 100644 (file)
@@ -81,7 +81,7 @@
  *\r
  ******************************************************************************\r
  *\r
- * main_full() creates all the demo application tasks and software timers, then\r
+ * main_full() creates a set of demo application tasks and software timers, then\r
  * starts the scheduler.  The web documentation provides more details of the\r
  * standard demo application tasks, which provide no particular functionality,\r
  * but do provide a good example of how to use the FreeRTOS API.\r
  * In addition to the standard demo tasks, the following tasks and tests are\r
  * defined and/or created within this file:\r
  *\r
+ * "FreeRTOS+CLI command console" -  The command console uses SCI1 for its\r
+ * input and output.  The baud rate is set to 19200.  Type "help" to see a list\r
+ * of registered commands.  The FreeRTOS+CLI license is different to the\r
+ * FreeRTOS license, see http://www.FreeRTOS.org/cli for license and usage\r
+ * details.\r
+ *\r
  * "Reg test" tasks - These fill both the core and floating point registers with\r
  * known values, then check that each register maintains its expected value for\r
  * the lifetime of the task.  Each task uses a different set of values.  The reg\r
  * error in the context switching mechanism.\r
  *\r
  * "Check" task - The check task period is initially set to three seconds.  The\r
- * task checks that all the standard demo tasks, and the register check tasks,\r
- * are not only still executing, but are executing without reporting any errors.\r
- * If the check task discovers that a task has either stalled, or reported an\r
- * error, then it changes its own execution period from the initial three\r
- * seconds, to just 200ms.  The check task also toggles an LED each time it is\r
- * called.  This provides a visual indication of the system status:  If the LED\r
- * toggles every three seconds, then no issues have been discovered.  If the LED\r
- * toggles every 200ms, then an issue has been discovered with at least one\r
- * task.\r
+ * task checks that all the standard demo tasks are not only still executing,\r
+ * but are executing without reporting any errors.  If the check task discovers\r
+ * that a task has either stalled, or reported an error, then it changes its own\r
+ * execution period from the initial three seconds, to just 200ms.  The check\r
+ * task also toggles an LED on each iteration of its loop.  This provides a\r
+ * visual indication of the system status:  If the LED toggles every three\r
+ * seconds, then no issues have been discovered.  If the LED toggles every\r
+ * 200ms, then an issue has been discovered with at least one task.\r
  */\r
 \r
 /* Standard includes. */\r
 #include "partest.h"\r
 #include "comtest2.h"\r
 #include "serial.h"\r
-#include "TimerDemo.h"\r
 #include "QueueOverwrite.h"\r
 #include "IntQueue.h"\r
 #include "EventGroupsDemo.h"\r
 #define mainCREATOR_TASK_PRIORITY                      ( tskIDLE_PRIORITY + 3UL )\r
 #define mainFLOP_TASK_PRIORITY                         ( tskIDLE_PRIORITY )\r
 #define mainUART_COMMAND_CONSOLE_STACK_SIZE    ( configMINIMAL_STACK_SIZE * 3UL )\r
-#define mainCOM_TEST_TASK_PRIORITY                     ( tskIDLE_PRIORITY + 2 )\r
 #define mainCHECK_TASK_PRIORITY                                ( configMAX_PRIORITIES - 1 )\r
 #define mainQUEUE_OVERWRITE_PRIORITY           ( tskIDLE_PRIORITY )\r
 \r
 /* The priority used by the UART command console task. */\r
-#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( configMAX_PRIORITIES - 2 )\r
-\r
-/* A block time of zero simply means "don't block". */\r
-#define mainDONT_BLOCK                                         ( 0UL )\r
+#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )\r
 \r
 /* The period after which the check timer will expire, in ms, provided no errors\r
 have been reported by any of the standard demo tasks.  ms are converted to the\r
 equivalent in ticks using the portTICK_PERIOD_MS constant. */\r
-#define mainNO_ERROR_CHECK_TASK_PERIOD         ( 3000UL / portTICK_PERIOD_MS )\r
+#define mainNO_ERROR_CHECK_TASK_PERIOD         pdMS_TO_TICKS( 3000UL )\r
 \r
 /* The period at which the check timer will expire, in ms, if an error has been\r
 reported in one of the standard demo tasks.  ms are converted to the equivalent\r
 in ticks using the portTICK_PERIOD_MS constant. */\r
-#define mainERROR_CHECK_TASK_PERIOD            ( 200UL / portTICK_PERIOD_MS )\r
+#define mainERROR_CHECK_TASK_PERIOD            pdMS_TO_TICKS( 200UL )\r
 \r
 /* Parameters that are passed into the register check tasks solely for the\r
 purpose of ensuring parameters are passed into tasks correctly. */\r
-#define mainREG_TEST_1_PARAMETER       ( ( void * ) 0x12121212UL )\r
-#define mainREG_TEST_2_PARAMETER       ( ( void * ) 0x12345678UL )\r
+#define mainREG_TEST_1_PARAMETER                       ( ( void * ) 0x12121212UL )\r
+#define mainREG_TEST_2_PARAMETER                       ( ( void * ) 0x12345678UL )\r
 \r
 /* The base period used by the timer test tasks. */\r
 #define mainTIMER_TEST_PERIOD                          ( 50 )\r
@@ -212,6 +212,17 @@ void vRegTest2Implementation( void );
  */\r
 static void prvPseudoRandomiser( void *pvParameters );\r
 \r
+/*\r
+ * Register commands that can be used with FreeRTOS+CLI.  The commands are\r
+ * defined in CLI-Commands.c and File-Related-CLI-Command.c respectively.\r
+ */\r
+extern void vRegisterSampleCLICommands( void );\r
+\r
+/*\r
+ * The task that manages the FreeRTOS+CLI input and output.\r
+ */\r
+extern void vUARTCommandConsoleStart( uint16_t usStackSize, UBaseType_t uxPriority );\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* The following two variables are used to communicate the status of the\r
@@ -220,9 +231,6 @@ then the register check tasks have not discovered any errors.  If a variable
 stops incrementing, then an error has been found. */\r
 volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;\r
 \r
-/* String for display in the web server.  It is set to an error message if the\r
-check task detects an error.  */\r
-const char *pcStatusMessage = "All tasks running without error";\r
 /*-----------------------------------------------------------*/\r
 \r
 void main_full( void )\r
@@ -238,8 +246,7 @@ void main_full( void )
        vStartGenericQueueTasks( tskIDLE_PRIORITY );\r
        vStartRecursiveMutexTasks();\r
        vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );\r
-//_RB_ vStartMathTasks( mainFLOP_TASK_PRIORITY );\r
-       vStartTimerDemoTask( mainTIMER_TEST_PERIOD );\r
+       vStartMathTasks( mainFLOP_TASK_PRIORITY );\r
        vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_PRIORITY );\r
        vStartEventGroupTasks();\r
        vStartTaskNotifyTask();\r
@@ -250,7 +257,14 @@ void main_full( void )
        xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );\r
 \r
        /* Create the task that just adds a little random behaviour. */\r
-       xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL );\r
+       xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 2, NULL );\r
+\r
+       /* Start the tasks that implements the command console on the UART, as\r
+       described above. */\r
+       vUARTCommandConsoleStart( mainUART_COMMAND_CONSOLE_STACK_SIZE, mainUART_COMMAND_CONSOLE_TASK_PRIORITY );\r
+\r
+       /* Register the standard CLI commands. */\r
+       vRegisterSampleCLICommands();\r
 \r
        /* Create the task that performs the 'check' functionality,     as described at\r
        the top of this file. */\r
@@ -308,12 +322,11 @@ unsigned long ulErrorFound = pdFALSE;
                        ulErrorFound |= 1UL << 0UL;\r
                }\r
 \r
-#ifdef _RB_\r
                if( xAreMathsTaskStillRunning() != pdTRUE )\r
                {\r
                        ulErrorFound |= 1UL << 1UL;\r
                }\r
-#endif\r
+\r
                if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )\r
                {\r
                        ulErrorFound |= 1UL << 2UL;\r
@@ -349,11 +362,6 @@ unsigned long ulErrorFound = pdFALSE;
                        ulErrorFound |= 1UL << 8UL;\r
                }\r
 \r
-               if( xAreTimerDemoTasksStillRunning( ( TickType_t ) mainNO_ERROR_CHECK_TASK_PERIOD ) != pdPASS )\r
-               {\r
-                       ulErrorFound |= 1UL << 9UL;\r
-               }\r
-\r
                if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE )\r
                {\r
                        ulErrorFound |= 1UL << 10UL;\r
@@ -405,7 +413,6 @@ unsigned long ulErrorFound = pdFALSE;
                        gone wrong (it might just be that the loop back connector required\r
                        by the comtest tasks has not been fitted). */\r
                        xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;\r
-                       pcStatusMessage = "Error found in at least one task.";\r
                }\r
        }\r
 }\r
@@ -413,7 +420,7 @@ unsigned long ulErrorFound = pdFALSE;
 \r
 static void prvPseudoRandomiser( void *pvParameters )\r
 {\r
-const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = ( 35 / portTICK_PERIOD_MS );\r
+const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = pdMS_TO_TICKS( 35 );\r
 volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;\r
 \r
        /* This task does nothing other than ensure there is a little bit of\r
@@ -440,7 +447,7 @@ volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;
                        __asm volatile( "NOP" );\r
                        __asm volatile( "NOP" );\r
                        __asm volatile( "NOP" );\r
-\r
+                       vTaskDelay( 2 );\r
                        ulValue--;\r
                }\r
        }\r
@@ -449,10 +456,6 @@ volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;
 \r
 void vFullDemoTickHook( void )\r
 {\r
-       /* The full demo includes a software timer demo/test that requires\r
-       prodding periodically from the tick interrupt. */\r
-       vTimerPeriodicISRTests();\r
-\r
        /* Call the periodic queue overwrite from ISR demo. */\r
        vQueueOverwritePeriodicISRDemo();\r
 \r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Renesas_Code/r_rsk_async.c b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Renesas_Code/r_rsk_async.c
deleted file mode 100644 (file)
index f553ede..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************\r
- * DISCLAIMER\r
- * This software is supplied by Renesas Electronics Corporation and is only\r
- * intended for use with Renesas products. No other uses are authorized. This\r
- * software is owned by Renesas Electronics Corporation and is protected under\r
- * all applicable laws, including copyright laws.\r
- * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
- * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
- * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
- * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
- * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
- * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
- * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
- * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
- * Renesas reserves the right, without notice, to make changes to this software\r
- * and to discontinue the availability of this software. By using this software,\r
- * you agree to the additional terms and conditions found by accessing the\r
- * following link:\r
- * http://www.renesas.com/disclaimer\r
- *******************************************************************************/\r
-/* Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.   */\r
-/*******************************************************************************\r
- * File Name     : r_rsk_async.c\r
- * Version       : 1.00\r
- * Device(s)     : R5F51138AxFP\r
- * Tool-Chain    : CCRX\r
- * H/W Platform  : RSKRX113\r
- * Description   : Functions used to send data via the SCI in asynchronous mode\r
- *******************************************************************************/\r
-/*******************************************************************************\r
- * History       : 26.08.2014  Ver. 1.00 First Release\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- System Includes\r
- *******************************************************************************/\r
-/* Following header file provides string type definitions. */\r
-#include <string.h>\r
-\r
-/*******************************************************************************\r
- User Includes (Project Level Includes)\r
- *******************************************************************************/\r
-/* Defines port registers */\r
-#include "r_cg_macrodriver.h"\r
-#include "r_cg_sci.h"\r
-#include "r_rsk_async.h"\r
-\r
-/*******************************************************************************\r
- User Defines\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- * Global Variables\r
- *******************************************************************************/\r
-\r
-/* Declaration of the command string to clear the terminal screen */\r
-static const char cmd_clr_scr[] =\r
-{ 27, 91, 50, 74, 0, 27, 91, 72, 0 };\r
-\r
-/*******************************************************************************\r
- * Function Prototypes\r
- *******************************************************************************/\r
-\r
-/* text_write function prototype */\r
-static void text_write (const char * const msg_string);\r
-\r
-/*******************************************************************************\r
- * Function Name: R_ASYNC_Init\r
- * Description  : This function initialises the SCI channel connected to the\r
- *                RS232 connector on the RSK. The channel is configured for\r
- *                transmission and reception, and instructions are sent to the\r
- *                terminal.\r
- * Argument     : none\r
- * Return value : none\r
- *******************************************************************************/\r
-void R_ASYNC_Init (void)\r
-{\r
-\r
-    /* Set up SCI1 receive buffer */\r
-    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
-\r
-    /* Enable SCI1 operations */\r
-    R_SCI1_Start();\r
-\r
-    /* Clear the text on terminal window */\r
-    text_write(cmd_clr_scr);\r
-\r
-    /* Display splash screen on terminal window */\r
-    text_write("Renesas RSKRX113 Async Serial \r\n");\r
-\r
-    /* Inform user on how to stop transmission */\r
-    text_write("Press 'z' to stop and any key to resume\r\n\n");\r
-}\r
-/*******************************************************************************\r
- * End of function R_ASYNC_Init\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- * Function Name : text_write\r
- * Description   : Transmits null-terminated string.\r
- * Argument      : (char*) msg_string - null terminated string\r
- * Return value  : None\r
- *******************************************************************************/\r
-static void text_write (const char * const msg_string)\r
-{\r
-    R_SCI1_AsyncTransmit((uint8_t *) msg_string, (uint16_t) strlen(msg_string));\r
-}\r
-/*******************************************************************************\r
- * End of function text_write\r
- *******************************************************************************/\r
-\r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Renesas_Code/r_rsk_async.h b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/Renesas_Code/r_rsk_async.h
deleted file mode 100644 (file)
index ffcadfe..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************\r
- * DISCLAIMER\r
- * This software is supplied by Renesas Electronics Corporation and is only\r
- * intended for use with Renesas products. No other uses are authorized. This\r
- * software is owned by Renesas Electronics Corporation and is protected under\r
- * all applicable laws, including copyright laws.\r
- * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
- * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
- * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
- * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
- * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
- * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
- * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
- * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
- * Renesas reserves the right, without notice, to make changes to this software\r
- * and to discontinue the availability of this software. By using this software,\r
- * you agree to the additional terms and conditions found by accessing the\r
- * following link:\r
- * http://www.renesas.com/disclaimer\r
- *******************************************************************************/\r
-/* Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.   */\r
-/*******************************************************************************\r
- * File Name     : r_rsk_async.h\r
- * Version       : 1.00\r
- * Device(s)     : R5F51138AxFP\r
- * Tool-Chain    : CCRX\r
- * H/W Platform  : RSKRX113\r
- * Description   : Functions used to send data via the SCI in asynchronous mode\r
- ******************************************************************************/\r
-/*******************************************************************************\r
- * History       : 26.08.2014 Ver. 1.00 First Release\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- * Macro Definitions\r
- *******************************************************************************/\r
-/* Multiple inclusion prevention macro */\r
-#ifndef R_RSK_ASYNC_H\r
-#define R_RSK_ASYNC_H\r
-\r
-/*******************************************************************************\r
- * Global Function Prototypes\r
- *******************************************************************************/\r
-/* initialise asynchronous transmission*/\r
-void R_ASYNC_Init (void);\r
-\r
-/* End of multiple inclusion prevention macro */\r
-#endif\r
-\r
index 937a79efd6486c18bbab6b52770c658a07640ff2..e3676446bf4bfb38958c189d37be2b6ff04f80f7 100644 (file)
@@ -25,6 +25,10 @@ extern void vPortSoftwareInterruptISR( void );
 extern void vPortTickISR( void );\r
 extern void vIntQTimerISR0( void );\r
 extern void vIntQTimerISR1( void );\r
+extern void r_sci1_transmit_interrupt( void );\r
+extern void r_sci1_transmitend_interrupt( void );\r
+extern void r_sci1_receive_interrupt( void );\r
+extern void r_sci1_receiveerror_interrupt( void );\r
 \r
 #define FVECT_SECT          __attribute__ ((section (".fvectors")))\r
 \r
@@ -542,13 +546,13 @@ const fp RelocatableVectors[] RVECT_SECT  = {
 //;0x0364  SCI0_TEI0\r
     (fp)INT_Excep_SCI0_TEI0,\r
 //;0x0368  SCI1_ERI1\r
-    (fp)INT_Excep_SCI1_ERI1,\r
+    (fp)r_sci1_receiveerror_interrupt,\r
 //;0x036C  SCI1_RXI1\r
-    (fp)INT_Excep_SCI1_RXI1,\r
+    (fp)r_sci1_receive_interrupt,\r
 //;0x0370  SCI1_TXI1\r
-    (fp)INT_Excep_SCI1_TXI1,\r
+    (fp)r_sci1_transmit_interrupt,\r
 //;0x0374  SCI1_TEI1\r
-    (fp)INT_Excep_SCI1_TEI1,\r
+    (fp)r_sci1_transmitend_interrupt,\r
 //;0x0378  SCI5_ERI5\r
     (fp)INT_Excep_SCI5_ERI5,\r
 //;0x037C  SCI5_RXI5\r
index 2c36af592f2a872417db6fa84e627d42ffb5381a..54abf6d043824a0644072c8e821e009f4e6ad61b 100644 (file)
@@ -32,6 +32,7 @@ Includes
 ***********************************************************************************************************************/\r
 #ifdef __ICCRX__\r
        #include <iorx113.h>\r
+       #include <stdint.h>\r
 #endif\r
 \r
 #ifdef __GNUC__\r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sbrk.c b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sbrk.c
deleted file mode 100644 (file)
index 823d383..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/***********************************************************************************************************************\r
-* DISCLAIMER\r
-* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
-* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
-* applicable laws, including copyright laws. \r
-* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
-* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
-* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
-* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
-* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
-* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
-* of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
-* following link:\r
-* http://www.renesas.com/disclaimer\r
-*\r
-* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
-***********************************************************************************************************************/\r
-\r
-/***********************************************************************************************************************\r
-* File Name    : r_cg_sbrk.c\r
-* Version      : Code Generator for RX113 V1.02.01.02 [28 May 2015]\r
-* Device(s)    : R5F51138AxFP\r
-* Tool-Chain   : CCRX\r
-* Description  : Program of sbrk.\r
-* Creation Date: 21/09/2015\r
-***********************************************************************************************************************/\r
-\r
-/***********************************************************************************************************************\r
-Pragma directive\r
-***********************************************************************************************************************/\r
-/* Start user code for pragma. Do not edit comment generated here */\r
-/* End user code. Do not edit comment generated here */\r
-\r
-/***********************************************************************************************************************\r
-Includes\r
-***********************************************************************************************************************/\r
-#include "r_cg_macrodriver.h"\r
-#include <stddef.h>\r
-#include <stdio.h>\r
-#include "r_cg_sbrk.h"\r
-#include "r_cg_userdefine.h"\r
-\r
-/***********************************************************************************************************************\r
-Global variables and functions\r
-***********************************************************************************************************************/\r
-\r
-int8_t  *sbrk(size_t size);\r
-\r
-extern int8_t *_s1ptr;\r
-\r
-union HEAP_TYPE\r
-{\r
-    int16_t  dummy ;            /* Dummy for 4-byte boundary */\r
-    int8_t heap[HEAPSIZE];      /* Declaration of the area managed by sbrk */\r
-};\r
-\r
-static union HEAP_TYPE heap_area ;\r
-\r
-/* End address allocated by sbrk    */\r
-static int8_t *brk = (int8_t *) &heap_area;\r
-\r
-/**************************************************************************/\r
-/*      sbrk:Memory area allocation                                       */\r
-/*      Return value:Start address of allocated area    (Pass)            */\r
-/*                       -1                             (Failure)         */\r
-/**************************************************************************/\r
-int8_t *sbrk(size_t size)                       /* Assigned area size   */\r
-{\r
-    int8_t  *p;\r
-\r
-    if (brk+size > heap_area.heap + HEAPSIZE)   /* Empty area size      */\r
-    {\r
-        p = (int8_t *)-1;\r
-    }\r
-    else\r
-    {\r
-        p = brk;                                /* Area assignment      */\r
-        brk += size;                            /* End address update   */\r
-    }\r
-\r
-    return p;\r
-}\r
-\r
-/* Start user code for adding. Do not edit comment generated here */\r
-/* End user code. Do not edit comment generated here */\r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sbrk.h b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sbrk.h
deleted file mode 100644 (file)
index 9840cd1..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/***********************************************************************************************************************\r
-* DISCLAIMER\r
-* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
-* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
-* applicable laws, including copyright laws. \r
-* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
-* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
-* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
-* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
-* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
-* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
-* of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
-* following link:\r
-* http://www.renesas.com/disclaimer\r
-*\r
-* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
-***********************************************************************************************************************/\r
-\r
-/***********************************************************************************************************************\r
-* File Name    : r_cg_sbrk.h\r
-* Version      : Code Generator for RX113 V1.02.01.02 [28 May 2015]\r
-* Device(s)    : R5F51138AxFP\r
-* Tool-Chain   : CCRX\r
-* Description  : Header file of sbrk file.\r
-* Creation Date: 21/09/2015\r
-***********************************************************************************************************************/\r
-#ifndef _SBRK_H\r
-#define _SBRK_H\r
-\r
-/***********************************************************************************************************************\r
-Macro definitions (Register bit)\r
-***********************************************************************************************************************/\r
-\r
-/***********************************************************************************************************************\r
-Macro definitions\r
-***********************************************************************************************************************/\r
-\r
-/***********************************************************************************************************************\r
-Typedef definitions\r
-***********************************************************************************************************************/\r
-#define HEAPSIZE        (0x400U) /* Size of area managed by sbrk */\r
-\r
-/***********************************************************************************************************************\r
-Global functions\r
-***********************************************************************************************************************/\r
-\r
-#endif
\ No newline at end of file
index e71ca6b832f9dd8415d769c775ff367735037b59..ce5376ad7fb767b77c44685471cc5f67f552b45f 100644 (file)
@@ -285,9 +285,9 @@ void R_SCI1_Start(void);
 void R_SCI1_Stop(void);\r
 MD_STATUS R_SCI1_Serial_Send(uint8_t * const tx_buf, uint16_t tx_num);\r
 MD_STATUS R_SCI1_Serial_Receive(uint8_t * const rx_buf, uint16_t rx_num);\r
-static void r_sci1_callback_transmitend(void);\r
-static void r_sci1_callback_receiveend(void);\r
-static void r_sci1_callback_receiveerror(void);\r
+void r_sci1_callback_transmitend(void);\r
+void r_sci1_callback_receiveend(void);\r
+void r_sci1_callback_receiveerror(void);\r
 \r
 /* Start user code for function. Do not edit comment generated here */\r
 \r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user.c b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user.c
deleted file mode 100644 (file)
index aec0de1..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-/***********************************************************************************************************************\r
-* DISCLAIMER\r
-* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
-* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
-* applicable laws, including copyright laws. \r
-* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
-* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
-* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
-* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
-* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
-* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
-* of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
-* following link:\r
-* http://www.renesas.com/disclaimer\r
-*\r
-* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
-***********************************************************************************************************************/\r
-\r
-/***********************************************************************************************************************\r
-* File Name    : r_cg_sci_user.c\r
-* Version      : Code Generator for RX113 V1.02.01.02 [28 May 2015]\r
-* Device(s)    : R5F51138AxFP\r
-* Tool-Chain   : CCRX\r
-* Description  : This file implements device driver for SCI module.\r
-* Creation Date: 21/09/2015\r
-***********************************************************************************************************************/\r
-\r
-/***********************************************************************************************************************\r
-Pragma directive\r
-***********************************************************************************************************************/\r
-/* Start user code for pragma. Do not edit comment generated here */\r
-/* End user code. Do not edit comment generated here */\r
-\r
-/***********************************************************************************************************************\r
-Includes\r
-***********************************************************************************************************************/\r
-#include "r_cg_macrodriver.h"\r
-#include "r_cg_sci.h"\r
-/* Start user code for include. Do not edit comment generated here */\r
-#include "rskrx113def.h"\r
-//_RB_#include "r_cg_cmt.h"\r
-/* End user code. Do not edit comment generated here */\r
-#include "r_cg_userdefine.h"\r
-\r
-/***********************************************************************************************************************\r
-Global variables and functions\r
-***********************************************************************************************************************/\r
-extern uint8_t * gp_sci1_tx_address;         /* SCI1 send buffer address */\r
-extern uint16_t  g_sci1_tx_count;            /* SCI1 send data number */\r
-extern uint8_t * gp_sci1_rx_address;         /* SCI1 receive buffer address */\r
-extern uint16_t  g_sci1_rx_count;            /* SCI1 receive data number */\r
-extern uint16_t  g_sci1_rx_length;           /* SCI1 receive data length */\r
-/* Start user code for global. Do not edit comment generated here */\r
-\r
-/* Global used to receive a character from the PC terminal */\r
-uint8_t g_rx_char;\r
-\r
-/* Flag used to control transmission to PC terminal */\r
-volatile uint8_t g_tx_flag = FALSE;\r
-\r
-/* Flag used locally to detect transmission complete */\r
-static volatile uint8_t sci1_txdone;\r
-\r
-/* End user code. Do not edit comment generated here */\r
-\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci1_transmit_interrupt\r
-* Description  : None\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-#if FAST_INTERRUPT_VECTOR == VECT_SCI1_TXI1\r
-#pragma interrupt r_sci1_transmit_interrupt(vect=VECT(SCI1,TXI1),fint)\r
-#else\r
-#pragma interrupt r_sci1_transmit_interrupt(vect=VECT(SCI1,TXI1))\r
-#endif\r
-static void r_sci1_transmit_interrupt(void)\r
-{\r
-    if (g_sci1_tx_count > 0U)\r
-    {\r
-        SCI1.TDR = *gp_sci1_tx_address;\r
-        gp_sci1_tx_address++;\r
-        g_sci1_tx_count--;\r
-    }\r
-    else \r
-    {\r
-        SCI1.SCR.BIT.TIE = 0U;\r
-        SCI1.SCR.BIT.TEIE = 1U;\r
-    }\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci1_transmitend_interrupt\r
-* Description  : None\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-#if FAST_INTERRUPT_VECTOR == VECT_SCI1_TEI1\r
-#pragma interrupt r_sci1_transmitend_interrupt(vect=VECT(SCI1,TEI1),fint)\r
-#else\r
-#pragma interrupt r_sci1_transmitend_interrupt(vect=VECT(SCI1,TEI1))\r
-#endif\r
-static void r_sci1_transmitend_interrupt(void)\r
-{\r
-    /* Set TXD1 pin */\r
-    PORT1.PMR.BYTE &= 0xBFU;\r
-    SCI1.SCR.BIT.TIE = 0U;\r
-    SCI1.SCR.BIT.TE = 0U;\r
-    SCI1.SCR.BIT.TEIE = 0U;\r
-\r
-    r_sci1_callback_transmitend();\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci1_receive_interrupt\r
-* Description  : None\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-#if FAST_INTERRUPT_VECTOR == VECT_SCI1_RXI1\r
-#pragma interrupt r_sci1_receive_interrupt(vect=VECT(SCI1,RXI1),fint)\r
-#else\r
-#pragma interrupt r_sci1_receive_interrupt(vect=VECT(SCI1,RXI1))\r
-#endif\r
-static void r_sci1_receive_interrupt(void)\r
-{\r
-    if (g_sci1_rx_length > g_sci1_rx_count)\r
-    {\r
-        *gp_sci1_rx_address = SCI1.RDR;\r
-        gp_sci1_rx_address++;\r
-        g_sci1_rx_count++;\r
-\r
-        if (g_sci1_rx_length == g_sci1_rx_count)\r
-        {\r
-            r_sci1_callback_receiveend();\r
-        }\r
-    }\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci1_receiveerror_interrupt\r
-* Description  : None\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-#if FAST_INTERRUPT_VECTOR == VECT_SCI1_ERI1\r
-#pragma interrupt r_sci1_receiveerror_interrupt(vect=VECT(SCI1,ERI1),fint)\r
-#else\r
-#pragma interrupt r_sci1_receiveerror_interrupt(vect=VECT(SCI1,ERI1))\r
-#endif\r
-static void r_sci1_receiveerror_interrupt(void)\r
-{\r
-    uint8_t err_type;\r
-\r
-    r_sci1_callback_receiveerror();\r
-\r
-    /* Clear overrun, framing and parity error flags */\r
-    err_type = SCI1.SSR.BYTE;\r
-    SCI1.SSR.BYTE = err_type & 0xC7U;\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci1_callback_transmitend\r
-* Description  : This function is a callback function when SCI1 finishes transmission.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-static void r_sci1_callback_transmitend(void)\r
-{\r
-    /* Start user code. Do not edit comment generated here */\r
-    sci1_txdone = TRUE;\r
-\r
-    /* End user code. Do not edit comment generated here */\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci1_callback_receiveend\r
-* Description  : This function is a callback function when SCI1 finishes reception.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-static void r_sci1_callback_receiveend(void)\r
-{\r
-    /* Start user code. Do not edit comment generated here */\r
-    /* Check the contents of g_rx_char */\r
-    if ('z' == g_rx_char)\r
-    {\r
-        /* Stop the timer used to control transmission to PC terminal*/\r
-//_RB_        R_CMT0_Stop();\r
-\r
-        /* Turn off LED0 and turn on LED1 to indicate serial transmission\r
-         inactive */\r
-        LED0 = LED_OFF;\r
-        LED1 = LED_ON;\r
-    }\r
-    else\r
-    {\r
-        /* Start the timer used to control transmission to PC terminal*/\r
-//_RB_        R_CMT0_Start();\r
-\r
-        /* Turn on LED0 and turn off LED1 to indicate serial transmission\r
-         active */\r
-        LED0 = LED_ON;\r
-        LED1 = LED_OFF;\r
-    }\r
-\r
-    /* Set up SCI1 receive buffer again */\r
-    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
-\r
-    /* End user code. Do not edit comment generated here */\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci1_callback_receiveerror\r
-* Description  : This function is a callback function when SCI1 reception encounters error.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-static void r_sci1_callback_receiveerror(void)\r
-{\r
-    /* Start user code. Do not edit comment generated here */\r
-    /* End user code. Do not edit comment generated here */\r
-}\r
-\r
-/* Start user code for adding. Do not edit comment generated here */\r
-/***********************************************************************************************************************\r
- * Function Name: R_SCI1_AsyncTransmit\r
- * Description  : This function sends SCI1 data and waits for the transmit end flag.\r
- * Arguments    : tx_buf -\r
- *                    transfer buffer pointer\r
- *                tx_num -\r
- *                    buffer size\r
- * Return Value : status -\r
- *                    MD_OK or MD_ARGERROR\r
- ***********************************************************************************************************************/\r
-MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)\r
-{\r
-    MD_STATUS status = MD_OK;\r
-\r
-    /* clear the flag before initiating a new transmission */\r
-    sci1_txdone = FALSE;\r
-\r
-    /* Send the data using the API */\r
-    status = R_SCI1_Serial_Send(tx_buf, tx_num);\r
-\r
-    /* Wait for the transmit end flag */\r
-    while (FALSE == sci1_txdone)\r
-    {\r
-        /* Wait */\r
-    }\r
-    return (status);\r
-}\r
-/***********************************************************************************************************************\r
- * End of function R_SCI1_AsyncTransmit\r
- ***********************************************************************************************************************/\r
-\r
-/* End user code. Do not edit comment generated here */\r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c
new file mode 100644 (file)
index 0000000..87fe5e9
--- /dev/null
@@ -0,0 +1,364 @@
+/***********************************************************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
+* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
+* applicable laws, including copyright laws. \r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
+* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
+* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
+* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
+* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
+* of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
+* following link:\r
+* http://www.renesas.com/disclaimer\r
+*\r
+* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+* File Name    : r_cg_sci_user.c\r
+* Version      : Code Generator for RX113 V1.02.01.02 [28 May 2015]\r
+* Device(s)    : R5F51138AxFP\r
+* Tool-Chain   : CCRX\r
+* Description  : This file implements device driver for SCI module.\r
+* Creation Date: 21/09/2015\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+Pragma directive\r
+***********************************************************************************************************************/\r
+/* Start user code for pragma. Do not edit comment generated here */\r
+\r
+\r
+/*\r
+ * This file originated from an example project for the RSK - it has been\r
+ * adapted to allow it to be used in the FreeRTOS demo.  Functions required by\r
+ * UARTCommandConsole.c have been added.\r
+ *\r
+ * ***NOTE***: Transmitting generates an interrupt for each character, which\r
+ * consumes    CPU time, and can cause standard demo RTOS tasks that monitor their\r
+ * own performance to fail asserts - therefore when using GCC it is best to\r
+ * compile this file with maximum speed optimisation.\r
+ */\r
+\r
+\r
+\r
+/* End user code. Do not edit comment generated here */\r
+\r
+/***********************************************************************************************************************\r
+Includes\r
+***********************************************************************************************************************/\r
+#include "r_cg_macrodriver.h"\r
+#include "r_cg_sci.h"\r
+/* Start user code for include. Do not edit comment generated here */\r
+#include "rskrx113def.h"\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "queue.h"\r
+#include "serial.h"\r
+/* End user code. Do not edit comment generated here */\r
+#include "r_cg_userdefine.h"\r
+\r
+/***********************************************************************************************************************\r
+Global variables and functions\r
+***********************************************************************************************************************/\r
+extern uint8_t * gp_sci1_tx_address;         /* SCI1 send buffer address */\r
+extern uint16_t  g_sci1_tx_count;            /* SCI1 send data number */\r
+extern uint8_t * gp_sci1_rx_address;         /* SCI1 receive buffer address */\r
+extern uint16_t  g_sci1_rx_count;            /* SCI1 receive data number */\r
+extern uint16_t  g_sci1_rx_length;           /* SCI1 receive data length */\r
+/* Start user code for global. Do not edit comment generated here */\r
+\r
+/* Global used to receive a character from the PC terminal */\r
+uint8_t g_rx_char;\r
+\r
+/* Flag used to control transmission to PC terminal */\r
+volatile uint8_t g_tx_flag = FALSE;\r
+\r
+/* Characters received from the UART are stored in this queue, ready to be\r
+received by the application.  ***NOTE*** Using a queue in this way is very\r
+convenient, but also very inefficient.  It can be used here because characters\r
+will only arrive slowly.  In a higher bandwidth system a circular RAM buffer or\r
+DMA should be used in place of this queue. */\r
+static QueueHandle_t xRxQueue = NULL;\r
+\r
+/* When a task calls vSerialPutString() its handle is stored in xSendingTask,\r
+before being placed into the Blocked state (so does not use any CPU time) to\r
+wait for the transmission to end.  The task handle is then used from the UART\r
+transmit end interrupt to remove the task from the Blocked state. */\r
+static TaskHandle_t xSendingTask = NULL;\r
+\r
+/* Flag used locally to detect transmission complete.  This is used by the\r
+auto generated API only. */\r
+static volatile uint8_t sci1_txdone;\r
+\r
+/* End user code. Do not edit comment generated here */\r
+\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_transmit_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_transmit_interrupt(void) __attribute__((interrupt));\r
+void r_sci1_transmit_interrupt(void)\r
+{\r
+    if (g_sci1_tx_count > 0U)\r
+    {\r
+        SCI1.TDR = *gp_sci1_tx_address;\r
+        gp_sci1_tx_address++;\r
+        g_sci1_tx_count--;\r
+    }\r
+    else \r
+    {\r
+        SCI1.SCR.BIT.TIE = 0U;\r
+        SCI1.SCR.BIT.TEIE = 1U;\r
+    }\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_transmitend_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_transmitend_interrupt(void) __attribute__((interrupt));\r
+void r_sci1_transmitend_interrupt(void)\r
+{\r
+    /* Set TXD1 pin */\r
+    PORT1.PMR.BYTE &= 0xBFU;\r
+    SCI1.SCR.BIT.TIE = 0U;\r
+    SCI1.SCR.BIT.TE = 0U;\r
+    SCI1.SCR.BIT.TEIE = 0U;\r
+\r
+    r_sci1_callback_transmitend();\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_receive_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_receive_interrupt(void) __attribute__((interrupt));\r
+void r_sci1_receive_interrupt(void)\r
+{\r
+    if (g_sci1_rx_length > g_sci1_rx_count)\r
+    {\r
+        *gp_sci1_rx_address = SCI1.RDR;\r
+        gp_sci1_rx_address++;\r
+        g_sci1_rx_count++;\r
+\r
+        if (g_sci1_rx_length == g_sci1_rx_count)\r
+        {\r
+            r_sci1_callback_receiveend();\r
+        }\r
+    }\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_receiveerror_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_receiveerror_interrupt(void) __attribute__((interrupt));\r
+void r_sci1_receiveerror_interrupt(void)\r
+{\r
+    uint8_t err_type;\r
+\r
+    r_sci1_callback_receiveerror();\r
+\r
+    /* Clear overrun, framing and parity error flags */\r
+    err_type = SCI1.SSR.BYTE;\r
+    SCI1.SSR.BYTE = err_type & ( uint8_t ) 0xC7;\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_callback_transmitend\r
+* Description  : This function is a callback function when SCI1 finishes transmission.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_callback_transmitend(void)\r
+{\r
+    /* Start user code. Do not edit comment generated here */\r
+       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+       /* The sci1_txdone flag is used by the auto generated API only. */\r
+       sci1_txdone = TRUE;\r
+\r
+       if( xSendingTask != NULL )\r
+       {\r
+               /* A task is waiting for the end of the Tx, unblock it now.\r
+               http://www.freertos.org/vTaskNotifyGiveFromISR.html */\r
+               vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );\r
+               xSendingTask = NULL;\r
+\r
+               portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+       }\r
+    /* End user code. Do not edit comment generated here */\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_callback_receiveend\r
+* Description  : This function is a callback function when SCI1 finishes reception.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_callback_receiveend(void)\r
+{\r
+    /* Start user code. Do not edit comment generated here */\r
+       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+    configASSERT( xRxQueue );\r
+\r
+       /* Transmitting generates an interrupt for each character, which consumes\r
+       CPU time, and can cause standard demo RTOS tasks that monitor their own\r
+       performance to fail asserts - so don't receive new CLI commands if a\r
+       transmit is not already in progress. */\r
+       if( sci1_txdone == TRUE )\r
+       {\r
+               /* Characters received from the UART are stored in this queue, ready to be\r
+               received by the application.  ***NOTE*** Using a queue in this way is very\r
+               convenient, but also very inefficient.  It can be used here because\r
+               characters will only arrive slowly.  In a higher bandwidth system a circular\r
+               RAM buffer or DMA should be used in place of this queue. */\r
+               xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );\r
+       }\r
+\r
+    /* Set up SCI1 receive buffer again */\r
+    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
+\r
+    /* See http://www.freertos.org/xQueueOverwriteFromISR.html for information\r
+    on the semantics of this ISR. */\r
+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+    /* End user code. Do not edit comment generated here */\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_callback_receiveerror\r
+* Description  : This function is a callback function when SCI1 reception encounters error.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_callback_receiveerror(void)\r
+{\r
+    /* Start user code. Do not edit comment generated here */\r
+    /* End user code. Do not edit comment generated here */\r
+}\r
+\r
+/* Start user code for adding. Do not edit comment generated here */\r
+/***********************************************************************************************************************\r
+ * Function Name: R_SCI1_AsyncTransmit\r
+ * Description  : This function sends SCI1 data and waits for the transmit end flag.\r
+ * Arguments    : tx_buf -\r
+ *                    transfer buffer pointer\r
+ *                tx_num -\r
+ *                    buffer size\r
+ * Return Value : status -\r
+ *                    MD_OK or MD_ARGERROR\r
+ ***********************************************************************************************************************/\r
+MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)\r
+{\r
+    MD_STATUS status = MD_OK;\r
+\r
+    /* clear the flag before initiating a new transmission */\r
+    sci1_txdone = FALSE;\r
+\r
+    /* Send the data using the API */\r
+    status = R_SCI1_Serial_Send(tx_buf, tx_num);\r
+\r
+    /* Wait for the transmit end flag */\r
+    while (FALSE == sci1_txdone)\r
+    {\r
+        /* Wait */\r
+    }\r
+    return (status);\r
+}\r
+/***********************************************************************************************************************\r
+ * End of function R_SCI1_AsyncTransmit\r
+ ***********************************************************************************************************************/\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )\r
+{\r
+       ( void ) ulWantedBaud;\r
+       ( void ) uxQueueLength;\r
+\r
+       /* Characters received from the UART are stored in this queue, ready to be\r
+       received by the application.  ***NOTE*** Using a queue in this way is very\r
+       convenient, but also very inefficient.  It can be used here because\r
+       characters will only arrive slowly.  In a higher bandwidth system a circular\r
+       RAM buffer or DMA should be used in place of this queue. */\r
+       xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );\r
+       configASSERT( xRxQueue );\r
+\r
+       /* Set up SCI1 receive buffer */\r
+       R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
+\r
+       /* Ensure the interrupt priority is at or below\r
+       configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
+    IPR( SCI1, ERI1 ) = configKERNEL_INTERRUPT_PRIORITY + 1;\r
+\r
+       /* Enable SCI1 operations */\r
+       R_SCI1_Start();\r
+\r
+       /* Only one UART is supported, so it doesn't matter what is returned\r
+       here. */\r
+       return 0;\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )\r
+{\r
+const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );\r
+\r
+       /* Only one port is supported. */\r
+       ( void ) pxPort;\r
+\r
+       /* Clear the flag before initiating a new transmission */\r
+       sci1_txdone = FALSE;\r
+\r
+       /* Don't send the string unless the previous string has been sent. */\r
+       if( xSendingTask == NULL )\r
+       {\r
+               /* Ensure the calling task's notification state is not already\r
+               pending. */\r
+               vTaskNotifyClear( NULL );\r
+\r
+               /* Store the handle of the transmitting task.  This is used to unblock\r
+               the task when the transmission has completed. */\r
+               xSendingTask = xTaskGetCurrentTaskHandle();\r
+\r
+               /* Send the string using the auto-generated API. */\r
+               R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );\r
+\r
+               /* Wait in the Blocked state (so not using any CPU time) until the\r
+               transmission has completed. */\r
+               ulTaskNotifyTake( pdTRUE, xMaxBlockTime );\r
+       }\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )\r
+{\r
+       /* Only one UART is supported. */\r
+       ( void ) pxPort;\r
+\r
+       /* Return a received character, if any are available.  Otherwise block to\r
+       wait for a character. */\r
+       return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )\r
+{\r
+       /* Just mapped to vSerialPutString() so the block time is not used. */\r
+       ( void ) xBlockTime;\r
+\r
+       vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );\r
+       return pdPASS;\r
+}\r
+\r
+/* End user code. Do not edit comment generated here */\r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c
new file mode 100644 (file)
index 0000000..ca57a95
--- /dev/null
@@ -0,0 +1,375 @@
+/***********************************************************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
+* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
+* applicable laws, including copyright laws. \r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
+* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
+* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
+* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
+* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
+* of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
+* following link:\r
+* http://www.renesas.com/disclaimer\r
+*\r
+* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+* File Name    : r_cg_sci_user.c\r
+* Version      : Code Generator for RX113 V1.02.01.02 [28 May 2015]\r
+* Device(s)    : R5F51138AxFP\r
+* Tool-Chain   : CCRX\r
+* Description  : This file implements device driver for SCI module.\r
+* Creation Date: 21/09/2015\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+Pragma directive\r
+***********************************************************************************************************************/\r
+/* Start user code for pragma. Do not edit comment generated here */\r
+\r
+\r
+/*\r
+ * This file originated from an example project for the RSK - it has been\r
+ * adapted to allow it to be used in the FreeRTOS demo.  Functions required by\r
+ * UARTCommandConsole.c have been added.\r
+ */\r
+\r
+\r
+\r
+/* End user code. Do not edit comment generated here */\r
+\r
+/***********************************************************************************************************************\r
+Includes\r
+***********************************************************************************************************************/\r
+#include "r_cg_macrodriver.h"\r
+#include "r_cg_sci.h"\r
+/* Start user code for include. Do not edit comment generated here */\r
+#include "rskrx113def.h"\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "queue.h"\r
+#include "serial.h"\r
+/* End user code. Do not edit comment generated here */\r
+#include "r_cg_userdefine.h"\r
+\r
+/***********************************************************************************************************************\r
+Global variables and functions\r
+***********************************************************************************************************************/\r
+extern uint8_t * gp_sci1_tx_address;         /* SCI1 send buffer address */\r
+extern uint16_t  g_sci1_tx_count;            /* SCI1 send data number */\r
+extern uint8_t * gp_sci1_rx_address;         /* SCI1 receive buffer address */\r
+extern uint16_t  g_sci1_rx_count;            /* SCI1 receive data number */\r
+extern uint16_t  g_sci1_rx_length;           /* SCI1 receive data length */\r
+/* Start user code for global. Do not edit comment generated here */\r
+\r
+/* Global used to receive a character from the PC terminal */\r
+uint8_t g_rx_char;\r
+\r
+/* Flag used to control transmission to PC terminal */\r
+volatile uint8_t g_tx_flag = FALSE;\r
+\r
+/* Characters received from the UART are stored in this queue, ready to be\r
+received by the application.  ***NOTE*** Using a queue in this way is very\r
+convenient, but also very inefficient.  It can be used here because characters\r
+will only arrive slowly.  In a higher bandwidth system a circular RAM buffer or\r
+DMA should be used in place of this queue. */\r
+static QueueHandle_t xRxQueue = NULL;\r
+\r
+/* When a task calls vSerialPutString() its handle is stored in xSendingTask,\r
+before being placed into the Blocked state (so does not use any CPU time) to\r
+wait for the transmission to end.  The task handle is then used from the UART\r
+transmit end interrupt to remove the task from the Blocked state. */\r
+static TaskHandle_t xSendingTask = NULL;\r
+\r
+/* Flag used locally to detect transmission complete.  This is used by the\r
+auto generated API only. */\r
+static volatile uint8_t sci1_txdone;\r
+\r
+/* End user code. Do not edit comment generated here */\r
+\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_transmit_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+#pragma vector = VECT_SCI1_TXI1\r
+#if FAST_INTERRUPT_VECTOR == VECT_SCI1_TXI1\r
+__fast_interrupt static void r_sci1_transmit_interrupt(void)\r
+#else\r
+__interrupt static void r_sci1_transmit_interrupt(void)\r
+#endif\r
+{\r
+    if (g_sci1_tx_count > 0U)\r
+    {\r
+        SCI1.TDR = *gp_sci1_tx_address;\r
+        gp_sci1_tx_address++;\r
+        g_sci1_tx_count--;\r
+    }\r
+    else \r
+    {\r
+        SCI1.SCR.BIT.TIE = 0U;\r
+        SCI1.SCR.BIT.TEIE = 1U;\r
+    }\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_transmitend_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+#pragma vector = VECT_SCI1_TEI1\r
+#if FAST_INTERRUPT_VECTOR == VECT_SCI1_TEI1\r
+__fast_interrupt static void r_sci1_transmitend_interrupt(void)\r
+#else\r
+__interrupt static void r_sci1_transmitend_interrupt(void)\r
+#endif\r
+{\r
+    /* Set TXD1 pin */\r
+    PORT1.PMR.BYTE &= 0xBFU;\r
+    SCI1.SCR.BIT.TIE = 0U;\r
+    SCI1.SCR.BIT.TE = 0U;\r
+    SCI1.SCR.BIT.TEIE = 0U;\r
+\r
+    r_sci1_callback_transmitend();\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_receive_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+#pragma vector = VECT_SCI1_RXI1\r
+#if FAST_INTERRUPT_VECTOR == VECT_SCI1_RXI1\r
+__fast_interrupt static void r_sci1_receive_interrupt(void)\r
+#else\r
+__interrupt static void r_sci1_receive_interrupt(void)\r
+#endif\r
+{\r
+    if (g_sci1_rx_length > g_sci1_rx_count)\r
+    {\r
+        *gp_sci1_rx_address = SCI1.RDR;\r
+        gp_sci1_rx_address++;\r
+        g_sci1_rx_count++;\r
+\r
+        if (g_sci1_rx_length == g_sci1_rx_count)\r
+        {\r
+            r_sci1_callback_receiveend();\r
+        }\r
+    }\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_receiveerror_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+#pragma vector = VECT_SCI1_ERI1\r
+#if FAST_INTERRUPT_VECTOR == VECT_SCI1_ERI1\r
+__fast_interrupt static void r_sci1_receiveerror_interrupt(void)\r
+#else\r
+__interrupt static void r_sci1_receiveerror_interrupt(void)\r
+#endif\r
+{\r
+    uint8_t err_type;\r
+\r
+    r_sci1_callback_receiveerror();\r
+\r
+    /* Clear overrun, framing and parity error flags */\r
+    err_type = SCI1.SSR.BYTE;\r
+    SCI1.SSR.BYTE = err_type & ( uint8_t ) 0xC7;\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_callback_transmitend\r
+* Description  : This function is a callback function when SCI1 finishes transmission.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_callback_transmitend(void)\r
+{\r
+    /* Start user code. Do not edit comment generated here */\r
+       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+       /* The sci1_txdone flag is used by the auto generated API only. */\r
+       sci1_txdone = TRUE;\r
+\r
+       if( xSendingTask != NULL )\r
+       {\r
+               /* A task is waiting for the end of the Tx, unblock it now.\r
+               http://www.freertos.org/vTaskNotifyGiveFromISR.html */\r
+               vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );\r
+               xSendingTask = NULL;\r
+\r
+               portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+       }\r
+    /* End user code. Do not edit comment generated here */\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_callback_receiveend\r
+* Description  : This function is a callback function when SCI1 finishes reception.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_callback_receiveend(void)\r
+{\r
+    /* Start user code. Do not edit comment generated here */\r
+       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+    configASSERT( xRxQueue );\r
+\r
+       /* Transmitting generates an interrupt for each character, which consumes\r
+       CPU time, and can cause standard demo RTOS tasks that monitor their own\r
+       performance to fail asserts - so don't receive new CLI commands if a\r
+       transmit is not already in progress. */\r
+       if( sci1_txdone == TRUE )\r
+       {\r
+               /* Characters received from the UART are stored in this queue, ready to be\r
+               received by the application.  ***NOTE*** Using a queue in this way is very\r
+               convenient, but also very inefficient.  It can be used here because\r
+               characters will only arrive slowly.  In a higher bandwidth system a circular\r
+               RAM buffer or DMA should be used in place of this queue. */\r
+               xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );\r
+       }\r
+\r
+    /* Set up SCI1 receive buffer again */\r
+    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
+\r
+    /* See http://www.freertos.org/xQueueOverwriteFromISR.html for information\r
+    on the semantics of this ISR. */\r
+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+    /* End user code. Do not edit comment generated here */\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci1_callback_receiveerror\r
+* Description  : This function is a callback function when SCI1 reception encounters error.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci1_callback_receiveerror(void)\r
+{\r
+    /* Start user code. Do not edit comment generated here */\r
+    /* End user code. Do not edit comment generated here */\r
+}\r
+\r
+/* Start user code for adding. Do not edit comment generated here */\r
+/***********************************************************************************************************************\r
+ * Function Name: R_SCI1_AsyncTransmit\r
+ * Description  : This function sends SCI1 data and waits for the transmit end flag.\r
+ * Arguments    : tx_buf -\r
+ *                    transfer buffer pointer\r
+ *                tx_num -\r
+ *                    buffer size\r
+ * Return Value : status -\r
+ *                    MD_OK or MD_ARGERROR\r
+ ***********************************************************************************************************************/\r
+MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)\r
+{\r
+    MD_STATUS status = MD_OK;\r
+\r
+    /* clear the flag before initiating a new transmission */\r
+    sci1_txdone = FALSE;\r
+\r
+    /* Send the data using the API */\r
+    status = R_SCI1_Serial_Send(tx_buf, tx_num);\r
+\r
+    /* Wait for the transmit end flag */\r
+    while (FALSE == sci1_txdone)\r
+    {\r
+        /* Wait */\r
+    }\r
+    return (status);\r
+}\r
+/***********************************************************************************************************************\r
+ * End of function R_SCI1_AsyncTransmit\r
+ ***********************************************************************************************************************/\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )\r
+{\r
+       ( void ) ulWantedBaud;\r
+       ( void ) uxQueueLength;\r
+\r
+       /* Characters received from the UART are stored in this queue, ready to be\r
+       received by the application.  ***NOTE*** Using a queue in this way is very\r
+       convenient, but also very inefficient.  It can be used here because\r
+       characters will only arrive slowly.  In a higher bandwidth system a circular\r
+       RAM buffer or DMA should be used in place of this queue. */\r
+       xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );\r
+       configASSERT( xRxQueue );\r
+\r
+       /* Set up SCI1 receive buffer */\r
+       R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
+\r
+       /* Ensure the interrupt priority is at or below\r
+       configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
+    IPR( SCI1, ERI1 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+\r
+       /* Enable SCI1 operations */\r
+       R_SCI1_Start();\r
+\r
+       /* Only one UART is supported, so it doesn't matter what is returned\r
+       here. */\r
+       return 0;\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )\r
+{\r
+const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );\r
+\r
+       /* Only one port is supported. */\r
+       ( void ) pxPort;\r
+\r
+       /* Clear the flag before initiating a new transmission */\r
+       sci1_txdone = FALSE;\r
+\r
+       /* Don't send the string unless the previous string has been sent. */\r
+       if( xSendingTask == NULL )\r
+       {\r
+               /* Ensure the calling task's notification state is not already\r
+               pending. */\r
+               vTaskNotifyClear( NULL );\r
+\r
+               /* Store the handle of the transmitting task.  This is used to unblock\r
+               the task when the transmission has completed. */\r
+               xSendingTask = xTaskGetCurrentTaskHandle();\r
+\r
+               /* Send the string using the auto-generated API. */\r
+               R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );\r
+\r
+               /* Wait in the Blocked state (so not using any CPU time) until the\r
+               transmission has completed. */\r
+               ulTaskNotifyTake( pdTRUE, xMaxBlockTime );\r
+       }\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )\r
+{\r
+       /* Only one UART is supported. */\r
+       ( void ) pxPort;\r
+\r
+       /* Return a received character, if any are available.  Otherwise block to\r
+       wait for a character. */\r
+       return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )\r
+{\r
+       /* Just mapped to vSerialPutString() so the block time is not used. */\r
+       ( void ) xBlockTime;\r
+\r
+       vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );\r
+       return pdPASS;\r
+}\r
+\r
+/* End user code. Do not edit comment generated here */\r
index d71b2f84cd47ce8d56f4607486ca5f6addd10faf..9fb989b61e13b7de949097c7c4419c8bad554654 100644 (file)
@@ -90,7 +90,6 @@
 #include "task.h"\r
 #include "semphr.h"\r
 \r
-/* Renesas includes. */\r
 /* Renesas includes. */\r
 #include <rskrx113def.h>\r
 #include "r_cg_macrodriver.h"\r
@@ -143,12 +142,15 @@ int main( void )
        }\r
        #endif\r
 \r
+       /* Should never get reached. */\r
        return 0;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 static void prvSetupHardware( void )\r
 {\r
+       /* Some hardware setup is performed before main() is called.  This routine\r
+       just ensures the LEDs start off. */\r
     LED0 = LED_OFF;\r
     LED1 = LED_OFF;\r
     LED2 = LED_OFF;\r
@@ -203,6 +205,7 @@ volatile size_t xFreeHeapSpace;
 \r
 void vApplicationTickHook( void )\r
 {\r
+       /* The tick hook is not used by the blinky demo, but is by the full demo. */\r
        #if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0\r
        {\r
                extern void vFullDemoTickHook( void );\r
@@ -214,7 +217,9 @@ void vApplicationTickHook( void )
 /*-----------------------------------------------------------*/\r
 \r
 /* The RX port uses this callback function to configure its tick interrupt.\r
-This allows the application to choose the tick interrupt source. */\r
+This allows the application to choose the tick interrupt source.\r
+***NOTE***: configTICK_VECTOR must be set in FreeRTOSConfig.h to be correct for\r
+whichever vector is used. */\r
 void vApplicationSetupTimerInterrupt( void )\r
 {\r
 const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;\r
index 60f4655ea34bafa997d6c22183d35c489c2da785..ee7e6f81f7e9516672254ad6676a864aac2183ff 100644 (file)
@@ -42,9 +42,9 @@
                                                                <option id="com.renesas.cdt.renesas.Compiler.option.deviceShortName.491615829" name="DeviceShortName" superClass="com.renesas.cdt.renesas.Compiler.option.deviceShortName" value="R5F51138AxFP" valueType="string"/>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.renesas.Compiler.option.incFileDirectories.1906083430" name="Include file directories" superClass="com.renesas.cdt.renesas.Compiler.option.incFileDirectories" valueType="includePath">\r
                                                                        <listOptionValue builtIn="false" value="&quot;${TCINSTALL}/include&quot;"/>\r
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/FreeRTOS-Plus-CLI}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/Standard_Demo_Tasks/include}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo}&quot;"/>\r
-                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Renesas_Code}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/include}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/Renesas/RX100}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>\r
                                        </fileInfo>\r
                                        <folderInfo id="com.renesas.cdt.rxc.hardwaredebug.win32.configuration.Id.941970450.497502634" name="/" resourcePath="src/FreeRTOS_Source">\r
                                                <toolChain id="com.renesas.cdt.rxc.hardwaredebug.win32.toolChain.Id.45016972" name="Renesas RXC Toolchain" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.toolChain.Id" unusedChildren="">\r
-                                                       <tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id.1830726910" name="Compiler" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id.741766106"/>\r
-                                                       <tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id.252059482" name="Assembler" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id.1503720976"/>\r
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE" id="com.renesas.cdt.rxc.hardwaredebug.win32.targetPlatform.Id" isAbstract="false" osList="win32" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.targetPlatform.Id"/>\r
+                                                       <tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id.1830726910" name="Compiler" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.compiler.Id.741766106">\r
+                                                               <inputType id="%Base.Compiler.Shc.C.Input.Id.1332314765" name="C Input" superClass="%Base.Compiler.Shc.C.Input.Id"/>\r
+                                                               <inputType id="%Base.Compiler.Shc.C.Input1.Id.1495032261" name="C++ Input" superClass="%Base.Compiler.Shc.C.Input1.Id"/>\r
+                                                       </tool>\r
+                                                       <tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id.252059482" name="Assembler" outputFlag="" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.assembler.Id.1503720976">\r
+                                                               <inputType id="%Base.Assembler.shcInputType.Id.1764572327" name="Assembler InputType" superClass="%Base.Assembler.shcInputType.Id"/>\r
+                                                       </tool>\r
                                                        <tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.linker.Id.270734961" name="Linker" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.linker.Id.1635879936"/>\r
                                                        <tool id="%com.renesas.cdt.rxc.hardwaredebug.win32.tool.libgen.Id.345810510" name="Standard Library" superClass="%com.renesas.cdt.rxc.hardwaredebug.win32.tool.libgen.Id.763608360"/>\r
                                                        <tool id="com.renesas.cdt.rxc.hardwaredebug.win32.tool.convertor.Id.2001992067" name="Converter" superClass="com.renesas.cdt.rxc.hardwaredebug.win32.tool.convertor.Id.345873254"/>\r
                                                </toolChain>\r
                                        </folderInfo>\r
                                        <sourceEntries>\r
-                                               <entry excluding="cg_src/r_cg_sbrk.h|cg_src/r_cg_sbrk.c|cg_src/r_cg_main.c|cg_src/r_cg_cmt_user.c|cg_src/r_cg_cmt.h|cg_src/r_cg_cmt.c|cg_src - Copy|r_okaya_lcd.c|cg_src_OLD|r_cg_vecttbl.c|r_cg_vect.h|r_cg_userdefine.h|r_cg_stacksct.h|r_cg_sci.h|r_cg_sci.c|r_cg_sci_user.c|r_cg_sbrk.h|r_cg_sbrk.c|r_cg_resetprg.c|r_cg_port.h|r_cg_port.c|r_cg_port_user.c|r_cg_main.c|r_cg_macrodriver.h|r_cg_lpc.h|r_cg_lpc.c|r_cg_lpc_user.c|r_cg_intprg.c|r_cg_icu.h|r_cg_icu.c|r_cg_icu_user.c|r_cg_hardware_setup.c|r_cg_dbsct.c|r_cg_cmt.h|r_cg_cmt.c|r_cg_cmt_user.c|r_cg_cgc.h|r_cg_cgc.c|r_cg_cgc_user.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>\r
+                                               <entry excluding="cg_src/r_cg_main.c|cg_src/r_cg_cmt_user.c|cg_src/r_cg_cmt.h|cg_src/r_cg_cmt.c|cg_src - Copy|r_okaya_lcd.c|cg_src_OLD|r_cg_vecttbl.c|r_cg_vect.h|r_cg_userdefine.h|r_cg_stacksct.h|r_cg_sci.h|r_cg_sci.c|r_cg_sci_user.c|r_cg_sbrk.h|r_cg_sbrk.c|r_cg_resetprg.c|r_cg_port.h|r_cg_port.c|r_cg_port_user.c|r_cg_main.c|r_cg_macrodriver.h|r_cg_lpc.h|r_cg_lpc.c|r_cg_lpc_user.c|r_cg_intprg.c|r_cg_icu.h|r_cg_icu.c|r_cg_icu_user.c|r_cg_hardware_setup.c|r_cg_dbsct.c|r_cg_cmt.h|r_cg_cmt.c|r_cg_cmt_user.c|r_cg_cgc.h|r_cg_cgc.c|r_cg_cgc_user.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>\r
                                        </sourceEntries>\r
                                </configuration>\r
                        </storageModule>\r
index b1a6edbb305e2965d26a5a7d0abc6fa1d76699dc..db6373871e8fbb79662e34c277c40038562026d5 100644 (file)
                        <type>2</type>\r
                        <locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI>\r
                </link>\r
+               <link>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>2</type>\r
+                       <locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI</locationURI>\r
+               </link>\r
+               <link>\r
+                       <name>src/Full_Demo/Sample-CLI-commands.c</name>\r
+                       <type>1</type>\r
+                       <locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/Sample-CLI-commands.c</locationURI>\r
+               </link>\r
                <link>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>2</type>\r
                        <locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI>\r
                </link>\r
+               <link>\r
+                       <name>src/Full_Demo/UARTCommandConsole.c</name>\r
+                       <type>1</type>\r
+                       <locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/UARTCommandConsole.c</locationURI>\r
+               </link>\r
                <link>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks/include</name>\r
                        <type>2</type>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201321</id>\r
+                       <id>1443945160058</id>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>5</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-*.c</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443945160058</id>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>5</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-*.h</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443945160068</id>\r
+                       <name>src/Full_Demo/FreeRTOS-Plus-CLI</name>\r
+                       <type>5</type>\r
+                       <matcher>\r
+                               <id>org.eclipse.ui.ide.multiFilter</id>\r
+                               <arguments>1.0-name-matches-false-false-*.url</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1443988432315</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201326</id>\r
+                       <id>1443988432325</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201332</id>\r
+                       <id>1443988432325</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201337</id>\r
+                       <id>1443988432335</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201342</id>\r
+                       <id>1443988432345</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201347</id>\r
+                       <id>1443988432345</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201353</id>\r
+                       <id>1443988432355</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201358</id>\r
+                       <id>1443988432365</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201363</id>\r
+                       <id>1443988432365</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201367</id>\r
+                       <id>1443988432375</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201373</id>\r
+                       <id>1443988432385</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201377</id>\r
+                       <id>1443988432395</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201382</id>\r
+                       <id>1443988432405</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1442838201387</id>\r
+                       <id>1443988432415</id>\r
                        <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
                        <type>5</type>\r
                        <matcher>\r
                                <arguments>1.0-name-matches-false-false-TaskNotify.c</arguments>\r
                        </matcher>\r
                </filter>\r
-               <filter>\r
-                       <id>1442838201391</id>\r
-                       <name>src/Full_Demo/Standard_Demo_Tasks</name>\r
-                       <type>5</type>\r
-                       <matcher>\r
-                               <id>org.eclipse.ui.ide.multiFilter</id>\r
-                               <arguments>1.0-name-matches-false-false-TimerDemo.c</arguments>\r
-                       </matcher>\r
-               </filter>\r
                <filter>\r
                        <id>1442832632368</id>\r
                        <name>src/FreeRTOS_Source/portable/MemMang</name>\r
index 9ad0a7a618eb0a1fb91bdaffc750010ea96de1ef..6ef0660f008cf383da926ed46b428938dadf9d23 100644 (file)
  *\r
  * The Queue Send Task:\r
  * The queue send task is implemented by the prvQueueSendTask() function in\r
- * this file.  prvQueueSendTask() sits in a loop that causes it to repeatedly\r
- * block for 200 milliseconds, before sending the value 100 to the queue that\r
- * was created within main_blinky().  Once the value is sent, the task loops\r
- * back around to block for another 200 milliseconds...and so on.\r
+ * this file.  It sends the value 100 to the queue every 200 milliseconds.\r
  *\r
  * The Queue Receive Task:\r
  * The queue receive task is implemented by the prvQueueReceiveTask() function\r
- * in this file.  prvQueueReceiveTask() sits in a loop where it repeatedly\r
- * blocks on attempts to read data from the queue that was created within\r
- * main_blinky().  When data is received, the task checks the value of the\r
- * data, and if the value equals the expected 100, toggles an LED.  The 'block\r
- * time' parameter passed to the queue receive function specifies that the\r
- * task should be held in the Blocked state indefinitely to wait for data to\r
- * be available on the queue.  The queue receive task will only leave the\r
- * Blocked state when the queue send task writes to the queue.  As the queue\r
- * send task writes to the queue every 200 milliseconds, the queue receive\r
- * task leaves the Blocked state every 200 milliseconds, and therefore toggles\r
- * the LED every 200 milliseconds.\r
+ * in this file.  It blocks on the queue to wait for data to arrive from the\r
+ * queue send task - toggling the LED each time it receives the value 100.  The\r
+ * queue send task writes to the queue every 200ms, so the LED should toggle\r
+ * every 200ms.\r
  */\r
 \r
 /* Kernel includes. */\r
 \r
 /* The rate at which data is sent to the queue.  The 200ms value is converted\r
 to ticks using the portTICK_PERIOD_MS constant. */\r
-#define mainQUEUE_SEND_FREQUENCY_MS                    ( 200 / portTICK_PERIOD_MS )\r
+#define mainQUEUE_SEND_FREQUENCY_MS                    ( pdMS_TO_TICKS( 200UL ) )\r
 \r
 /* The number of items the queue can hold.  This is 1 as the receive task\r
 will remove items as they are added, meaning the send task should always find\r
index 94e4d45e09d72b4f87fac93d1b1b33fc88e76014..0c8293abc3c2d4ab58b5b163112c27cf0b07962f 100644 (file)
  *----------------------------------------------------------*/\r
 \r
 #define configUSE_PREEMPTION                   1\r
-#define configUSE_IDLE_HOOK                            0\r
+#define configUSE_IDLE_HOOK                            1\r
 #define configUSE_TICK_HOOK                            1\r
 #define configCPU_CLOCK_HZ                             ( 32000000 ) /* Set in mcu_info.h. */\r
 #define configPERIPHERAL_CLOCK_HZ              ( 32000000 ) /* Set in muc_info.h. */\r
 #define configTICK_RATE_HZ                             ( ( TickType_t ) 1000 )\r
+#define configMAX_PRIORITIES                   ( 7 )\r
 #define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 100 )\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 45 * 1024 ) )\r
+#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 38 * 1024 ) )\r
 #define configMAX_TASK_NAME_LEN                        ( 12 )\r
 #define configUSE_TRACE_FACILITY               1\r
 #define configUSE_16_BIT_TICKS                 0\r
 #define configUSE_MALLOC_FAILED_HOOK   0\r
 #define configUSE_APPLICATION_TASK_TAG 0\r
 #define configUSE_COUNTING_SEMAPHORES  1\r
+#define configUSE_TICKLESS_IDLE                        0\r
 \r
-#define configMAX_PRIORITIES                   ( 7 )\r
-#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
+/* This demo makes use of one or more example stats formatting functions.  These\r
+format the raw data provided by the uxTaskGetSystemState() function in to human\r
+readable ASCII form.  See the notes in the implementation of vTaskList() within\r
+FreeRTOS/Source/tasks.c for limitations. */\r
+#define configUSE_STATS_FORMATTING_FUNCTIONS   1\r
 \r
 /* Software timer definitions. */\r
 #define configUSE_TIMERS                               1\r
-#define configTIMER_TASK_PRIORITY              ( 3 )\r
+#define configTIMER_TASK_PRIORITY              ( configMAX_PRIORITIES - 1 )\r
 #define configTIMER_QUEUE_LENGTH               5\r
 #define configTIMER_TASK_STACK_DEPTH   ( configMINIMAL_STACK_SIZE )\r
 \r
@@ -127,8 +132,8 @@ kernel is doing. */
 #define configMAX_SYSCALL_INTERRUPT_PRIORITY    4\r
 \r
 /* Set the following definitions to 1 to include the API function, or zero\r
-to exclude the API function. */\r
-\r
+to exclude the API function - alternative just use the linker to remove unused\r
+functions - which would be normal anyway. */\r
 #define INCLUDE_vTaskPrioritySet                       1\r
 #define INCLUDE_uxTaskPriorityGet                      1\r
 #define INCLUDE_vTaskDelete                                    1\r
@@ -141,18 +146,15 @@ to exclude the API function. */
 #define INCLUDE_eTaskGetState                          1\r
 #define INCLUDE_xTimerPendFunctionCall         1\r
 \r
-#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }\r
-\r
-/* The configPRE_SLEEP_PROCESSING() and configPOST_SLEEP_PROCESSING() macros\r
-allow the application writer to add additional code before and after the MCU is\r
-placed into the low power state respectively.  The implementations provided in\r
-this demo can be extended to save even more power - for example the analog\r
-input used by the low power demo could be switched off in the pre-sleep macro\r
-and back on again in the post sleep macro. */\r
-void vPreSleepProcessing( unsigned long xExpectedIdleTime );\r
-void vPostSleepProcessing( unsigned long xExpectedIdleTime );\r
-#define configPRE_SLEEP_PROCESSING( xExpectedIdleTime ) vPreSleepProcessing( xExpectedIdleTime );\r
-#define configPOST_SLEEP_PROCESSING( xExpectedIdleTime ) vPostSleepProcessing( xExpectedIdleTime );\r
+/* Assert stops the system on the line that failed the assert(), which can then\r
+be viewed by pausing the debugger. */\r
+#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); brk(); for( ;; ); }\r
+\r
+/* The buffer into which output generated by FreeRTOS+CLI is placed.  This must\r
+be at least big enough to contain the output of the task-stats command, as the\r
+example implementation does not include buffer overlow checking. */\r
+#define configCOMMAND_INT_MAX_OUTPUT_SIZE      3500\r
+#define configINCLUDE_QUERY_HEAP_COMMAND       1\r
 \r
 /* configTICK_VECTOR must be set to the interrupt vector used by the peripheral\r
 that generates the tick interrupt. */\r
index 859a90cac86c3a24b67149829f9863dc272e4942..ce18a17890eaa75206f4496acbea78860d3e06ee 100644 (file)
@@ -81,7 +81,7 @@
  *\r
  ******************************************************************************\r
  *\r
- * main_full() creates all the demo application tasks and software timers, then\r
+ * main_full() creates a set of demo application tasks and software timers, then\r
  * starts the scheduler.  The web documentation provides more details of the\r
  * standard demo application tasks, which provide no particular functionality,\r
  * but do provide a good example of how to use the FreeRTOS API.\r
  * In addition to the standard demo tasks, the following tasks and tests are\r
  * defined and/or created within this file:\r
  *\r
+ * "FreeRTOS+CLI command console" -  The command console uses SCI1 for its\r
+ * input and output.  The baud rate is set to 19200.  Type "help" to see a list\r
+ * of registered commands.  The FreeRTOS+CLI license is different to the\r
+ * FreeRTOS license, see http://www.FreeRTOS.org/cli for license and usage\r
+ * details.\r
+ *\r
  * "Reg test" tasks - These fill both the core and floating point registers with\r
  * known values, then check that each register maintains its expected value for\r
  * the lifetime of the task.  Each task uses a different set of values.  The reg\r
  * error in the context switching mechanism.\r
  *\r
  * "Check" task - The check task period is initially set to three seconds.  The\r
- * task checks that all the standard demo tasks, and the register check tasks,\r
- * are not only still executing, but are executing without reporting any errors.\r
- * If the check task discovers that a task has either stalled, or reported an\r
- * error, then it changes its own execution period from the initial three\r
- * seconds, to just 200ms.  The check task also toggles an LED each time it is\r
- * called.  This provides a visual indication of the system status:  If the LED\r
- * toggles every three seconds, then no issues have been discovered.  If the LED\r
- * toggles every 200ms, then an issue has been discovered with at least one\r
- * task.\r
+ * task checks that all the standard demo tasks are not only still executing,\r
+ * but are executing without reporting any errors.  If the check task discovers\r
+ * that a task has either stalled, or reported an error, then it changes its own\r
+ * execution period from the initial three seconds, to just 200ms.  The check\r
+ * task also toggles an LED on each iteration of its loop.  This provides a\r
+ * visual indication of the system status:  If the LED toggles every three\r
+ * seconds, then no issues have been discovered.  If the LED toggles every\r
+ * 200ms, then an issue has been discovered with at least one task.\r
  */\r
 \r
 /* Standard includes. */\r
 #include "partest.h"\r
 #include "comtest2.h"\r
 #include "serial.h"\r
-#include "TimerDemo.h"\r
 #include "QueueOverwrite.h"\r
 #include "IntQueue.h"\r
 #include "EventGroupsDemo.h"\r
 #define mainBLOCK_Q_PRIORITY                           ( tskIDLE_PRIORITY + 2UL )\r
 #define mainCREATOR_TASK_PRIORITY                      ( tskIDLE_PRIORITY + 3UL )\r
 #define mainUART_COMMAND_CONSOLE_STACK_SIZE    ( configMINIMAL_STACK_SIZE * 3UL )\r
-#define mainCOM_TEST_TASK_PRIORITY                     ( tskIDLE_PRIORITY + 2 )\r
 #define mainCHECK_TASK_PRIORITY                                ( configMAX_PRIORITIES - 1 )\r
 #define mainQUEUE_OVERWRITE_PRIORITY           ( tskIDLE_PRIORITY )\r
 \r
 /* The priority used by the UART command console task. */\r
-#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( configMAX_PRIORITIES - 2 )\r
-\r
-/* A block time of zero simply means "don't block". */\r
-#define mainDONT_BLOCK                                         ( 0UL )\r
+#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )\r
 \r
 /* The period after which the check timer will expire, in ms, provided no errors\r
 have been reported by any of the standard demo tasks.  ms are converted to the\r
 equivalent in ticks using the portTICK_PERIOD_MS constant. */\r
-#define mainNO_ERROR_CHECK_TASK_PERIOD         ( 3000UL / portTICK_PERIOD_MS )\r
+#define mainNO_ERROR_CHECK_TASK_PERIOD         pdMS_TO_TICKS( 3000UL )\r
 \r
 /* The period at which the check timer will expire, in ms, if an error has been\r
 reported in one of the standard demo tasks.  ms are converted to the equivalent\r
 in ticks using the portTICK_PERIOD_MS constant. */\r
-#define mainERROR_CHECK_TASK_PERIOD            ( 200UL / portTICK_PERIOD_MS )\r
+#define mainERROR_CHECK_TASK_PERIOD            pdMS_TO_TICKS( 200UL )\r
 \r
 /* Parameters that are passed into the register check tasks solely for the\r
 purpose of ensuring parameters are passed into tasks correctly. */\r
-#define mainREG_TEST_1_PARAMETER       ( ( void * ) 0x12121212UL )\r
-#define mainREG_TEST_2_PARAMETER       ( ( void * ) 0x12345678UL )\r
+#define mainREG_TEST_1_PARAMETER                       ( ( void * ) 0x12121212UL )\r
+#define mainREG_TEST_2_PARAMETER                       ( ( void * ) 0x12345678UL )\r
 \r
 /* The base period used by the timer test tasks. */\r
 #define mainTIMER_TEST_PERIOD                          ( 50 )\r
@@ -210,6 +210,17 @@ static void prvRegTest2Implementation( void );
  */\r
 static void prvPseudoRandomiser( void *pvParameters );\r
 \r
+/*\r
+ * Register commands that can be used with FreeRTOS+CLI.  The commands are\r
+ * defined in CLI-Commands.c and File-Related-CLI-Command.c respectively.\r
+ */\r
+extern void vRegisterSampleCLICommands( void );\r
+\r
+/*\r
+ * The task that manages the FreeRTOS+CLI input and output.\r
+ */\r
+extern void vUARTCommandConsoleStart( uint16_t usStackSize, UBaseType_t uxPriority );\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* The following two variables are used to communicate the status of the\r
@@ -218,9 +229,6 @@ then the register check tasks have not discovered any errors.  If a variable
 stops incrementing, then an error has been found. */\r
 volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;\r
 \r
-/* String for display in the web server.  It is set to an error message if the\r
-check task detects an error.  */\r
-const char *pcStatusMessage = "All tasks running without error";\r
 /*-----------------------------------------------------------*/\r
 \r
 void main_full( void )\r
@@ -236,7 +244,6 @@ void main_full( void )
        vStartGenericQueueTasks( tskIDLE_PRIORITY );\r
        vStartRecursiveMutexTasks();\r
        vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );\r
-       vStartTimerDemoTask( mainTIMER_TEST_PERIOD );\r
        vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_PRIORITY );\r
        vStartEventGroupTasks();\r
        vStartTaskNotifyTask();\r
@@ -249,6 +256,13 @@ void main_full( void )
        /* Create the task that just adds a little random behaviour. */\r
        xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL );\r
 \r
+       /* Start the tasks that implements the command console on the UART, as\r
+       described above. */\r
+       vUARTCommandConsoleStart( mainUART_COMMAND_CONSOLE_STACK_SIZE, mainUART_COMMAND_CONSOLE_TASK_PRIORITY );\r
+\r
+       /* Register the standard CLI commands. */\r
+       vRegisterSampleCLICommands();\r
+\r
        /* Create the task that performs the 'check' functionality,     as described at\r
        the top of this file. */\r
        xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );\r
@@ -340,11 +354,6 @@ unsigned long ulErrorFound = pdFALSE;
                        ulErrorFound |= 1UL << 8UL;\r
                }\r
 \r
-               if( xAreTimerDemoTasksStillRunning( ( TickType_t ) mainNO_ERROR_CHECK_TASK_PERIOD ) != pdPASS )\r
-               {\r
-                       ulErrorFound |= 1UL << 9UL;\r
-               }\r
-\r
                if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE )\r
                {\r
                        ulErrorFound |= 1UL << 10UL;\r
@@ -396,7 +405,6 @@ unsigned long ulErrorFound = pdFALSE;
                        gone wrong (it might just be that the loop back connector required\r
                        by the comtest tasks has not been fitted). */\r
                        xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;\r
-                       pcStatusMessage = "Error found in at least one task.";\r
                }\r
        }\r
 }\r
@@ -441,10 +449,6 @@ volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;
 \r
 void vFullDemoTickHook( void )\r
 {\r
-       /* The full demo includes a software timer demo/test that requires\r
-       prodding periodically from the tick interrupt. */\r
-       vTimerPeriodicISRTests();\r
-\r
        /* Call the periodic queue overwrite from ISR demo. */\r
        vQueueOverwritePeriodicISRDemo();\r
 \r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Renesas_Code/r_rsk_async.c b/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Renesas_Code/r_rsk_async.c
deleted file mode 100644 (file)
index f553ede..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************\r
- * DISCLAIMER\r
- * This software is supplied by Renesas Electronics Corporation and is only\r
- * intended for use with Renesas products. No other uses are authorized. This\r
- * software is owned by Renesas Electronics Corporation and is protected under\r
- * all applicable laws, including copyright laws.\r
- * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
- * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
- * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
- * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
- * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
- * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
- * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
- * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
- * Renesas reserves the right, without notice, to make changes to this software\r
- * and to discontinue the availability of this software. By using this software,\r
- * you agree to the additional terms and conditions found by accessing the\r
- * following link:\r
- * http://www.renesas.com/disclaimer\r
- *******************************************************************************/\r
-/* Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.   */\r
-/*******************************************************************************\r
- * File Name     : r_rsk_async.c\r
- * Version       : 1.00\r
- * Device(s)     : R5F51138AxFP\r
- * Tool-Chain    : CCRX\r
- * H/W Platform  : RSKRX113\r
- * Description   : Functions used to send data via the SCI in asynchronous mode\r
- *******************************************************************************/\r
-/*******************************************************************************\r
- * History       : 26.08.2014  Ver. 1.00 First Release\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- System Includes\r
- *******************************************************************************/\r
-/* Following header file provides string type definitions. */\r
-#include <string.h>\r
-\r
-/*******************************************************************************\r
- User Includes (Project Level Includes)\r
- *******************************************************************************/\r
-/* Defines port registers */\r
-#include "r_cg_macrodriver.h"\r
-#include "r_cg_sci.h"\r
-#include "r_rsk_async.h"\r
-\r
-/*******************************************************************************\r
- User Defines\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- * Global Variables\r
- *******************************************************************************/\r
-\r
-/* Declaration of the command string to clear the terminal screen */\r
-static const char cmd_clr_scr[] =\r
-{ 27, 91, 50, 74, 0, 27, 91, 72, 0 };\r
-\r
-/*******************************************************************************\r
- * Function Prototypes\r
- *******************************************************************************/\r
-\r
-/* text_write function prototype */\r
-static void text_write (const char * const msg_string);\r
-\r
-/*******************************************************************************\r
- * Function Name: R_ASYNC_Init\r
- * Description  : This function initialises the SCI channel connected to the\r
- *                RS232 connector on the RSK. The channel is configured for\r
- *                transmission and reception, and instructions are sent to the\r
- *                terminal.\r
- * Argument     : none\r
- * Return value : none\r
- *******************************************************************************/\r
-void R_ASYNC_Init (void)\r
-{\r
-\r
-    /* Set up SCI1 receive buffer */\r
-    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
-\r
-    /* Enable SCI1 operations */\r
-    R_SCI1_Start();\r
-\r
-    /* Clear the text on terminal window */\r
-    text_write(cmd_clr_scr);\r
-\r
-    /* Display splash screen on terminal window */\r
-    text_write("Renesas RSKRX113 Async Serial \r\n");\r
-\r
-    /* Inform user on how to stop transmission */\r
-    text_write("Press 'z' to stop and any key to resume\r\n\n");\r
-}\r
-/*******************************************************************************\r
- * End of function R_ASYNC_Init\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- * Function Name : text_write\r
- * Description   : Transmits null-terminated string.\r
- * Argument      : (char*) msg_string - null terminated string\r
- * Return value  : None\r
- *******************************************************************************/\r
-static void text_write (const char * const msg_string)\r
-{\r
-    R_SCI1_AsyncTransmit((uint8_t *) msg_string, (uint16_t) strlen(msg_string));\r
-}\r
-/*******************************************************************************\r
- * End of function text_write\r
- *******************************************************************************/\r
-\r
diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Renesas_Code/r_rsk_async.h b/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/Renesas_Code/r_rsk_async.h
deleted file mode 100644 (file)
index ffcadfe..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************\r
- * DISCLAIMER\r
- * This software is supplied by Renesas Electronics Corporation and is only\r
- * intended for use with Renesas products. No other uses are authorized. This\r
- * software is owned by Renesas Electronics Corporation and is protected under\r
- * all applicable laws, including copyright laws.\r
- * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
- * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
- * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
- * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
- * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
- * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
- * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
- * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
- * Renesas reserves the right, without notice, to make changes to this software\r
- * and to discontinue the availability of this software. By using this software,\r
- * you agree to the additional terms and conditions found by accessing the\r
- * following link:\r
- * http://www.renesas.com/disclaimer\r
- *******************************************************************************/\r
-/* Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.   */\r
-/*******************************************************************************\r
- * File Name     : r_rsk_async.h\r
- * Version       : 1.00\r
- * Device(s)     : R5F51138AxFP\r
- * Tool-Chain    : CCRX\r
- * H/W Platform  : RSKRX113\r
- * Description   : Functions used to send data via the SCI in asynchronous mode\r
- ******************************************************************************/\r
-/*******************************************************************************\r
- * History       : 26.08.2014 Ver. 1.00 First Release\r
- *******************************************************************************/\r
-\r
-/*******************************************************************************\r
- * Macro Definitions\r
- *******************************************************************************/\r
-/* Multiple inclusion prevention macro */\r
-#ifndef R_RSK_ASYNC_H\r
-#define R_RSK_ASYNC_H\r
-\r
-/*******************************************************************************\r
- * Global Function Prototypes\r
- *******************************************************************************/\r
-/* initialise asynchronous transmission*/\r
-void R_ASYNC_Init (void);\r
-\r
-/* End of multiple inclusion prevention macro */\r
-#endif\r
-\r
index e71ca6b832f9dd8415d769c775ff367735037b59..b98dfa2e628483bc237eb96412932d3b8d644bbf 100644 (file)
@@ -285,9 +285,9 @@ void R_SCI1_Start(void);
 void R_SCI1_Stop(void);\r
 MD_STATUS R_SCI1_Serial_Send(uint8_t * const tx_buf, uint16_t tx_num);\r
 MD_STATUS R_SCI1_Serial_Receive(uint8_t * const rx_buf, uint16_t rx_num);\r
-static void r_sci1_callback_transmitend(void);\r
-static void r_sci1_callback_receiveend(void);\r
-static void r_sci1_callback_receiveerror(void);\r
+void r_sci1_callback_transmitend(void);\r
+void r_sci1_callback_receiveend(void);\r
+void r_sci1_callback_receiveerror(void);\r
 \r
 /* Start user code for function. Do not edit comment generated here */\r
 \r
@@ -304,4 +304,4 @@ extern uint8_t g_rx_char;
 extern volatile uint8_t g_tx_flag;\r
 \r
 /* End user code. Do not edit comment generated here */\r
-#endif
\ No newline at end of file
+#endif\r
index aec0de1017d723417a6219e6b72ec52fb812b580..08fa2ce1e30a9e04a3d407b51205c4559eb3201b 100644 (file)
 Pragma directive\r
 ***********************************************************************************************************************/\r
 /* Start user code for pragma. Do not edit comment generated here */\r
+\r
+\r
+/*\r
+ * This file originated from an example project for the RSK - it has been\r
+ * adapted to allow it to be used in the FreeRTOS demo.  Functions required by\r
+ * UARTCommandConsole.c have been added.\r
+ */\r
+\r
+\r
+\r
 /* End user code. Do not edit comment generated here */\r
 \r
 /***********************************************************************************************************************\r
@@ -39,7 +49,10 @@ Includes
 #include "r_cg_sci.h"\r
 /* Start user code for include. Do not edit comment generated here */\r
 #include "rskrx113def.h"\r
-//_RB_#include "r_cg_cmt.h"\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "queue.h"\r
+#include "serial.h"\r
 /* End user code. Do not edit comment generated here */\r
 #include "r_cg_userdefine.h"\r
 \r
@@ -59,7 +72,21 @@ uint8_t g_rx_char;
 /* Flag used to control transmission to PC terminal */\r
 volatile uint8_t g_tx_flag = FALSE;\r
 \r
-/* Flag used locally to detect transmission complete */\r
+/* Characters received from the UART are stored in this queue, ready to be\r
+received by the application.  ***NOTE*** Using a queue in this way is very\r
+convenient, but also very inefficient.  It can be used here because characters\r
+will only arrive slowly.  In a higher bandwidth system a circular RAM buffer or\r
+DMA should be used in place of this queue. */\r
+static QueueHandle_t xRxQueue = NULL;\r
+\r
+/* When a task calls vSerialPutString() its handle is stored in xSendingTask,\r
+before being placed into the Blocked state (so does not use any CPU time) to\r
+wait for the transmission to end.  The task handle is then used from the UART\r
+transmit end interrupt to remove the task from the Blocked state. */\r
+static TaskHandle_t xSendingTask = NULL;\r
+\r
+/* Flag used locally to detect transmission complete.  This is used by the\r
+auto generated API only. */\r
 static volatile uint8_t sci1_txdone;\r
 \r
 /* End user code. Do not edit comment generated here */\r
@@ -154,7 +181,7 @@ static void r_sci1_receiveerror_interrupt(void)
 \r
     /* Clear overrun, framing and parity error flags */\r
     err_type = SCI1.SSR.BYTE;\r
-    SCI1.SSR.BYTE = err_type & 0xC7U;\r
+    SCI1.SSR.BYTE = err_type & ( uint8_t ) 0xC7;\r
 }\r
 /***********************************************************************************************************************\r
 * Function Name: r_sci1_callback_transmitend\r
@@ -162,11 +189,23 @@ static void r_sci1_receiveerror_interrupt(void)
 * Arguments    : None\r
 * Return Value : None\r
 ***********************************************************************************************************************/\r
-static void r_sci1_callback_transmitend(void)\r
+void r_sci1_callback_transmitend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-    sci1_txdone = TRUE;\r
+       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+       /* The sci1_txdone flag is used by the auto generated API only. */\r
+       sci1_txdone = TRUE;\r
 \r
+       if( xSendingTask != NULL )\r
+       {\r
+               /* A task is waiting for the end of the Tx, unblock it now.\r
+               http://www.freertos.org/vTaskNotifyGiveFromISR.html */\r
+               vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );\r
+               xSendingTask = NULL;\r
+\r
+               portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+       }\r
     /* End user code. Do not edit comment generated here */\r
 }\r
 /***********************************************************************************************************************\r
@@ -175,34 +214,33 @@ static void r_sci1_callback_transmitend(void)
 * Arguments    : None\r
 * Return Value : None\r
 ***********************************************************************************************************************/\r
-static void r_sci1_callback_receiveend(void)\r
+void r_sci1_callback_receiveend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-    /* Check the contents of g_rx_char */\r
-    if ('z' == g_rx_char)\r
-    {\r
-        /* Stop the timer used to control transmission to PC terminal*/\r
-//_RB_        R_CMT0_Stop();\r
+       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
 \r
-        /* Turn off LED0 and turn on LED1 to indicate serial transmission\r
-         inactive */\r
-        LED0 = LED_OFF;\r
-        LED1 = LED_ON;\r
-    }\r
-    else\r
-    {\r
-        /* Start the timer used to control transmission to PC terminal*/\r
-//_RB_        R_CMT0_Start();\r
+    configASSERT( xRxQueue );\r
 \r
-        /* Turn on LED0 and turn off LED1 to indicate serial transmission\r
-         active */\r
-        LED0 = LED_ON;\r
-        LED1 = LED_OFF;\r
-    }\r
+       /* Transmitting generates an interrupt for each character, which consumes\r
+       CPU time, and can cause standard demo RTOS tasks that monitor their own\r
+       performance to fail asserts - so don't receive new CLI commands if a\r
+       transmit is not already in progress. */\r
+       if( sci1_txdone == TRUE )\r
+       {\r
+               /* Characters received from the UART are stored in this queue, ready to be\r
+               received by the application.  ***NOTE*** Using a queue in this way is very\r
+               convenient, but also very inefficient.  It can be used here because\r
+               characters will only arrive slowly.  In a higher bandwidth system a circular\r
+               RAM buffer or DMA should be used in place of this queue. */\r
+               xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );\r
+       }\r
 \r
     /* Set up SCI1 receive buffer again */\r
     R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
 \r
+    /* See http://www.freertos.org/xQueueOverwriteFromISR.html for information\r
+    on the semantics of this ISR. */\r
+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
     /* End user code. Do not edit comment generated here */\r
 }\r
 /***********************************************************************************************************************\r
@@ -211,7 +249,7 @@ static void r_sci1_callback_receiveend(void)
 * Arguments    : None\r
 * Return Value : None\r
 ***********************************************************************************************************************/\r
-static void r_sci1_callback_receiveerror(void)\r
+void r_sci1_callback_receiveerror(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
     /* End user code. Do not edit comment generated here */\r
@@ -249,4 +287,89 @@ MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
  * End of function R_SCI1_AsyncTransmit\r
  ***********************************************************************************************************************/\r
 \r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )\r
+{\r
+       ( void ) ulWantedBaud;\r
+       ( void ) uxQueueLength;\r
+\r
+       /* Characters received from the UART are stored in this queue, ready to be\r
+       received by the application.  ***NOTE*** Using a queue in this way is very\r
+       convenient, but also very inefficient.  It can be used here because\r
+       characters will only arrive slowly.  In a higher bandwidth system a circular\r
+       RAM buffer or DMA should be used in place of this queue. */\r
+       xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );\r
+       configASSERT( xRxQueue );\r
+\r
+       /* Set up SCI1 receive buffer */\r
+       R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
+\r
+       /* Ensure the interrupt priority is at or below\r
+       configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
+    IPR( SCI1, ERI1 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+\r
+       /* Enable SCI1 operations */\r
+       R_SCI1_Start();\r
+\r
+       /* Only one UART is supported, so it doesn't matter what is returned\r
+       here. */\r
+       return 0;\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )\r
+{\r
+const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );\r
+\r
+       /* Only one port is supported. */\r
+       ( void ) pxPort;\r
+\r
+       /* Clear the flag before initiating a new transmission */\r
+       sci1_txdone = FALSE;\r
+\r
+       /* Don't send the string unless the previous string has been sent. */\r
+       if( xSendingTask == NULL )\r
+       {\r
+               /* Ensure the calling task's notification state is not already\r
+               pending. */\r
+               vTaskNotifyClear( NULL );\r
+\r
+               /* Store the handle of the transmitting task.  This is used to unblock\r
+               the task when the transmission has completed. */\r
+               xSendingTask = xTaskGetCurrentTaskHandle();\r
+\r
+               /* Send the string using the auto-generated API. */\r
+               R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );\r
+\r
+               /* Wait in the Blocked state (so not using any CPU time) until the\r
+               transmission has completed. */\r
+               ulTaskNotifyTake( pdTRUE, xMaxBlockTime );\r
+       }\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )\r
+{\r
+       /* Only one UART is supported. */\r
+       ( void ) pxPort;\r
+\r
+       /* Return a received character, if any are available.  Otherwise block to\r
+       wait for a character. */\r
+       return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );\r
+}\r
+\r
+/* Function required in order to link UARTCommandConsole.c - which is used by\r
+multiple different demo application. */\r
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )\r
+{\r
+       /* Just mapped to vSerialPutString() so the block time is not used. */\r
+       ( void ) xBlockTime;\r
+\r
+       vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );\r
+       return pdPASS;\r
+}\r
+\r
 /* End user code. Do not edit comment generated here */\r
index 4e39c6d07eb82cb96027b8cd2e15018515ae7893..e3243f13f76d5ad791ef87696f0db7cf93372b45 100644 (file)
@@ -76,8 +76,7 @@
  * implemented and described in main_full.c.\r
  *\r
  * This file implements the code that is not demo specific, including the\r
- * hardware setup, standard FreeRTOS hook functions, and the ISR hander called\r
- * by the RTOS after interrupt entry (including nesting) has been taken care of.\r
+ * hardware setup and standard FreeRTOS hook functions.\r
  *\r
  * ENSURE TO READ THE DOCUMENTATION PAGE FOR THIS PORT AND DEMO APPLICATION ON\r
  * THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO\r
 #include "task.h"\r
 #include "semphr.h"\r
 \r
-/* Renesas includes. */\r
 /* Renesas includes. */\r
 #include <rskrx113def.h>\r
 #include "r_cg_macrodriver.h"\r
 #include "r_cg_sci.h"\r
-#include "r_rsk_async.h"\r
 \r
 /* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,\r
 or 0 to run the more comprehensive test and demo application. */\r
-#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY     0\r
+#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY     1\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -144,18 +141,15 @@ int main( void )
        }\r
        #endif\r
 \r
+       /* Should never get reached. */\r
        return 0;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 static void prvSetupHardware( void )\r
 {\r
-    /* Set up SCI1 receive buffer */\r
-    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);\r
-\r
-    /* Enable SCI1 operations */\r
-    R_SCI1_Start();\r
-\r
+       /* Some hardware setup is performed before main() is called.  This routine\r
+       just ensures the LEDs start off. */\r
     LED0 = LED_OFF;\r
     LED1 = LED_OFF;\r
     LED2 = LED_OFF;\r
@@ -210,6 +204,7 @@ volatile size_t xFreeHeapSpace;
 \r
 void vApplicationTickHook( void )\r
 {\r
+       /* The tick hook is not used by the blinky demo, but is by the full demo. */\r
        #if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0\r
        {\r
                extern void vFullDemoTickHook( void );\r
@@ -221,7 +216,9 @@ void vApplicationTickHook( void )
 /*-----------------------------------------------------------*/\r
 \r
 /* The RX port uses this callback function to configure its tick interrupt.\r
-This allows the application to choose the tick interrupt source. */\r
+This allows the application to choose the tick interrupt source.\r
+***NOTE***: configTICK_VECTOR must be set in FreeRTOSConfig.h to be correct for\r
+whichever vector is used. */\r
 void vApplicationSetupTimerInterrupt( void )\r
 {\r
 const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;\r
diff --git a/FreeRTOS/Demo/WIN32-MSVC/DemosModifiedForLowTickRate/recmutex.c b/FreeRTOS/Demo/WIN32-MSVC/DemosModifiedForLowTickRate/recmutex.c
deleted file mode 100644 (file)
index 5be6ec9..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-/*\r
-    FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.\r
-    All rights reserved\r
-\r
-    VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
-\r
-    This file is part of the FreeRTOS distribution.\r
-\r
-    FreeRTOS is free software; you can redistribute it and/or modify it under\r
-    the terms of the GNU General Public License (version 2) as published by the\r
-    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.\r
-\r
-    ***************************************************************************\r
-    >>!   NOTE: The modification to the GPL is included to allow you to     !<<\r
-    >>!   distribute a combined work that includes FreeRTOS without being   !<<\r
-    >>!   obliged to provide the source code for proprietary components     !<<\r
-    >>!   outside of the FreeRTOS kernel.                                   !<<\r
-    ***************************************************************************\r
-\r
-    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
-    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
-    FOR A PARTICULAR PURPOSE.  Full license text is available on the following\r
-    link: http://www.freertos.org/a00114.html\r
-\r
-    ***************************************************************************\r
-     *                                                                       *\r
-     *    FreeRTOS provides completely free yet professionally developed,    *\r
-     *    robust, strictly quality controlled, supported, and cross          *\r
-     *    platform software that is more than just the market leader, it     *\r
-     *    is the industry's de facto standard.                               *\r
-     *                                                                       *\r
-     *    Help yourself get started quickly while simultaneously helping     *\r
-     *    to support the FreeRTOS project by purchasing a FreeRTOS           *\r
-     *    tutorial book, reference manual, or both:                          *\r
-     *    http://www.FreeRTOS.org/Documentation                              *\r
-     *                                                                       *\r
-    ***************************************************************************\r
-\r
-    http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading\r
-    the FAQ page "My application does not run, what could be wrong?".  Have you\r
-    defined configASSERT()?\r
-\r
-    http://www.FreeRTOS.org/support - In return for receiving this top quality\r
-    embedded software for free we request you assist our global community by\r
-    participating in the support forum.\r
-\r
-    http://www.FreeRTOS.org/training - Investing in training allows your team to\r
-    be as productive as possible as early as possible.  Now you can receive\r
-    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
-    Ltd, and the world's leading authority on the world's leading RTOS.\r
-\r
-    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
-    including FreeRTOS+Trace - an indispensable productivity tool, a DOS\r
-    compatible FAT file system, and our tiny thread aware UDP/IP stack.\r
-\r
-    http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.\r
-    Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.\r
-\r
-    http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High\r
-    Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS\r
-    licenses offer ticketed support, indemnification and commercial middleware.\r
-\r
-    http://www.SafeRTOS.com - High Integrity Systems also provide a safety\r
-    engineered and independently SIL3 certified version for use in safety and\r
-    mission critical applications that require provable dependability.\r
-\r
-    1 tab == 4 spaces!\r
-*/\r
-\r
-/*\r
-       The tasks defined on this page demonstrate the use of recursive mutexes.\r
-\r
-       For recursive mutex functionality the created mutex should be created using\r
-       xSemaphoreCreateRecursiveMutex(), then be manipulated\r
-       using the xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() API\r
-       functions.\r
-\r
-       This demo creates three tasks all of which access the same recursive mutex:\r
-\r
-       prvRecursiveMutexControllingTask() has the highest priority so executes \r
-       first and grabs the mutex.  It then performs some recursive accesses - \r
-       between each of which it sleeps for a short period to let the lower \r
-       priority tasks execute.  When it has completed its demo functionality\r
-       it gives the mutex back before suspending itself.\r
-\r
-       prvRecursiveMutexBlockingTask() attempts to access the mutex by performing\r
-       a blocking 'take'.  The blocking task has a lower priority than the \r
-       controlling     task so by the time it executes the mutex has already been\r
-       taken by the controlling task,  causing the blocking task to block.  It \r
-       does not unblock until the controlling task has given the mutex back, \r
-       and it does not actually run until the controlling task has suspended \r
-       itself (due to the relative priorities).  When it eventually does obtain\r
-       the mutex all it does is give the mutex back prior to also suspending \r
-       itself.  At this point both the controlling task and the blocking task are \r
-       suspended.\r
-\r
-       prvRecursiveMutexPollingTask() runs at the idle priority.  It spins round\r
-       a tight loop attempting to obtain the mutex with a non-blocking call.  As\r
-       the lowest priority task it will not successfully obtain the mutex until\r
-       both the controlling and blocking tasks are suspended.  Once it eventually \r
-       does obtain the mutex it first unsuspends both the controlling task and\r
-       blocking task prior to giving the mutex back - resulting in the polling\r
-       task temporarily inheriting the controlling tasks priority.\r
-*/\r
-\r
-/* Scheduler include files. */\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-#include "semphr.h"\r
-\r
-/* Demo app include files. */\r
-#include "recmutex.h"\r
-\r
-/* Priorities assigned to the three tasks. */\r
-#define recmuCONTROLLING_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
-#define recmuBLOCKING_TASK_PRIORITY            ( tskIDLE_PRIORITY + 1 )\r
-#define recmuPOLLING_TASK_PRIORITY             ( tskIDLE_PRIORITY + 0 )\r
-\r
-/* In this version the tick period is very long, so the short delay cannot be\r
-for too many ticks, or the check task will execute and find that the recmutex\r
-tasks have not completed their functionality and then signal an error.  The\r
-delay does however have to be long enough to allow the lower priority tasks\r
-a chance of executing - this is basically achieved by reducing the number\r
-of times the loop that takes/gives the recursive mutex executes. */\r
-#define recmuMAX_COUNT                                 ( 2 )\r
-#define recmuSHORT_DELAY                               ( 20 )\r
-#define recmuNO_DELAY                                  ( ( TickType_t ) 0 )\r
-#define recmuFIVE_TICK_DELAY                   ( ( TickType_t ) 5 )\r
-\r
-/* The three tasks as described at the top of this file. */\r
-static void prvRecursiveMutexControllingTask( void *pvParameters );\r
-static void prvRecursiveMutexBlockingTask( void *pvParameters );\r
-static void prvRecursiveMutexPollingTask( void *pvParameters );\r
-\r
-/* The mutex used by the demo. */\r
-static SemaphoreHandle_t xMutex;\r
-\r
-/* Variables used to detect and latch errors. */\r
-static volatile portBASE_TYPE xErrorOccurred = pdFALSE, xControllingIsSuspended = pdFALSE, xBlockingIsSuspended = pdFALSE;\r
-static volatile unsigned portBASE_TYPE uxControllingCycles = 0, uxBlockingCycles = 0, uxPollingCycles = 0;\r
-\r
-/* Handles of the two higher priority tasks, required so they can be resumed \r
-(unsuspended). */\r
-static TaskHandle_t xControllingTaskHandle, xBlockingTaskHandle, xPollingTaskHandle;\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-void vStartRecursiveMutexTasks( void )\r
-{\r
-       /* Just creates the mutex and the three tasks. */\r
-\r
-       xMutex = xSemaphoreCreateRecursiveMutex();\r
-\r
-       /* vQueueAddToRegistry() adds the mutex to the registry, if one is\r
-       in use.  The registry is provided as a means for kernel aware \r
-       debuggers to locate mutex and has no purpose if a kernel aware debugger\r
-       is not being used.  The call to vQueueAddToRegistry() will be removed\r
-       by the pre-processor if configQUEUE_REGISTRY_SIZE is not defined or is \r
-       defined to be less than 1. */\r
-       vQueueAddToRegistry( ( QueueHandle_t ) xMutex, "Recursive_Mutex" );\r
-\r
-\r
-       if( xMutex != NULL )\r
-       {\r
-               xTaskCreate( prvRecursiveMutexControllingTask, "Rec1Ctrl", configMINIMAL_STACK_SIZE, NULL, recmuCONTROLLING_TASK_PRIORITY, &xControllingTaskHandle );\r
-        xTaskCreate( prvRecursiveMutexBlockingTask, "Rec2Blck", configMINIMAL_STACK_SIZE, NULL, recmuBLOCKING_TASK_PRIORITY, &xBlockingTaskHandle );\r
-        xTaskCreate( prvRecursiveMutexPollingTask, "Rec3Poll", configMINIMAL_STACK_SIZE, NULL, recmuPOLLING_TASK_PRIORITY, &xPollingTaskHandle );\r
-       }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvRecursiveMutexControllingTask( void *pvParameters )\r
-{\r
-unsigned portBASE_TYPE ux;\r
-\r
-       /* Just to remove compiler warning. */\r
-       ( void ) pvParameters;\r
-\r
-       for( ;; )\r
-       {\r
-               /* Should not be able to 'give' the mutex, as we have not yet 'taken'\r
-               it.   The first time through, the mutex will not have been used yet,\r
-               subsequent times through, at this point the mutex will be held by the\r
-               polling task. */\r
-               if( xSemaphoreGiveRecursive( xMutex ) == pdPASS )\r
-               {\r
-                       xErrorOccurred = pdTRUE;\r
-               }\r
-\r
-               for( ux = 0; ux < recmuMAX_COUNT; ux++ )\r
-               {\r
-                       /* We should now be able to take the mutex as many times as\r
-                       we like.\r
-                       \r
-                       The first time through the mutex will be immediately available, on\r
-                       subsequent times through the mutex will be held by the polling task\r
-                       at this point and this Take will cause the polling task to inherit\r
-                       the priority of this task.  In this case the block time must be\r
-                       long enough to ensure the polling task will execute again before the\r
-                       block time expires.  If the block time does expire then the error\r
-                       flag will be set here. */\r
-                       if( xSemaphoreTakeRecursive( xMutex, recmuFIVE_TICK_DELAY ) != pdPASS )\r
-                       {\r
-                               xErrorOccurred = pdTRUE;\r
-                       }\r
-\r
-                       /* Ensure the other task attempting to access the mutex (and the\r
-                       other demo tasks) are able to execute to ensure they either block\r
-                       (where a block time is specified) or return an error (where no \r
-                       block time is specified) as the mutex is held by this task. */\r
-                       vTaskDelay( recmuSHORT_DELAY );\r
-               }\r
-\r
-               /* For each time we took the mutex, give it back. */\r
-               for( ux = 0; ux < recmuMAX_COUNT; ux++ )\r
-               {\r
-                       /* Ensure the other task attempting to access the mutex (and the\r
-                       other demo tasks) are able to execute. */\r
-                       vTaskDelay( recmuSHORT_DELAY );\r
-\r
-                       /* We should now be able to give the mutex as many times as we\r
-                       took it.  When the mutex is available again the Blocking task\r
-                       should be unblocked but not run because it has a lower priority\r
-                       than this task.  The polling task should also not run at this point\r
-                       as it too has a lower priority than this task. */\r
-                       if( xSemaphoreGiveRecursive( xMutex ) != pdPASS )\r
-                       {\r
-                               xErrorOccurred = pdTRUE;\r
-                       }\r
-\r
-                       #if configUSE_PREEMPTION == 0\r
-                               taskYIELD();\r
-                       #endif\r
-               }\r
-\r
-               /* Having given it back the same number of times as it was taken, we\r
-               should no longer be the mutex owner, so the next give should fail. */\r
-               if( xSemaphoreGiveRecursive( xMutex ) == pdPASS )\r
-               {\r
-                       xErrorOccurred = pdTRUE;\r
-               }\r
-\r
-               /* Keep count of the number of cycles this task has performed so a \r
-               stall can be detected. */\r
-               uxControllingCycles++;\r
-\r
-               /* Suspend ourselves so the blocking task can execute. */\r
-               xControllingIsSuspended = pdTRUE;\r
-               vTaskSuspend( NULL );\r
-               xControllingIsSuspended = pdFALSE;\r
-       }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvRecursiveMutexBlockingTask( void *pvParameters )\r
-{\r
-       /* Just to remove compiler warning. */\r
-       ( void ) pvParameters;\r
-\r
-       for( ;; )\r
-       {\r
-               /* This task will run while the controlling task is blocked, and the\r
-               controlling task will block only once it has the mutex - therefore\r
-               this call should block until the controlling task has given up the \r
-               mutex, and not actually execute past this call until the controlling \r
-               task is suspended. */\r
-               if( xSemaphoreTakeRecursive( xMutex, portMAX_DELAY ) == pdPASS )\r
-               {\r
-                       if( xControllingIsSuspended != pdTRUE )\r
-                       {\r
-                               /* Did not expect to execute until the controlling task was\r
-                               suspended. */\r
-                               xErrorOccurred = pdTRUE;\r
-                       }\r
-                       else\r
-                       {\r
-                               /* Give the mutex back before suspending ourselves to allow\r
-                               the polling task to obtain the mutex. */\r
-                               if( xSemaphoreGiveRecursive( xMutex ) != pdPASS )\r
-                               {\r
-                                       xErrorOccurred = pdTRUE;\r
-                               }\r
-\r
-                               xBlockingIsSuspended = pdTRUE;\r
-                               vTaskSuspend( NULL );\r
-                               xBlockingIsSuspended = pdFALSE;\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       /* We should not leave the xSemaphoreTakeRecursive() function\r
-                       until the mutex was obtained. */\r
-                       xErrorOccurred = pdTRUE;\r
-               }\r
-\r
-               /* The controlling and blocking tasks should be in lock step. */\r
-               if( uxControllingCycles != ( uxBlockingCycles + 1 ) )\r
-               {\r
-                       xErrorOccurred = pdTRUE;\r
-               }\r
-\r
-               /* Keep count of the number of cycles this task has performed so a \r
-               stall can be detected. */\r
-               uxBlockingCycles++;\r
-       }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvRecursiveMutexPollingTask( void *pvParameters )\r
-{\r
-       /* Just to remove compiler warning. */\r
-       ( void ) pvParameters;\r
-\r
-       for( ;; )\r
-       {\r
-               /* Keep attempting to obtain the mutex.  We should only obtain it when\r
-               the blocking task has suspended itself, which in turn should only\r
-               happen when the controlling task is also suspended. */\r
-               if( xSemaphoreTakeRecursive( xMutex, recmuNO_DELAY ) == pdPASS )\r
-               {\r
-                       /* Is the blocking task suspended? */\r
-                       if( ( xBlockingIsSuspended != pdTRUE ) || ( xControllingIsSuspended != pdTRUE ) )\r
-                       {\r
-                               xErrorOccurred = pdTRUE;\r
-                       }\r
-                       else\r
-                       {\r
-                               /* Keep count of the number of cycles this task has performed \r
-                               so a stall can be detected. */\r
-                               uxPollingCycles++;\r
-\r
-                               /* We can resume the other tasks here even though they have a\r
-                               higher priority than the polling task.  When they execute they\r
-                               will attempt to obtain the mutex but fail because the polling\r
-                               task is still the mutex holder.  The polling task (this task)\r
-                               will then inherit the higher priority.  The Blocking task will\r
-                               block indefinitely when it attempts to obtain the mutex, the\r
-                               Controlling task will only block for a fixed period and an\r
-                               error will be latched if the polling task has not returned the\r
-                               mutex by the time this fixed period has expired. */                             \r
-                               vTaskResume( xBlockingTaskHandle );\r
-                               #if configUSE_PREEMPTION == 0\r
-                                       taskYIELD();\r
-                               #endif\r
-\r
-                               vTaskResume( xControllingTaskHandle );\r
-                               #if configUSE_PREEMPTION == 0\r
-                                       taskYIELD();\r
-                               #endif\r
-\r
-                               /* The other two tasks should now have executed and no longer\r
-                               be suspended. */\r
-                               if( ( xBlockingIsSuspended == pdTRUE ) || ( xControllingIsSuspended == pdTRUE ) )\r
-                               {\r
-                                       xErrorOccurred = pdTRUE;\r
-                               }                               \r
-                       \r
-                               /* Release the mutex, disinheriting the higher priority again. */\r
-                               if( xSemaphoreGiveRecursive( xMutex ) != pdPASS )\r
-                               {\r
-                                       xErrorOccurred = pdTRUE;\r
-                               }\r
-\r
-                               #if configUSE_PREEMPTION == 0\r
-                                       taskYIELD();\r
-                               #endif\r
-                       }\r
-               }\r
-\r
-               #if configUSE_PREEMPTION == 0\r
-               {\r
-                       taskYIELD();\r
-               }\r
-               #endif\r
-       }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-/* This is called to check that all the created tasks are still running. */\r
-portBASE_TYPE xAreRecursiveMutexTasksStillRunning( void )\r
-{\r
-portBASE_TYPE xReturn;\r
-static unsigned portBASE_TYPE uxLastControllingCycles = 0, uxLastBlockingCycles = 0, uxLastPollingCycles = 0;\r
-\r
-       /* Is the controlling task still cycling? */\r
-       if( uxLastControllingCycles == uxControllingCycles )\r
-       {\r
-               xErrorOccurred = pdTRUE;\r
-       }\r
-       else\r
-       {\r
-               uxLastControllingCycles = uxControllingCycles;\r
-       }\r
-\r
-       /* Is the blocking task still cycling? */\r
-       if( uxLastBlockingCycles == uxBlockingCycles )\r
-       {\r
-               xErrorOccurred = pdTRUE;\r
-       }\r
-       else\r
-       {\r
-               uxLastBlockingCycles = uxBlockingCycles;\r
-       }\r
-\r
-       /* Is the polling task still cycling? */\r
-       if( uxLastPollingCycles == uxPollingCycles )\r
-       {\r
-               xErrorOccurred = pdTRUE;\r
-       }\r
-       else\r
-       {\r
-               uxLastPollingCycles = uxPollingCycles;\r
-       }\r
-\r
-       if( xErrorOccurred == pdTRUE )\r
-       {\r
-               xReturn = pdFAIL;\r
-       }\r
-       else\r
-       {\r
-               xReturn = pdTRUE;\r
-       }\r
-\r
-       return xReturn;\r
-}\r
-\r
-\r
-\r
-\r
index e0a04cabd49fc2bd0d0294f8652e9c3fb637548f..45919e965e06caf0c61a8504912868d3c2693927 100644 (file)
     <ClCompile Include="..\Common\Minimal\QueueOverwrite.c" />\r
     <ClCompile Include="..\Common\Minimal\QueueSet.c" />\r
     <ClCompile Include="..\Common\Minimal\QueueSetPolling.c" />\r
+    <ClCompile Include="..\Common\Minimal\recmutex.c" />\r
     <ClCompile Include="..\Common\Minimal\semtest.c" />\r
     <ClCompile Include="..\Common\Minimal\TaskNotify.c" />\r
     <ClCompile Include="..\Common\Minimal\timerdemo.c" />\r
-    <ClCompile Include="DemosModifiedForLowTickRate\recmutex.c" />\r
     <ClCompile Include="main.c">\r
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
index b7be92210f32490dd95b7cf522249ed2f51ac3d2..47b88f09e1cc2a374fe00d8609fee1ec0970a6e7 100644 (file)
@@ -25,9 +25,6 @@
     <Filter Include="FreeRTOS Source\Source\Portable">\r
       <UniqueIdentifier>{88f409e6-d396-4ac5-94bd-7a99c914be46}</UniqueIdentifier>\r
     </Filter>\r
-    <Filter Include="Demo App Source\Common Demo Tasks\ModifiedForLowTickRate">\r
-      <UniqueIdentifier>{143cf5a3-f134-4439-9f71-a201ae23b44b}</UniqueIdentifier>\r
-    </Filter>\r
     <Filter Include="Configuration Files">\r
       <UniqueIdentifier>{19ff1a34-36de-4c48-9d10-3fb1fa0d1fa4}</UniqueIdentifier>\r
       <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
@@ -76,9 +73,6 @@
     <ClCompile Include="..\Common\Minimal\blocktim.c">\r
       <Filter>Demo App Source\Common Demo Tasks</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="DemosModifiedForLowTickRate\recmutex.c">\r
-      <Filter>Demo App Source\Common Demo Tasks\ModifiedForLowTickRate</Filter>\r
-    </ClCompile>\r
     <ClCompile Include="..\..\Source\timers.c">\r
       <Filter>FreeRTOS Source\Source</Filter>\r
     </ClCompile>\r
     <ClCompile Include="..\Common\Minimal\QueueSetPolling.c">\r
       <Filter>Demo App Source\Common Demo Tasks</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\Common\Minimal\recmutex.c">\r
+      <Filter>Demo App Source\Common Demo Tasks</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="FreeRTOSConfig.h">\r
index f3414cc146be7356d26b61f27d0ab53163424bcc..984af95f494dfee0d60888f21c6e4d7b1ede9c9e 100644 (file)
@@ -82,7 +82,6 @@
 #include "string.h"\r
 \r
 /* Hardware specifics. */\r
-#warning Used to include the chip specific header here.\r
 #include "machine.h"\r
 \r
 /*-----------------------------------------------------------*/\r
index 898d84ddf38f9985c96a9dfb0582fe009f07233e..970c8f96ece8079c53949664b4def26c9400cdcb 100644 (file)
@@ -166,8 +166,8 @@ extern void vTaskExitCritical( void );
 #define portEXIT_CRITICAL()            vTaskExitCritical()\r
 \r
 /* As this port allows interrupt nesting... */\r
-#define portSET_INTERRUPT_MASK_FROM_ISR() get_ipl(); set_ipl( ( long ) configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
-#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ) set_ipl( ( long ) uxSavedInterruptStatus )\r
+#define portSET_INTERRUPT_MASK_FROM_ISR() ( UBaseType_t ) get_ipl(); set_ipl( ( signed long ) configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
+#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ) set_ipl( ( signed long ) uxSavedInterruptStatus )\r
 \r
 /*-----------------------------------------------------------*/\r
 \r