]> git.sur5r.net Git - freertos/commitdiff
Preparing for maintenance release -
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 15 Oct 2015 20:19:26 +0000 (20:19 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 15 Oct 2015 20:19:26 +0000 (20:19 +0000)
Bug fix - issue introduced in V8.2.2 when the current timer list is empty and the overflow timer list is not empty.
Add PIC32MZ EF (floating point) support and update the MZ demo project to test the flop context switching.
Improve efficiency of the stack overflow checking.
Add CLI to RX71M demo.
General tidy up of new RZ and RX projects - including ensuring the UART driver copes with 0 length strings.
Add stack overflow checking to the [old] PIC24 demo.

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

84 files changed:
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.cproject
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.project
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.settings/org.eclipse.core.resources.prefs
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/FreeRTOSConfig.h
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/RTOSDemo.ewd
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dbgdt
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dni
FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.wsdt
FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/ReadMe_Instructions.url [new file with mode: 0644]
FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/Interrupt_Entry_Stubs.asm
FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/settings/RTOSDemo.wsdt
FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/FreeRTOS_tick_config.c
FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/Full_Demo/IntQueueTimer.c
FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/cg_src/r_cg_scifa_user.c
FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/main.c
FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/.settings/org.eclipse.core.resources.prefs
FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/FreeRTOSConfig.h
FreeRTOS/Demo/PIC24_MPLAB/FreeRTOSConfig.h
FreeRTOS/Demo/PIC24_MPLAB/main.c
FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-default.mk
FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties
FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-local-default.mk
FreeRTOS/Demo/PIC24_MPLAB/nbproject/configurations.xml
FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/configurations.xml
FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/private.xml
FreeRTOS/Demo/PIC24_MPLAB/nbproject/project.xml
FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-local-PIC32MZ2048_SK.mk
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-variables.mk
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml
FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml
FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S
FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c [new file with mode: 0644]
FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h [new file with mode: 0644]
FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c
FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c
FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.cproject
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.project
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.settings/language.settings.xml
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo HardwareDebug.launch
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewd
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewp
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dbgdt
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dni
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wsdt
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wspos
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Blinky_Demo/main_blinky.c
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/FreeRTOSConfig.h
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/IntQueueTimer.h
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/main_full.c
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/interrupt_handlers.c
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/vector_table.c
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_intprg_iar.c [new file with mode: 0644]
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_macrodriver.h
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user.c [deleted file]
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_gcc.c [new file with mode: 0644]
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_iar.c
FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/main.c
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.cproject
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.project
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/RTOSDemo HardwareDebug.launch
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Blinky_Demo/main_blinky.c
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/FreeRTOSConfig.h
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.c
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.h
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/main_full.c
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/main.c
FreeRTOS/Source/include/FreeRTOS.h
FreeRTOS/Source/include/StackMacros.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/portable/IAR/RXv2/port.c
FreeRTOS/Source/portable/MPLAB/PIC32MZ/ISR_Support.h
FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c
FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S
FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h
FreeRTOS/Source/timers.c

index 2a946487ec75d3f42f8f5c89860c17d5457e02ca..3a0c4320b19e03688ec2774063501c7c2776e0b7 100644 (file)
@@ -69,7 +69,7 @@
                                                                <option id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.DIAG_WRAP.2105562167" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.DIAG_WRAP.off" valueType="enumerated"/>\r
                                                                <option id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.GEN_FUNC_SUBSECTIONS.1581338624" name="Place each function in a separate subsection (--gen_func_subsections, -ms)" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>\r
                                                                <option id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_LEVEL.669442165" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_LEVEL.0" valueType="enumerated"/>\r
-                                                               <option id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_FOR_SPEED.1297898020" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_FOR_SPEED.2" valueType="enumerated"/>\r
+                                                               <option id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_FOR_SPEED.1297898020" name="Speed vs. size trade-offs (--opt_for_speed, -mf)" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.OPT_FOR_SPEED.2" valueType="enumerated"/>\r
                                                                <inputType id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compiler.inputType__C_SRCS.1410406594" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compiler.inputType__C_SRCS"/>\r
                                                                <inputType id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compiler.inputType__CPP_SRCS.1014794987" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compiler.inputType__CPP_SRCS"/>\r
                                                                <inputType id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compiler.inputType__ASM_SRCS.372586409" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compiler.inputType__ASM_SRCS"/>\r
index 99c7bb65ec3d01d80ba913577d47fc168fe6b83c..1f5593a21b7aba09bd2c217f6e165219f637f3ff 100644 (file)
@@ -58,7 +58,7 @@
        </linkedResources>\r
        <filteredResources>\r
                <filter>\r
-                       <id>1427193581265</id>\r
+                       <id>1444926372795</id>\r
                        <name></name>\r
                        <type>10</type>\r
                        <matcher>\r
@@ -67,7 +67,7 @@
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1427193581275</id>\r
+                       <id>1444926372800</id>\r
                        <name></name>\r
                        <type>10</type>\r
                        <matcher>\r
@@ -76,7 +76,7 @@
                        </matcher>\r
                </filter>\r
                <filter>\r
-                       <id>1427193581275</id>\r
+                       <id>1444926372806</id>\r
                        <name></name>\r
                        <type>10</type>\r
                        <matcher>\r
                                <arguments>1.0-name-matches-false-false-Keil_*</arguments>\r
                        </matcher>\r
                </filter>\r
+               <filter>\r
+                       <id>1444926372810</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>1444926372815</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.ewd</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444926372819</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.ewp</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444926372823</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.ewt</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444926372829</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.eww</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444926372834</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.uvoptx</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444926372841</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.uvprojx</arguments>\r
+                       </matcher>\r
+               </filter>\r
                <filter>\r
                        <id>1424106057421</id>\r
                        <name>Full_Demo</name>\r
index 890c0c140041a9ddd25b4caf20ae7d0d3c723401..4b6a43cfe03cc584b6b393e6c4daeb90bd77e243 100644 (file)
@@ -11,8 +11,6 @@ encoding//Debug/Full_Demo/Standard_Demo_Tasks/subdir_rules.mk=UTF-8
 encoding//Debug/Full_Demo/Standard_Demo_Tasks/subdir_vars.mk=UTF-8\r
 encoding//Debug/Full_Demo/subdir_rules.mk=UTF-8\r
 encoding//Debug/Full_Demo/subdir_vars.mk=UTF-8\r
-encoding//Debug/Objects/subdir_rules.mk=UTF-8\r
-encoding//Debug/Objects/subdir_vars.mk=UTF-8\r
 encoding//Debug/SimplyBlinkyDemo/subdir_rules.mk=UTF-8\r
 encoding//Debug/SimplyBlinkyDemo/subdir_vars.mk=UTF-8\r
 encoding//Debug/SystemFiles_CCS/subdir_rules.mk=UTF-8\r
index e72cfcf99c32749b3bcc180f40e37cce4b169046..52003a7e508bc8074e2e2205285c343119e93bbe 100644 (file)
 /* 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
 \r
-The comprehensive demo uses FreeRTOS+CLI to create a simple command line \r
+The comprehensive demo uses FreeRTOS+CLI to create a simple command line\r
 interface through a UART.\r
 \r
 The blinky demo uses FreeRTOS's tickless idle mode to reduce power consumption.\r
-See the notes on the web page below regarding the difference in power saving \r
-that can be achieved between using the generic tickless implementation (as used \r
-by the blinky demo) and a tickless implementation that is tailored specifically \r
+See the notes on the web page below regarding the difference in power saving\r
+that can be achieved between using the generic tickless implementation (as used\r
+by the blinky demo) and a tickless implementation that is tailored specifically\r
 to the MSP432.\r
\r
+\r
 See http://www.FreeRTOS.org/TI_MSP432_Free_RTOS_Demo.html for instructions. */\r
 #define configCREATE_SIMPLE_TICKLESS_DEMO      0\r
 \r
index a8bc11b8ecd0a484394d5aa2f7cfd2e182ce586b..b34f889de3fcdec9c64fd02d5371b11cb064613c 100644 (file)
@@ -85,7 +85,7 @@
         </option>\r
         <option>\r
           <name>OCDynDriverList</name>\r
-          <state>JLINK_ID</state>\r
+          <state>IJET_ID</state>\r
         </option>\r
         <option>\r
           <name>OCLastSavedByProductVersion</name>\r
         <option>\r
           <name>IjetResetList</name>\r
           <version>1</version>\r
-          <state>10</state>\r
+          <state>4</state>\r
         </option>\r
         <option>\r
           <name>IjetHWResetDuration</name>\r
         </option>\r
         <option>\r
           <name>IjetCpuClockEdit</name>\r
-          <state>72.0</state>\r
+          <state></state>\r
         </option>\r
         <option>\r
           <name>IjetSwoPrescalerList</name>\r
index f93bb8a1b38634dfc43c255db656095568586740..9342bb415bd52ded0d163f050d0768b0e15835c8 100644 (file)
@@ -55,7 +55,7 @@
           </Tab>\r
         </Tabs>\r
         \r
-      <SelectedTab>0</SelectedTab></Wnd1><Wnd4>\r
+      <SelectedTab>0</SelectedTab></Wnd1><Wnd3>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-2417-20288</Identity>\r
           </Tab>\r
         </Tabs>\r
         \r
-      <SelectedTab>0</SelectedTab></Wnd4><Wnd5><Tabs><Tab><Identity>TabID-18267-27197</Identity><TabName>Disassembly</TabName><Factory>Disassembly</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd5></Windows>\r
+      <SelectedTab>0</SelectedTab></Wnd3></Windows>\r
     <Editor>\r
       \r
       \r
       \r
       \r
-    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>128</YPos2><SelStart2>5940</SelStart2><SelEnd2>5940</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$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>100</YPos2><SelStart2>5615</SelStart2><SelEnd2>5615</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>2232</YPos2><SelStart2>76407</SelStart2><SelEnd2>76435</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\include\StackMacros.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>76</YPos2><SelStart2>4839</SelStart2><SelEnd2>4839</SelEnd2></Tab><ActiveTab>2</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>74</YPos2><SelStart2>4540</SelStart2><SelEnd2>4540</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-00359FA0><key>iaridepm.enu1</key></Toolbar-00359FA0></Sizes></Row0><Row1><Sizes><Toolbar-0D2EC0B0><key>debuggergui.enu1</key></Toolbar-0D2EC0B0></Sizes></Row1><Row2><Sizes><Toolbar-0D2DBAF8><key>armjet.enu1</key></Toolbar-0D2DBAF8></Sizes></Row2></Top><Left><Row0><Sizes><Wnd4><Rect><Top>-2</Top><Left>-2</Left><Bottom>585</Bottom><Right>307</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>183929</sizeVertCX><sizeVertCY>596545</sizeVertCY></Rect></Wnd4></Sizes></Row0></Left><Right><Row0><Sizes><Wnd5><Rect><Top>-2</Top><Left>-2</Left><Bottom>585</Bottom><Right>198</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>596545</sizeVertCY></Rect></Wnd5></Sizes></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>307</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>309</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>314024</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+    <Top><Row0><Sizes><Toolbar-00C4A4B8><key>iaridepm.enu1</key></Toolbar-00C4A4B8></Sizes></Row0><Row1><Sizes><Toolbar-0F081000><key>debuggergui.enu1</key></Toolbar-0F081000></Sizes></Row1><Row2><Sizes><Toolbar-0F0810C8><key>armjet.enu1</key></Toolbar-0F0810C8></Sizes></Row2></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>585</Bottom><Right>307</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>183929</sizeVertCX><sizeVertCY>596545</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>307</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>309</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>314024</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
   </Desktop>\r
 </Project>\r
 \r
index 4f6bf46beea158abce968b9c1dcff4d389ccc7ac..32d1b1873a3d70e96dc48deb8ef18dfc47e9e752 100644 (file)
@@ -9,21 +9,8 @@ TriggerName=main
 LimitSize=0\r
 ByteLimit=50\r
 [PlDriver]\r
-MemConfigValue=\r
+MemConfigValue=C:\DevTools\IAR Systems\Embedded Workbench 7.2\arm\CONFIG\debugger\TexasInstruments\MSP432P401R.svd\r
 FirstRun=0\r
-[PlCacheRanges]\r
-CustomRanges0=0 0 536870912 1 0\r
-CustomRangesText0=Code\r
-CustomRanges1=0 536870912 33554432 0 0\r
-CustomRangesText1=SRAM\r
-CustomRanges2=0 570425344 33554432 0 0\r
-CustomRangesText2=bit-banding\r
-CustomRanges3=0 1073741824 33554432 2 0\r
-CustomRangesText3=Peripheral\r
-CustomRanges4=0 1107296256 33554432 2 0\r
-CustomRangesText4=bit-banding\r
-CustomRanges5=0 3758096384 536870912 2 0\r
-CustomRangesText5=Private peripheral\r
 [Jet]\r
 JetConnSerialNo=73866\r
 JetConnFoundProbes=\r
@@ -32,7 +19,7 @@ MultiCoreRunAll=0
 OnlineReset=Software\r
 PrevWtdReset=System\r
 [DebugChecksum]\r
-Checksum=701872400\r
+Checksum=-1201177865\r
 [Exceptions]\r
 StopOnUncaught=_ 0\r
 StopOnThrow=_ 0\r
@@ -77,6 +64,19 @@ ITMportsLogFile=0
 ITMlogFile=$PROJ_DIR$\ITM.log\r
 [Breakpoints]\r
 Count=0\r
+[PlCacheRanges]\r
+CustomRanges0=0 0 536870912 1 0\r
+CustomRangesText0=Code\r
+CustomRanges1=0 536870912 33554432 0 0\r
+CustomRangesText1=SRAM\r
+CustomRanges2=0 570425344 33554432 0 0\r
+CustomRangesText2=bit-banding\r
+CustomRanges3=0 1073741824 33554432 2 0\r
+CustomRangesText3=Peripheral\r
+CustomRanges4=0 1107296256 33554432 2 0\r
+CustomRangesText4=bit-banding\r
+CustomRanges5=0 3758096384 536870912 2 0\r
+CustomRangesText5=Private peripheral\r
 [Trace2]\r
 Enabled=0\r
 ShowSource=0\r
@@ -90,36 +90,45 @@ EventFOLD=0
 EventLSU=0\r
 EventSLEEP=0\r
 [PowerLog]\r
+Title_0=I0\r
+Symbol_0=0 4 1\r
 LogEnabled=0\r
 GraphEnabled=0\r
 ShowTimeLog=1\r
-ShowTimeSum=0\r
-Title_0=I0\r
-Symbol_0=0 4 1\r
 LiveEnabled=0\r
 LiveFile=PowerLogLive.log\r
 [DataLog]\r
 LogEnabled=0\r
-SumEnabled=0\r
 GraphEnabled=0\r
 ShowTimeLog=1\r
+SumEnabled=0\r
 ShowTimeSum=1\r
 [EventLog]\r
+Title_0=Ch3\r
+Symbol_0=0 4 1\r
+Title_1=Ch2\r
+Symbol_1=0 4 1\r
+Title_2=Ch1\r
+Symbol_2=0 4 1\r
+Title_3=Ch0\r
+Symbol_3=0 4 1\r
 LogEnabled=0\r
-SumEnabled=0\r
 GraphEnabled=0\r
 ShowTimeLog=1\r
+SumEnabled=0\r
 ShowTimeSum=1\r
 SumSortOrder=0\r
 [InterruptLog]\r
 LogEnabled=0\r
-SumEnabled=0\r
 GraphEnabled=0\r
 ShowTimeLog=1\r
+SumEnabled=0\r
 ShowTimeSum=1\r
 SumSortOrder=0\r
 [CallStackLog]\r
 Enabled=0\r
+[CallStackStripe]\r
+ShowTiming=1\r
 [DriverProfiling]\r
 Enabled=0\r
 Mode=3\r
index 24a90c003190908f7f5d6fbe1fc48d53bbb91513..18cc65ad56cd1baea09d51474a4c59e77f87c2c4 100644 (file)
@@ -24,7 +24,7 @@
     <Windows>\r
       \r
       \r
-    <Wnd1>\r
+    <Wnd2>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-2476-27879</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/FreeRTOS_Source/tasks.c</ExpandedNode></NodeDict></Session>\r
           </Tab>\r
         </Tabs>\r
         \r
-      <SelectedTab>0</SelectedTab></Wnd1><Wnd3>\r
+      <SelectedTab>0</SelectedTab></Wnd2><Wnd3>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-28448-28006</Identity>\r
       \r
       \r
       \r
-    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>61</YPos2><SelStart2>5940</SelStart2><SelEnd2>5940</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$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>67</YPos2><SelStart2>5615</SelStart2><SelEnd2>5615</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-010D90F0><key>iaridepm.enu1</key></Toolbar-010D90F0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>587</Bottom><Right>381</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>227976</sizeVertCX><sizeVertCY>598577</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>353</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>355</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>360772</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+    <Top><Row0><Sizes><Toolbar-00C4A4B8><key>iaridepm.enu1</key></Toolbar-00C4A4B8></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>587</Bottom><Right>381</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>227976</sizeVertCX><sizeVertCY>598577</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>353</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>355</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>360772</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
   </Desktop>\r
 </Workspace>\r
 \r
diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/ReadMe_Instructions.url b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/ReadMe_Instructions.url
new file mode 100644 (file)
index 0000000..c7dc886
--- /dev/null
@@ -0,0 +1,5 @@
+[{000214A0-0000-0000-C000-000000000046}]\r
+Prop3=19,2\r
+[InternetShortcut]\r
+URL=http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html\r
+IDList=\r
index 2c85e509df42461fb6f7840b38c733a9414b2595..c3819c52268258c3a4adb9c2d5ac1736fa084261 100644 (file)
@@ -67,7 +67,7 @@
     1 tab == 4 spaces!\r
 */\r
        SECTION intvec:CODE:ROOT(2)\r
-    ARM\r
+       ARM\r
 \r
        EXTERN pxISRFunction\r
        EXTERN FreeRTOS_Tick_Handler\r
index 319c4dfb90a6decf125d73f0b6a900dcfcbe07cb..e4ce814e161006715b2b5c4afbf9d59eeb5fd87f 100644 (file)
@@ -35,7 +35,7 @@
     <Windows>\r
       \r
       \r
-    <Wnd1>\r
+    <Wnd0>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-31096-4084</Identity>\r
@@ -47,7 +47,7 @@
           </Tab>\r
         </Tabs>\r
         \r
-      <SelectedTab>0</SelectedTab></Wnd1><Wnd3>\r
+      <SelectedTab>0</SelectedTab></Wnd0><Wnd2>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-12820-6268</Identity>\r
           </Tab>\r
         <Tab><Identity>TabID-6803-3328</Identity><TabName>Ambiguous Definitions</TabName><Factory>Select-Ambiguous-Definitions</Factory><Session/></Tab></Tabs>\r
         \r
-      <SelectedTab>1</SelectedTab></Wnd3></Windows>\r
+      <SelectedTab>1</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>67</YPos2><SelStart2>6976</SelStart2><SelEnd2>6976</SelEnd2></Tab><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>69</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Blinky_Demo\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>69</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\ARM_CRx_No_GIC\portASM.s</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>81</YPos2><SelStart2>4099</SelStart2><SelEnd2>4099</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Full_Demo\reg_test_IAR.asm</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>101</YPos2><SelStart2>5250</SelStart2><SelEnd2>5250</SelEnd2></Tab><ActiveTab>4</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>67</YPos2><SelStart2>6976</SelStart2><SelEnd2>6976</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>69</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Blinky_Demo\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>69</YPos2><SelStart2>0</SelStart2><SelEnd2>0</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-00BB9AA0><key>iaridepm.enu1</key></Toolbar-00BB9AA0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>619</Bottom><Right>383</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>229167</sizeVertCX><sizeVertCY>631098</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>321</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>323</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>328252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+    <Top><Row0><Sizes><Toolbar-00BC9AA0><key>iaridepm.enu1</key></Toolbar-00BC9AA0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>619</Bottom><Right>383</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>229167</sizeVertCX><sizeVertCY>631098</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>321</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>323</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>328252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
   </Desktop>\r
 </Workspace>\r
 \r
index 449274271e903b99d7ff0da22548642e409bf25e..8a4fad7b24551b83e91ecdc17ce7dde60b1c5816 100644 (file)
@@ -196,12 +196,12 @@ ISRFunction_t pxISRToCall = pxISRFunction;
        $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
        static void FreeRTOS_Tick_Handler_Entry( void )\r
        {\r
-               __asm volatile (                                                                                                                \\r
-                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                                       "LDR    R1, =FreeRTOS_Tick_Handler                      \t\n"   \\r
-                                                       "STR    R1, [r0]                                                        \t\n"   \\r
-                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+               __asm volatile (\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"\r
+                                                       "LDR    R1, =FreeRTOS_Tick_Handler                      \t\n"\r
+                                                       "STR    R1, [r0]                                                        \t\n"\r
+                                                       "POP    {r0-r1}                                                         \t\n"\r
                                                        "B              FreeRTOS_IRQ_Handler                                    "\r
                                                );\r
        }\r
index 5aee68febc5d451a64f8011a4741868c9275c79a..63ede635a1d79ce0cc0b7fcfc0f75bb91fe7c3c6 100644 (file)
@@ -202,18 +202,20 @@ void vCMT_1_Channel_1_ISR( void )
  * interrupt entry (including interrupt nesting), before calling the C function\r
  * saved in the pxISRFunction variable.  NOTE:  The entry points are naked\r
  * functions - do not add C code to these functions.\r
+ *\r
+ * See http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html\r
  */\r
 #ifdef __GNUC__\r
        /* The IAR equivalent is implemented in\r
        $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
        static void vCMT_1_Channel_0_ISR_Entry( void )\r
        {\r
-               __asm volatile (                                                                                                                \\r
-                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                                       "LDR    r1, =vCMT_1_Channel_0_ISR                       \t\n"   \\r
-                                                       "STR    r1, [r0]                                                        \t\n"   \\r
-                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+               __asm volatile (\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"\r
+                                                       "LDR    r1, =vCMT_1_Channel_0_ISR                       \t\n"\r
+                                                       "STR    r1, [r0]                                                        \t\n"\r
+                                                       "POP    {r0-r1}                                                         \t\n"\r
                                                        "B              FreeRTOS_IRQ_Handler                                    "\r
                                                );\r
        }\r
@@ -225,12 +227,12 @@ void vCMT_1_Channel_1_ISR( void )
        $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
        static void vCMT_1_Channel_1_ISR_Entry( void )\r
        {\r
-               __asm volatile (                                                                                                                \\r
-                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                                       "LDR    r1, =vCMT_1_Channel_1_ISR                       \t\n"   \\r
-                                                       "STR    r1, [r0]                                                        \t\n"   \\r
-                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+               __asm volatile (\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"\r
+                                                       "LDR    r1, =vCMT_1_Channel_1_ISR                       \t\n"\r
+                                                       "STR    r1, [r0]                                                        \t\n"\r
+                                                       "POP    {r0-r1}                                                         \t\n"\r
                                                        "B              FreeRTOS_IRQ_Handler                                    "\r
                                                );\r
        }\r
index adde4d62bce53d976d2a1ae566d98e545aca2bf0..cd3e2be603387d174b02d745978df16cf8acc764 100644 (file)
@@ -375,7 +375,7 @@ const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );
        ( void ) pxPort;\r
 \r
        /* Don't send the string unless the previous string has been sent. */\r
-       if( xSendingTask == NULL )\r
+       if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )\r
        {\r
                /* Ensure the calling task's notification state is not already\r
                pending. */\r
@@ -433,12 +433,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
        $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
        void r_scifa2_txif2_interrupt_entry( void )\r
        {\r
-               __asm volatile (                                                                                                                \\r
-                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                                       "LDR    r1, =r_scifa2_txif2_interrupt           \t\n"   \\r
-                                                       "STR    r1, [r0]                                                        \t\n"   \\r
-                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+               __asm volatile (\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"\r
+                                                       "LDR    r1, =r_scifa2_txif2_interrupt           \t\n"\r
+                                                       "STR    r1, [r0]                                                        \t\n"\r
+                                                       "POP    {r0-r1}                                                         \t\n"\r
                                                        "B              FreeRTOS_IRQ_Handler                                    "\r
                                                );\r
        }\r
@@ -450,12 +450,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
        $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
        void r_scifa2_rxif2_interrupt_entry( void )\r
        {\r
-               __asm volatile (                                                                                                                \\r
-                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                                       "LDR    r1, =r_scifa2_rxif2_interrupt           \t\n"   \\r
-                                                       "STR    r1, [r0]                                                        \t\n"   \\r
-                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+               __asm volatile (\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"\r
+                                                       "LDR    r1, =r_scifa2_rxif2_interrupt           \t\n"\r
+                                                       "STR    r1, [r0]                                                        \t\n"\r
+                                                       "POP    {r0-r1}                                                         \t\n"\r
                                                        "B              FreeRTOS_IRQ_Handler                                    "\r
                                                );\r
        }\r
@@ -467,12 +467,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
        $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
        void r_scifa2_drif2_interrupt_entry( void )\r
        {\r
-               __asm volatile (                                                                                                                \\r
-                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                                       "LDR    r1, =r_scifa2_drif2_interrupt           \t\n"   \\r
-                                                       "STR    r1, [r0]                                                        \t\n"   \\r
-                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+               __asm volatile (\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"\r
+                                                       "LDR    r1, =r_scifa2_drif2_interrupt           \t\n"\r
+                                                       "STR    r1, [r0]                                                        \t\n"\r
+                                                       "POP    {r0-r1}                                                         \t\n"\r
                                                        "B              FreeRTOS_IRQ_Handler                                    "\r
                                                );\r
        }\r
@@ -484,12 +484,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
        $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
        void r_scifa2_brif2_interrupt_entry( void )\r
        {\r
-               __asm volatile (                                                                                                                \\r
-                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                                       "LDR    r1, =r_scifa2_brif2_interrupt           \t\n"   \\r
-                                                       "STR    r1, [r0]                                                        \t\n"   \\r
-                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+               __asm volatile (\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"\r
+                                                       "LDR    r1, =r_scifa2_brif2_interrupt           \t\n"\r
+                                                       "STR    r1, [r0]                                                        \t\n"\r
+                                                       "POP    {r0-r1}                                                         \t\n"\r
                                                        "B              FreeRTOS_IRQ_Handler                                    "\r
                                                );\r
        }\r
index 92006388a9dbbc0f8d7baf0d0efdd2f239fe3e8f..fe8491ae0a1199e662ac1efd9da52f5676962695 100644 (file)
@@ -83,6 +83,8 @@
  * THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO\r
  * APPLICATION, AND ITS ASSOCIATE FreeRTOS ARCHITECTURE PORT!\r
  *\r
+ * http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html\r
+ *\r
  */\r
 \r
 /* Standard includes. */\r
@@ -136,6 +138,7 @@ extern void R_Systeminit( void );
 \r
 /*-----------------------------------------------------------*/\r
 \r
+/* See http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html */\r
 int main( void )\r
 {\r
        /* The start up code does not include a routine to clear the BSS segment to\r
index a3e220f5788502cd54ac5085b9954627d4a01cc7..a9e5b95c6ddc6c9d8bc8e254ef879101d346b2fa 100644 (file)
@@ -22,3 +22,49 @@ encoding//Debug/objects.mk=UTF-8
 encoding//Debug/sources.mk=UTF-8\r
 encoding//Debug/subdir_rules.mk=UTF-8\r
 encoding//Debug/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/Blinky_Demo/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/Blinky_Demo/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/CCS_Only/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/CCS_Only/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/FreeRTOS_Source/portable/MemMang/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/FreeRTOS_Source/portable/MemMang/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/FreeRTOS_Source/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/FreeRTOS_Source/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/Full_Demo/FreeRTOS+CLI/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/Full_Demo/FreeRTOS+CLI/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/Full_Demo/Standard_Demo_Tasks/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/Full_Demo/Standard_Demo_Tasks/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/Full_Demo/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/Full_Demo/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/driverlib/MSP430FR5xx_6xx/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/driverlib/MSP430FR5xx_6xx/subdir_vars.mk=UTF-8\r
+encoding//Large_Data/makefile=UTF-8\r
+encoding//Large_Data/objects.mk=UTF-8\r
+encoding//Large_Data/sources.mk=UTF-8\r
+encoding//Large_Data/subdir_rules.mk=UTF-8\r
+encoding//Large_Data/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/Blinky_Demo/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/Blinky_Demo/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/CCS_Only/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/CCS_Only/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/FreeRTOS_Source/portable/MemMang/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/FreeRTOS_Source/portable/MemMang/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/FreeRTOS_Source/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/FreeRTOS_Source/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/Full_Demo/FreeRTOS+CLI/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/Full_Demo/FreeRTOS+CLI/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/Full_Demo/Standard_Demo_Tasks/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/Full_Demo/Standard_Demo_Tasks/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/Full_Demo/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/Full_Demo/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/driverlib/MSP430FR5xx_6xx/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/driverlib/MSP430FR5xx_6xx/subdir_vars.mk=UTF-8\r
+encoding//Small_Data/makefile=UTF-8\r
+encoding//Small_Data/objects.mk=UTF-8\r
+encoding//Small_Data/sources.mk=UTF-8\r
+encoding//Small_Data/subdir_rules.mk=UTF-8\r
+encoding//Small_Data/subdir_vars.mk=UTF-8\r
index 2fedcc40d9dcd81c63ab5aab4c996460bd9a67ef..795cfd68f35bdb87024632c2a9bef9b450fbf720 100644 (file)
@@ -198,7 +198,7 @@ CLI. */
 #else\r
        /* Using the CCS pre-processor constants. */\r
        #ifdef __LARGE_DATA_MODEL__\r
-               #define configMINIMAL_STACK_SIZE                ( ( unsigned short ) 80 )\r
+               #define configMINIMAL_STACK_SIZE                ( ( unsigned short ) 85 )\r
        #else\r
                #define configMINIMAL_STACK_SIZE                ( ( unsigned short ) 140 )\r
        #endif\r
index b67f777047068b6018a95b193362cc46386a86d0..c210f77d887cde7958319b82fc35b255615eecb5 100644 (file)
@@ -96,6 +96,7 @@
 #define configUSE_TRACE_FACILITY               0\r
 #define configUSE_16_BIT_TICKS                 1\r
 #define configIDLE_SHOULD_YIELD                        1\r
+#define configCHECK_FOR_STACK_OVERFLOW  2\r
 \r
 /* Co-routine definitions. */\r
 #define configUSE_CO_ROUTINES          1\r
index 8fdd1c812b2857f92f2088c5d85ac2f4fbd315ce..faf9cd5618659a54890ebc3296339868822ccd2c 100644 (file)
@@ -165,6 +165,10 @@ static void vCheckTask( void *pvParameters );
  */\r
 static void prvSetupHardware( void );\r
 \r
+/* Prototypes for the standard FreeRTOS callback/hook functions implemented\r
+within this file. */\r
+void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* The queue used to send messages to the LCD task. */\r
@@ -290,3 +294,15 @@ void vApplicationIdleHook( void )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )\r
+{\r
+       ( void ) pcTaskName;\r
+       ( void ) pxTask;\r
+\r
+       /* Run time stack overflow checking is performed if\r
+       configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook\r
+       function is called if a stack overflow is detected. */\r
+       taskDISABLE_INTERRUPTS();\r
+       for( ;; );\r
+}\r
+\r
index 9dd5632f9bddcae1553af18fcb012ddb3ba8d478..60fba524c3df8f05eecbb1a3af0e39d9a101b722 100644 (file)
@@ -44,6 +44,9 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
 # Distribution Directory
 DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
 
+# Source Files Quoted if spaced
+SOURCEFILES_QUOTED_IF_SPACED=../../Source/portable/MemMang/heap_1.c ../../Source/portable/MPLAB/PIC24_dsPIC/port.c ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S ../../Source/list.c ../../Source/queue.c ../../Source/tasks.c ../../Source/timers.c ../../Source/croutine.c ../Common/Minimal/BlockQ.c ../Common/Minimal/blocktim.c ../Common/Minimal/comtest.c ../Common/Minimal/crflash.c ../Common/Minimal/integer.c timertest.c lcd.c main.c serial/serial.c ParTest/ParTest.c
+
 # Object Files Quoted if spaced
 OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/897580706/heap_1.o ${OBJECTDIR}/_ext/410575107/port.o ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o ${OBJECTDIR}/_ext/1787047461/list.o ${OBJECTDIR}/_ext/1787047461/queue.o ${OBJECTDIR}/_ext/1787047461/tasks.o ${OBJECTDIR}/_ext/1787047461/timers.o ${OBJECTDIR}/_ext/1787047461/croutine.o ${OBJECTDIR}/_ext/270959020/BlockQ.o ${OBJECTDIR}/_ext/270959020/blocktim.o ${OBJECTDIR}/_ext/270959020/comtest.o ${OBJECTDIR}/_ext/270959020/crflash.o ${OBJECTDIR}/_ext/270959020/integer.o ${OBJECTDIR}/timertest.o ${OBJECTDIR}/lcd.o ${OBJECTDIR}/main.o ${OBJECTDIR}/serial/serial.o ${OBJECTDIR}/ParTest/ParTest.o
 POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/897580706/heap_1.o.d ${OBJECTDIR}/_ext/410575107/port.o.d ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d ${OBJECTDIR}/_ext/1787047461/list.o.d ${OBJECTDIR}/_ext/1787047461/queue.o.d ${OBJECTDIR}/_ext/1787047461/tasks.o.d ${OBJECTDIR}/_ext/1787047461/timers.o.d ${OBJECTDIR}/_ext/1787047461/croutine.o.d ${OBJECTDIR}/_ext/270959020/BlockQ.o.d ${OBJECTDIR}/_ext/270959020/blocktim.o.d ${OBJECTDIR}/_ext/270959020/comtest.o.d ${OBJECTDIR}/_ext/270959020/crflash.o.d ${OBJECTDIR}/_ext/270959020/integer.o.d ${OBJECTDIR}/timertest.o.d ${OBJECTDIR}/lcd.o.d ${OBJECTDIR}/main.o.d ${OBJECTDIR}/serial/serial.o.d ${OBJECTDIR}/ParTest/ParTest.o.d
@@ -51,6 +54,9 @@ POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/897580706/heap_1.o.d ${OBJECTDIR}/_ext/41057
 # Object Files
 OBJECTFILES=${OBJECTDIR}/_ext/897580706/heap_1.o ${OBJECTDIR}/_ext/410575107/port.o ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o ${OBJECTDIR}/_ext/1787047461/list.o ${OBJECTDIR}/_ext/1787047461/queue.o ${OBJECTDIR}/_ext/1787047461/tasks.o ${OBJECTDIR}/_ext/1787047461/timers.o ${OBJECTDIR}/_ext/1787047461/croutine.o ${OBJECTDIR}/_ext/270959020/BlockQ.o ${OBJECTDIR}/_ext/270959020/blocktim.o ${OBJECTDIR}/_ext/270959020/comtest.o ${OBJECTDIR}/_ext/270959020/crflash.o ${OBJECTDIR}/_ext/270959020/integer.o ${OBJECTDIR}/timertest.o ${OBJECTDIR}/lcd.o ${OBJECTDIR}/main.o ${OBJECTDIR}/serial/serial.o ${OBJECTDIR}/ParTest/ParTest.o
 
+# Source Files
+SOURCEFILES=../../Source/portable/MemMang/heap_1.c ../../Source/portable/MPLAB/PIC24_dsPIC/port.c ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S ../../Source/list.c ../../Source/queue.c ../../Source/tasks.c ../../Source/timers.c ../../Source/croutine.c ../Common/Minimal/BlockQ.c ../Common/Minimal/blocktim.c ../Common/Minimal/comtest.c ../Common/Minimal/crflash.c ../Common/Minimal/integer.c timertest.c lcd.c main.c serial/serial.c ParTest/ParTest.c
+
 
 CFLAGS=
 ASFLAGS=
@@ -66,7 +72,10 @@ LDLIBSOPTIONS=
 FIXDEPS=fixDeps
 
 .build-conf:  ${BUILD_SUBPROJECTS}
-       ${MAKE} ${MAKE_OPTIONS} -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+ifneq ($(INFORMATION_MESSAGE), )
+       @echo $(INFORMATION_MESSAGE)
+endif
+       ${MAKE}  -f nbproject/Makefile-default.mk dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
 
 MP_PROCESSOR_OPTION=24FJ128GA010
 MP_LINKER_FILE_OPTION=,--script=p24FJ128GA010.gld
@@ -74,208 +83,242 @@ MP_LINKER_FILE_OPTION=,--script=p24FJ128GA010.gld
 # Rules for buildStep: compile
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
 ${OBJECTDIR}/_ext/897580706/heap_1.o: ../../Source/portable/MemMang/heap_1.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/897580706 
+       @${MKDIR} "${OBJECTDIR}/_ext/897580706" 
        @${RM} ${OBJECTDIR}/_ext/897580706/heap_1.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MemMang/heap_1.c  -o ${OBJECTDIR}/_ext/897580706/heap_1.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/897580706/heap_1.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/897580706/heap_1.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MemMang/heap_1.c  -o ${OBJECTDIR}/_ext/897580706/heap_1.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/897580706/heap_1.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/897580706/heap_1.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/410575107/port.o: ../../Source/portable/MPLAB/PIC24_dsPIC/port.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/410575107 
+       @${MKDIR} "${OBJECTDIR}/_ext/410575107" 
        @${RM} ${OBJECTDIR}/_ext/410575107/port.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MPLAB/PIC24_dsPIC/port.c  -o ${OBJECTDIR}/_ext/410575107/port.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/410575107/port.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/410575107/port.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MPLAB/PIC24_dsPIC/port.c  -o ${OBJECTDIR}/_ext/410575107/port.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/410575107/port.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/410575107/port.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/list.o: ../../Source/list.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/list.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/list.c  -o ${OBJECTDIR}/_ext/1787047461/list.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/list.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/list.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/list.c  -o ${OBJECTDIR}/_ext/1787047461/list.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/list.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/list.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/queue.o: ../../Source/queue.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/queue.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/queue.c  -o ${OBJECTDIR}/_ext/1787047461/queue.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/queue.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/queue.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/queue.c  -o ${OBJECTDIR}/_ext/1787047461/queue.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/queue.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/queue.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/tasks.o: ../../Source/tasks.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/tasks.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/tasks.c  -o ${OBJECTDIR}/_ext/1787047461/tasks.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/tasks.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/tasks.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/tasks.c  -o ${OBJECTDIR}/_ext/1787047461/tasks.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/tasks.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/tasks.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/timers.o: ../../Source/timers.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/timers.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/timers.c  -o ${OBJECTDIR}/_ext/1787047461/timers.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/timers.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/timers.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/timers.c  -o ${OBJECTDIR}/_ext/1787047461/timers.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/timers.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/timers.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/croutine.o: ../../Source/croutine.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/croutine.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/croutine.c  -o ${OBJECTDIR}/_ext/1787047461/croutine.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/croutine.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/croutine.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/croutine.c  -o ${OBJECTDIR}/_ext/1787047461/croutine.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/croutine.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/croutine.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/BlockQ.o: ../Common/Minimal/BlockQ.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/BlockQ.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/BlockQ.c  -o ${OBJECTDIR}/_ext/270959020/BlockQ.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/BlockQ.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/BlockQ.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/BlockQ.c  -o ${OBJECTDIR}/_ext/270959020/BlockQ.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/BlockQ.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/BlockQ.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/blocktim.o: ../Common/Minimal/blocktim.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/blocktim.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/blocktim.c  -o ${OBJECTDIR}/_ext/270959020/blocktim.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/blocktim.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/blocktim.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/blocktim.c  -o ${OBJECTDIR}/_ext/270959020/blocktim.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/blocktim.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/blocktim.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/comtest.o: ../Common/Minimal/comtest.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/comtest.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/comtest.c  -o ${OBJECTDIR}/_ext/270959020/comtest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/comtest.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/comtest.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/comtest.c  -o ${OBJECTDIR}/_ext/270959020/comtest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/comtest.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/comtest.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/crflash.o: ../Common/Minimal/crflash.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/crflash.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/crflash.c  -o ${OBJECTDIR}/_ext/270959020/crflash.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/crflash.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/crflash.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/crflash.c  -o ${OBJECTDIR}/_ext/270959020/crflash.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/crflash.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/crflash.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/integer.o: ../Common/Minimal/integer.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/integer.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/integer.c  -o ${OBJECTDIR}/_ext/270959020/integer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/integer.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/integer.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/integer.c  -o ${OBJECTDIR}/_ext/270959020/integer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/integer.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/integer.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/timertest.o: timertest.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR} 
+       @${MKDIR} "${OBJECTDIR}" 
        @${RM} ${OBJECTDIR}/timertest.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  timertest.c  -o ${OBJECTDIR}/timertest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/timertest.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/timertest.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  timertest.c  -o ${OBJECTDIR}/timertest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/timertest.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/timertest.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/lcd.o: lcd.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR} 
+       @${MKDIR} "${OBJECTDIR}" 
        @${RM} ${OBJECTDIR}/lcd.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  lcd.c  -o ${OBJECTDIR}/lcd.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/lcd.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/lcd.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  lcd.c  -o ${OBJECTDIR}/lcd.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/lcd.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/lcd.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/main.o: main.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR} 
+       @${MKDIR} "${OBJECTDIR}" 
        @${RM} ${OBJECTDIR}/main.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  main.c  -o ${OBJECTDIR}/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/main.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/main.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  main.c  -o ${OBJECTDIR}/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/main.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/serial/serial.o: serial/serial.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/serial 
+       @${MKDIR} "${OBJECTDIR}/serial" 
        @${RM} ${OBJECTDIR}/serial/serial.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  serial/serial.c  -o ${OBJECTDIR}/serial/serial.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/serial/serial.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/serial/serial.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  serial/serial.c  -o ${OBJECTDIR}/serial/serial.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/serial/serial.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/serial/serial.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/ParTest/ParTest.o: ParTest/ParTest.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/ParTest 
+       @${MKDIR} "${OBJECTDIR}/ParTest" 
        @${RM} ${OBJECTDIR}/ParTest/ParTest.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ParTest/ParTest.c  -o ${OBJECTDIR}/ParTest/ParTest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/ParTest/ParTest.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/ParTest/ParTest.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ParTest/ParTest.c  -o ${OBJECTDIR}/ParTest/ParTest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/ParTest/ParTest.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1    -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/ParTest/ParTest.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 else
 ${OBJECTDIR}/_ext/897580706/heap_1.o: ../../Source/portable/MemMang/heap_1.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/897580706 
+       @${MKDIR} "${OBJECTDIR}/_ext/897580706" 
        @${RM} ${OBJECTDIR}/_ext/897580706/heap_1.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MemMang/heap_1.c  -o ${OBJECTDIR}/_ext/897580706/heap_1.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/897580706/heap_1.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/897580706/heap_1.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MemMang/heap_1.c  -o ${OBJECTDIR}/_ext/897580706/heap_1.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/897580706/heap_1.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/897580706/heap_1.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/410575107/port.o: ../../Source/portable/MPLAB/PIC24_dsPIC/port.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/410575107 
+       @${MKDIR} "${OBJECTDIR}/_ext/410575107" 
        @${RM} ${OBJECTDIR}/_ext/410575107/port.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MPLAB/PIC24_dsPIC/port.c  -o ${OBJECTDIR}/_ext/410575107/port.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/410575107/port.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/410575107/port.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/portable/MPLAB/PIC24_dsPIC/port.c  -o ${OBJECTDIR}/_ext/410575107/port.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/410575107/port.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/410575107/port.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/list.o: ../../Source/list.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/list.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/list.c  -o ${OBJECTDIR}/_ext/1787047461/list.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/list.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/list.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/list.c  -o ${OBJECTDIR}/_ext/1787047461/list.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/list.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/list.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/queue.o: ../../Source/queue.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/queue.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/queue.c  -o ${OBJECTDIR}/_ext/1787047461/queue.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/queue.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/queue.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/queue.c  -o ${OBJECTDIR}/_ext/1787047461/queue.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/queue.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/queue.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/tasks.o: ../../Source/tasks.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/tasks.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/tasks.c  -o ${OBJECTDIR}/_ext/1787047461/tasks.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/tasks.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/tasks.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/tasks.c  -o ${OBJECTDIR}/_ext/1787047461/tasks.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/tasks.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/tasks.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/timers.o: ../../Source/timers.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/timers.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/timers.c  -o ${OBJECTDIR}/_ext/1787047461/timers.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/timers.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/timers.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/timers.c  -o ${OBJECTDIR}/_ext/1787047461/timers.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/timers.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/timers.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/1787047461/croutine.o: ../../Source/croutine.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/1787047461 
+       @${MKDIR} "${OBJECTDIR}/_ext/1787047461" 
        @${RM} ${OBJECTDIR}/_ext/1787047461/croutine.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/croutine.c  -o ${OBJECTDIR}/_ext/1787047461/croutine.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/croutine.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/1787047461/croutine.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../../Source/croutine.c  -o ${OBJECTDIR}/_ext/1787047461/croutine.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/1787047461/croutine.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/1787047461/croutine.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/BlockQ.o: ../Common/Minimal/BlockQ.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/BlockQ.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/BlockQ.c  -o ${OBJECTDIR}/_ext/270959020/BlockQ.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/BlockQ.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/BlockQ.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/BlockQ.c  -o ${OBJECTDIR}/_ext/270959020/BlockQ.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/BlockQ.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/BlockQ.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/blocktim.o: ../Common/Minimal/blocktim.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/blocktim.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/blocktim.c  -o ${OBJECTDIR}/_ext/270959020/blocktim.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/blocktim.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/blocktim.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/blocktim.c  -o ${OBJECTDIR}/_ext/270959020/blocktim.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/blocktim.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/blocktim.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/comtest.o: ../Common/Minimal/comtest.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/comtest.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/comtest.c  -o ${OBJECTDIR}/_ext/270959020/comtest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/comtest.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/comtest.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/comtest.c  -o ${OBJECTDIR}/_ext/270959020/comtest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/comtest.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/comtest.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/crflash.o: ../Common/Minimal/crflash.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/crflash.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/crflash.c  -o ${OBJECTDIR}/_ext/270959020/crflash.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/crflash.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/crflash.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/crflash.c  -o ${OBJECTDIR}/_ext/270959020/crflash.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/crflash.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/crflash.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/_ext/270959020/integer.o: ../Common/Minimal/integer.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/270959020 
+       @${MKDIR} "${OBJECTDIR}/_ext/270959020" 
        @${RM} ${OBJECTDIR}/_ext/270959020/integer.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/integer.c  -o ${OBJECTDIR}/_ext/270959020/integer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/integer.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/_ext/270959020/integer.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ../Common/Minimal/integer.c  -o ${OBJECTDIR}/_ext/270959020/integer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/270959020/integer.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/integer.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/timertest.o: timertest.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR} 
+       @${MKDIR} "${OBJECTDIR}" 
        @${RM} ${OBJECTDIR}/timertest.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  timertest.c  -o ${OBJECTDIR}/timertest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/timertest.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/timertest.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  timertest.c  -o ${OBJECTDIR}/timertest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/timertest.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/timertest.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/lcd.o: lcd.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR} 
+       @${MKDIR} "${OBJECTDIR}" 
        @${RM} ${OBJECTDIR}/lcd.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  lcd.c  -o ${OBJECTDIR}/lcd.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/lcd.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/lcd.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  lcd.c  -o ${OBJECTDIR}/lcd.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/lcd.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/lcd.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/main.o: main.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR} 
+       @${MKDIR} "${OBJECTDIR}" 
        @${RM} ${OBJECTDIR}/main.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  main.c  -o ${OBJECTDIR}/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/main.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/main.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  main.c  -o ${OBJECTDIR}/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/main.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/serial/serial.o: serial/serial.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/serial 
+       @${MKDIR} "${OBJECTDIR}/serial" 
        @${RM} ${OBJECTDIR}/serial/serial.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  serial/serial.c  -o ${OBJECTDIR}/serial/serial.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/serial/serial.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/serial/serial.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  serial/serial.c  -o ${OBJECTDIR}/serial/serial.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/serial/serial.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/serial/serial.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 ${OBJECTDIR}/ParTest/ParTest.o: ParTest/ParTest.c  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/ParTest 
+       @${MKDIR} "${OBJECTDIR}/ParTest" 
        @${RM} ${OBJECTDIR}/ParTest/ParTest.o.d 
-       ${MP_CC} $(MP_EXTRA_CC_PRE)  ParTest/ParTest.c  -o ${OBJECTDIR}/ParTest/ParTest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/ParTest/ParTest.o.d"      -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
+       @${RM} ${OBJECTDIR}/ParTest/ParTest.o 
+       ${MP_CC} $(MP_EXTRA_CC_PRE)  ParTest/ParTest.c  -o ${OBJECTDIR}/ParTest/ParTest.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/ParTest/ParTest.o.d"        -g -omf=elf -ffunction-sections -fdata-sections -O0 -msmart-io=1 -Wall -msfr-warn=off -I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra
        @${FIXDEPS} "${OBJECTDIR}/ParTest/ParTest.o.d" $(SILENT)  -rsi ${MP_CC_DIR}../ 
        
 endif
@@ -290,15 +333,17 @@ endif
 # Rules for buildStep: assemblePreproc
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
 ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o: ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/410575107 
+       @${MKDIR} "${OBJECTDIR}/_ext/410575107" 
        @${RM} ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d 
-       ${MP_CC} $(MP_EXTRA_AS_PRE)  ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S  -o ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d"  -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -Wa,-MD,"${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.asm.d",--defsym=__MPLAB_BUILD=1,--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_ICD3=1,-g,--no-relax$(MP_EXTRA_AS_POST)
+       @${RM} ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o 
+       ${MP_CC} $(MP_EXTRA_AS_PRE)  ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S  -o ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d"  -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1  -omf=elf -Wa,-MD,"${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.asm.d",--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_SIMULATOR=1,-g,--no-relax$(MP_EXTRA_AS_POST)
        @${FIXDEPS} "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d" "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.asm.d"  -t $(SILENT)  -rsi ${MP_CC_DIR}../  
        
 else
 ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o: ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S  nbproject/Makefile-${CND_CONF}.mk
-       @${MKDIR} ${OBJECTDIR}/_ext/410575107 
+       @${MKDIR} "${OBJECTDIR}/_ext/410575107" 
        @${RM} ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d 
+       @${RM} ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o 
        ${MP_CC} $(MP_EXTRA_AS_PRE)  ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S  -o ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MMD -MF "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d"  -omf=elf -Wa,-MD,"${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.asm.d",--defsym=__MPLAB_BUILD=1,-g,--no-relax$(MP_EXTRA_AS_POST)
        @${FIXDEPS} "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d" "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.asm.d"  -t $(SILENT)  -rsi ${MP_CC_DIR}../  
        
@@ -309,13 +354,13 @@ endif
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
 dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk    
        @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_CC} $(MP_EXTRA_LD_PRE)  -o dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1  -omf=elf -Wl,--defsym=__MPLAB_BUILD=1,--defsym=__ICD2RAM=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_ICD3=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,--report-mem$(MP_EXTRA_LD_POST) 
+       ${MP_CC} $(MP_EXTRA_LD_PRE)  -o dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -D__DEBUG -D__MPLAB_DEBUGGER_SIMULATOR=1  -omf=elf     -Wl,,--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_SIMULATOR=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml$(MP_EXTRA_LD_POST) 
        
 else
 dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk   
        @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_CC} $(MP_EXTRA_LD_PRE)  -o dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -omf=elf -Wl,--defsym=__MPLAB_BUILD=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,--report-mem$(MP_EXTRA_LD_POST) 
-       ${MP_CC_DIR}\\xc16-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -a  -omf=elf 
+       ${MP_CC} $(MP_EXTRA_LD_PRE)  -o dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -omf=elf -Wl,,--defsym=__MPLAB_BUILD=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml$(MP_EXTRA_LD_POST) 
+       ${MP_CC_DIR}\\xc16-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -a  -omf=elf  
        
 endif
 
index 0a7154762a5c886c39f4cb914e0c17d2ecee6242..e2c8284580819f2cac79939f8f77b3d8603e267a 100644 (file)
@@ -1,8 +1,9 @@
 #\r
-#Sat Jun 08 17:32:26 BST 2013\r
-default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=654ec2e9d4aec452652bf33d59c2beac\r
-default.languagetoolchain.dir=C\:\\devtools\\Microchip\\xc16\\v1.11\\bin\r
-com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=8fe1589514540343a5279c082104bce0\r
-default.languagetoolchain.version=1.11\r
+#Thu Oct 15 21:03:35 BST 2015\r
+default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=7b5555b9f3fac10bdeeaa71fff22c072\r
+default.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc16\\v1.25\\bin\r
+configurations-xml=e1668378027c43cfe57bea932c980e61\r
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=17a71d03e7d3823160f3e8681fc226e8\r
+default.languagetoolchain.version=1.25\r
 host.platform=windows\r
 conf.ids=default\r
index a4936b44e24d44ba6e5b31179e5a9f83db27db36..bde41e52df4c9bf53ecf937c80347d3d0aff27a5 100644 (file)
 # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
 #
 SHELL=cmd.exe
-PATH_TO_IDE_BIN=C:/devtools/Microchip/MPLABX/mplab_ide/mplab_ide/modules/../../bin/
+PATH_TO_IDE_BIN=C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/
 # Adding MPLAB X bin directory to path.
-PATH:=C:/devtools/Microchip/MPLABX/mplab_ide/mplab_ide/modules/../../bin/:$(PATH)
+PATH:=C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/:$(PATH)
 # Path to java used to run MPLAB X when this makefile was created
-MP_JAVA_PATH="C:\devtools\Microchip\MPLABX\sys\java\jre1.7.0_17/bin/"
+MP_JAVA_PATH="C:\DevTools\Microchip\MPLABX\v3.10\sys\java\jre1.7.0_79/bin/"
 OS_CURRENT="$(shell uname -s)"
-MP_CC="C:\devtools\Microchip\xc16\v1.11\bin\xc16-gcc.exe"
+MP_CC="C:\DevTools\Microchip\xc16\v1.25\bin\xc16-gcc.exe"
 # MP_CPPC is not defined
 # MP_BC is not defined
-# MP_AS is not defined
+MP_AS="C:\DevTools\Microchip\xc16\v1.25\bin\xc16-as.exe"
 # MP_LD is not defined
-MP_AR="C:\devtools\Microchip\xc16\v1.11\bin\xc16-ar.exe"
-DEP_GEN=${MP_JAVA_PATH}java -jar "C:/devtools/Microchip/MPLABX/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" 
-MP_CC_DIR="C:\devtools\Microchip\xc16\v1.11\bin"
+MP_AR="C:\DevTools\Microchip\xc16\v1.25\bin\xc16-ar.exe"
+DEP_GEN=${MP_JAVA_PATH}java -jar "C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="C:\DevTools\Microchip\xc16\v1.25\bin"
 # MP_CPPC_DIR is not defined
 # MP_BC_DIR is not defined
-# MP_AS_DIR is not defined
+MP_AS_DIR="C:\DevTools\Microchip\xc16\v1.25\bin"
 # MP_LD_DIR is not defined
-MP_AR_DIR="C:\devtools\Microchip\xc16\v1.11\bin"
+MP_AR_DIR="C:\DevTools\Microchip\xc16\v1.25\bin"
 # MP_BC_DIR is not defined
index fa5f3ddf5f50e383e5c632d7dd66ac219c3935e7..88bc67cb3c2a7fcff9b8c02e3989bf57e4f2eb19 100644 (file)
@@ -63,9 +63,9 @@
         <targetDevice>PIC24FJ128GA010</targetDevice>\r
         <targetHeader></targetHeader>\r
         <targetPluginBoard></targetPluginBoard>\r
-        <platformTool>ICD3PlatformTool</platformTool>\r
+        <platformTool>Simulator</platformTool>\r
         <languageToolchain>XC16</languageToolchain>\r
-        <languageToolchainVersion>1.11</languageToolchainVersion>\r
+        <languageToolchainVersion>1.25</languageToolchainVersion>\r
         <platform>3</platform>\r
       </toolsSet>\r
       <compileType>\r
           <linkerLibItems>\r
           </linkerLibItems>\r
         </linkerTool>\r
+        <archiverTool>\r
+        </archiverTool>\r
         <loading>\r
           <useAlternateLoadableFile>false</useAlternateLoadableFile>\r
+          <parseOnProdLoad>false</parseOnProdLoad>\r
           <alternateLoadableFile></alternateLoadableFile>\r
         </loading>\r
       </compileType>\r
@@ -91,6 +94,7 @@
         <property key="code-model" value="default"/>\r
         <property key="const-model" value="default"/>\r
         <property key="data-model" value="default"/>\r
+        <property key="disable-instruction-scheduling" value="false"/>\r
         <property key="enable-all-warnings" value="true"/>\r
         <property key="enable-ansi-std" value="false"/>\r
         <property key="enable-ansi-warnings" value="false"/>\r
         <property key="preprocessor-macros" value=""/>\r
         <property key="scalar-model" value="default"/>\r
         <property key="use-cci" value="false"/>\r
+        <property key="use-iar" value="false"/>\r
         <appendMe value="-I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra"/>\r
       </C30>\r
+      <C30-AR>\r
+        <property key="additional-options-chop-files" value="false"/>\r
+      </C30-AR>\r
       <C30-AS>\r
+        <property key="assembler-symbols" value=""/>\r
+        <property key="expand-macros" value="false"/>\r
+        <property key="extra-include-directories-for-assembler" value=""/>\r
+        <property key="extra-include-directories-for-preprocessor" value=""/>\r
+        <property key="false-conditionals" value="false"/>\r
+        <property key="keep-locals" value="false"/>\r
+        <property key="list-assembly" value="false"/>\r
+        <property key="list-section-info" value="false"/>\r
+        <property key="list-source" value="false"/>\r
+        <property key="list-symbols" value="false"/>\r
+        <property key="oXC16asm-extra-opts" value=""/>\r
+        <property key="oXC16asm-list-to-file" value="false"/>\r
+        <property key="omit-debug-dirs" value="false"/>\r
+        <property key="omit-forms" value="false"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="relax" value="false"/>\r
+        <property key="warning-level" value="emit-warnings"/>\r
       </C30-AS>\r
       <C30-LD>\r
+        <property key="additional-options-use-response-files" value="false"/>\r
+        <property key="boot-eeprom" value="no_eeprom"/>\r
+        <property key="boot-flash" value="no_flash"/>\r
+        <property key="boot-ram" value="no_ram"/>\r
+        <property key="boot-write-protect" value="no_write_protect"/>\r
+        <property key="enable-check-sections" value="false"/>\r
+        <property key="enable-data-init" value="true"/>\r
+        <property key="enable-default-isr" value="true"/>\r
+        <property key="enable-handles" value="true"/>\r
+        <property key="enable-pack-data" value="true"/>\r
+        <property key="extra-lib-directories" value=""/>\r
+        <property key="fill-flash-options-addr" value=""/>\r
+        <property key="fill-flash-options-const" value=""/>\r
+        <property key="fill-flash-options-how" value="0"/>\r
+        <property key="fill-flash-options-inc-const" value="1"/>\r
+        <property key="fill-flash-options-increment" value=""/>\r
+        <property key="fill-flash-options-seq" value=""/>\r
+        <property key="fill-flash-options-what" value="0"/>\r
+        <property key="general-code-protect" value="no_code_protect"/>\r
+        <property key="general-write-protect" value="no_write_protect"/>\r
+        <property key="generate-cross-reference-file" value="false"/>\r
+        <property key="heap-size" value=""/>\r
+        <property key="input-libraries" value=""/>\r
+        <property key="linker-stack" value="true"/>\r
+        <property key="linker-symbols" value=""/>\r
+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>\r
+        <property key="oXC16ld-extra-opts" value=""/>\r
+        <property key="oXC16ld-fill-upper" value="0"/>\r
+        <property key="oXC16ld-force-link" value="false"/>\r
+        <property key="oXC16ld-no-smart-io" value="false"/>\r
+        <property key="oXC16ld-nostdlib" value="false"/>\r
+        <property key="oXC16ld-stackguard" value="16"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="remove-unused-sections" value="false"/>\r
+        <property key="report-memory-usage" value="true"/>\r
+        <property key="secure-eeprom" value="no_eeprom"/>\r
+        <property key="secure-flash" value="no_flash"/>\r
+        <property key="secure-ram" value="no_ram"/>\r
+        <property key="secure-write-protect" value="no_write_protect"/>\r
+        <property key="stack-size" value="16"/>\r
+        <property key="symbol-stripping" value=""/>\r
+        <property key="trace-symbols" value=""/>\r
+        <property key="warn-section-align" value="false"/>\r
       </C30-LD>\r
       <C30Global>\r
+        <property key="common-include-directories" value=""/>\r
+        <property key="dual-boot-partition" value="0"/>\r
+        <property key="fast-math" value="false"/>\r
+        <property key="generic-16-bit" value="false"/>\r
+        <property key="legacy-libc" value="false"/>\r
+        <property key="oXC16glb-macros" value=""/>\r
+        <property key="output-file-format" value="elf"/>\r
+        <property key="relaxed-math" value="false"/>\r
+        <property key="save-temps" value="false"/>\r
       </C30Global>\r
       <ICD3PlatformTool>\r
+        <property key="ADC 1" value="true"/>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="CRC" value="true"/>\r
+        <property key="Freeze All Other Peripherals" value="true"/>\r
+        <property key="I2C1" value="true"/>\r
+        <property key="I2C2" value="true"/>\r
+        <property key="INPUT CAPTURE 1" value="true"/>\r
+        <property key="INPUT CAPTURE 2" value="true"/>\r
+        <property key="INPUT CAPTURE 3" value="true"/>\r
+        <property key="INPUT CAPTURE 4" value="true"/>\r
+        <property key="INPUT CAPTURE 5" value="true"/>\r
+        <property key="OUTPUT COMPARE 1" value="true"/>\r
+        <property key="OUTPUT COMPARE 2" value="true"/>\r
+        <property key="OUTPUT COMPARE 3" value="true"/>\r
+        <property key="OUTPUT COMPARE 4" value="true"/>\r
+        <property key="OUTPUT COMPARE 5" value="true"/>\r
+        <property key="SPI 1" value="true"/>\r
+        <property key="SPI 2" value="true"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="TIMER1" value="true"/>\r
+        <property key="TIMER2" value="true"/>\r
+        <property key="TIMER3" value="true"/>\r
+        <property key="TIMER4" value="true"/>\r
+        <property key="TIMER5" value="true"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="UART 1" value="true"/>\r
+        <property key="UART 2" value="true"/>\r
+        <property key="debugoptions.useswbreakpoints" value="false"/>\r
+        <property key="hwtoolclock.frcindebug" value="false"/>\r
+        <property key="memories.aux" value="false"/>\r
+        <property key="memories.bootflash" value="false"/>\r
+        <property key="memories.configurationmemory" value="true"/>\r
+        <property key="memories.configurationmemory2" value="true"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="true"/>\r
+        <property key="memories.flashdata" value="true"/>\r
+        <property key="memories.id" value="true"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x157fb"/>\r
+        <property key="memories.programmemory.partition2" value="true"/>\r
+        <property key="memories.programmemory.partition2.end"\r
+                  value="${memories.programmemory.partition2.end.value}"/>\r
+        <property key="memories.programmemory.partition2.start"\r
+                  value="${memories.programmemory.partition2.start.value}"/>\r
+        <property key="memories.programmemory.start" value="0x0"/>\r
+        <property key="poweroptions.powerenable" value="false"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x157fb"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x0"/>\r
+        <property key="programoptions.preserveuserid" value="false"/>\r
+        <property key="programoptions.programcalmem" value="false"/>\r
+        <property key="programoptions.programuserotp" value="false"/>\r
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
+        <property key="voltagevalue" value="3.25"/>\r
       </ICD3PlatformTool>\r
+      <Simulator>\r
+        <property key="codecoverage.enabled" value="Disable"/>\r
+        <property key="codecoverage.enableoutputtofile" value="false"/>\r
+        <property key="codecoverage.outputfile" value=""/>\r
+        <property key="oscillator.auxfrequency" value="120"/>\r
+        <property key="oscillator.auxfrequencyunit" value="Mega"/>\r
+        <property key="oscillator.frequency" value="1"/>\r
+        <property key="oscillator.frequencyunit" value="Mega"/>\r
+        <property key="oscillator.rcfrequency" value="250"/>\r
+        <property key="oscillator.rcfrequencyunit" value="Kilo"/>\r
+        <property key="performancedata.show" value="false"/>\r
+        <property key="periphADC1.altscl" value="false"/>\r
+        <property key="periphADC1.minTacq" value=""/>\r
+        <property key="periphADC1.tacqunits" value="microseconds"/>\r
+        <property key="periphADC2.altscl" value="false"/>\r
+        <property key="periphADC2.minTacq" value=""/>\r
+        <property key="periphADC2.tacqunits" value="microseconds"/>\r
+        <property key="periphComp1.gte" value="gt"/>\r
+        <property key="periphComp2.gte" value="gt"/>\r
+        <property key="periphComp3.gte" value="gt"/>\r
+        <property key="periphComp4.gte" value="gt"/>\r
+        <property key="periphComp5.gte" value="gt"/>\r
+        <property key="periphComp6.gte" value="gt"/>\r
+        <property key="uart10io.output" value="window"/>\r
+        <property key="uart10io.outputfile" value=""/>\r
+        <property key="uart10io.uartioenabled" value="false"/>\r
+        <property key="uart1io.output" value="window"/>\r
+        <property key="uart1io.outputfile" value=""/>\r
+        <property key="uart1io.uartioenabled" value="false"/>\r
+        <property key="uart2io.output" value="window"/>\r
+        <property key="uart2io.outputfile" value=""/>\r
+        <property key="uart2io.uartioenabled" value="false"/>\r
+        <property key="uart3io.output" value="window"/>\r
+        <property key="uart3io.outputfile" value=""/>\r
+        <property key="uart3io.uartioenabled" value="false"/>\r
+        <property key="uart4io.output" value="window"/>\r
+        <property key="uart4io.outputfile" value=""/>\r
+        <property key="uart4io.uartioenabled" value="false"/>\r
+        <property key="uart5io.output" value="window"/>\r
+        <property key="uart5io.outputfile" value=""/>\r
+        <property key="uart5io.uartioenabled" value="false"/>\r
+        <property key="uart6io.output" value="window"/>\r
+        <property key="uart6io.outputfile" value=""/>\r
+        <property key="uart6io.uartioenabled" value="false"/>\r
+        <property key="uart7io.output" value="window"/>\r
+        <property key="uart7io.outputfile" value=""/>\r
+        <property key="uart7io.uartioenabled" value="false"/>\r
+        <property key="uart8io.output" value="window"/>\r
+        <property key="uart8io.outputfile" value=""/>\r
+        <property key="uart8io.uartioenabled" value="false"/>\r
+        <property key="uart9io.output" value="window"/>\r
+        <property key="uart9io.outputfile" value=""/>\r
+        <property key="uart9io.uartioenabled" value="false"/>\r
+        <property key="warningmessagebreakoptions.W0001_CORE_BITREV_MODULO_EN"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0002_CORE_SECURE_MEMORYACCESS"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0003_CORE_SW_RESET" value="report"/>\r
+        <property key="warningmessagebreakoptions.W0004_CORE_WDT_RESET" value="report"/>\r
+        <property key="warningmessagebreakoptions.W0005_CORE_IOPUW_RESET"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0006_CORE_CODE_GUARD_PFC_RESET"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0007_CORE_DO_LOOP_STACK_UNDERFLOW"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0008_CORE_DO_LOOP_STACK_OVERFLOW"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0009_CORE_NESTED_DO_LOOP_RANGE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0010_CORE_SIM32_ODD_WORDACCESS"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0011_CORE_SIM32_UNIMPLEMENTED_RAMACCESS"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0012_CORE_STACK_OVERFLOW_RESET"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0013_CORE_STACK_UNDERFLOW_RESET"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0101_SIM_UPDATE_FAILED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0102_SIM_PERIPH_MISSING"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0103_SIM_PERIPH_FAILED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0104_SIM_FAILED_TO_INIT_TOOL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0105_SIM_INVALID_FIELD"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0201_ADC_NO_STIMULUS_FILE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0202_ADC_GO_DONE_BIT" value="report"/>\r
+        <property key="warningmessagebreakoptions.W0203_ADC_MINIMUM_2_TAD"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0204_ADC_TAD_TOO_SMALL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0205_ADC_UNEXPECTED_TRANSITION"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0206_ADC_SAMP_TIME_TOO_SHORT"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0207_ADC_NO_PINS_SCANNED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0208_ADC_UNSUPPORTED_CLOCK_SOURCE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0209_ADC_ANALOG_CHANNEL_DIGITAL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0210_ADC_ANALOG_CHANNEL_OUTPUT"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0211_ADC_PIN_INVALID_CHANNEL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0212_ADC_BAND_GAP_NOT_SUPPORTED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0213_ADC_RESERVED_SSRC"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0214_ADC_POSITIVE_INPUT_DIGITAL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0215_ADC_POSITIVE_INPUT_OUTPUT"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0216_ADC_NEGATIVE_INPUT_DIGITAL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0217_ADC_NEGATIVE_INPUT_OUTPUT"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0218_ADC_REFERENCE_HIGH_DIGITAL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0219_ADC_REFERENCE_HIGH_OUTPUT"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0220_ADC_REFERENCE_LOW_DIGITAL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0221_ADC_REFERENCE_LOW_OUTPUT"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0222_ADC_OVERFLOW" value="report"/>\r
+        <property key="warningmessagebreakoptions.W0223_ADC_UNDERFLOW" value="report"/>\r
+        <property key="warningmessagebreakoptions.W0224_ADC_CTMU_NOT_SUPPORTED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0225_ADC_INVALID_CH0S"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0226_ADC_VBAT_NOT_SUPPORTED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0227_ADC_INVALID_ADCS"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0228_ADC_INVALID_ADCS"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W0229_ADC_INVALID_ADCS"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W1201_DATAFLASH_MEM_OUTSIDE_RANGE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W1202_DATAFLASH_ERASE_WHILE_LOCKED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W1203_DATAFLASH_WRITE_WHILE_LOCKED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W1401_DMA_PERIPH_NOT_AVAIL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W1402_DMA_INVALID_IRQ" value="report"/>\r
+        <property key="warningmessagebreakoptions.W1403_DMA_INVALID_SFR" value="report"/>\r
+        <property key="warningmessagebreakoptions.W1404_DMA_INVALID_DMA_ADDR"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W1405_DMA_IRQ_DIR_MISMATCH"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W2001_INPUTCAPTURE_TMR3_UNAVAILABLE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W2002_INPUTCAPTURE_CAPTURE_EMPTY"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W2003_INPUTCAPTURE_SYNCSEL_NOT_AVIALABLE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W2004_INPUTCAPTURE_BAD_SYNC_SOURCE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W2501_OUTPUTCOMPARE_SYNCSEL_NOT_AVIALABLE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W2502_OUTPUTCOMPARE_BAD_SYNC_SOURCE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W2503_OUTPUTCOMPARE_BAD_TRIGGER_SOURCE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9001_TMR_GATE_AND_EXTCLOCK_ENABLED"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9002_TMR_NO_PIN_AVAILABLE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9003_TMR_INVALID_CLOCK_SOURCE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9201_UART_TX_OVERFLOW"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9202_UART_TX_CAPTUREFILE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9203_UART_TX_INVALIDINTERRUPTMODE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9204_UART_RX_EMPTY_QUEUE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9205_UART_TX_BADFILE" value="report"/>\r
+        <property key="warningmessagebreakoptions.W9801_SCL_BAD_SUBTYPE_INDICATION"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9802_SCL_FILE_NOT_FOUND"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9803_SCL_FAILED_TO_READ_FILE"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9804_SCL_UNRECOGNIZED_LABEL"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.W9805_SCL_UNRECOGNIZED_VAR"\r
+                  value="report"/>\r
+        <property key="warningmessagebreakoptions.displaywarningmessagesoption"\r
+                  value=""/>\r
+        <property key="warningmessagebreakoptions.warningmessages" value="holdstate"/>\r
+      </Simulator>\r
     </conf>\r
   </confs>\r
 </configurationDescriptor>\r
index a3d6ca8b1a65501b1e68f7f8659b2ba660f81c36..8d3f9b9ee42b4ab452f29d22e19d19c6edcc4ea9 100644 (file)
@@ -5,7 +5,7 @@
   <confs>\r
     <conf name="default" type="2">\r
       <platformToolSN></platformToolSN>\r
-      <languageToolchainDir>C:\devtools\Microchip\xc16\v1.11\bin</languageToolchainDir>\r
+      <languageToolchainDir>C:\DevTools\Microchip\xc16\v1.25\bin</languageToolchainDir>\r
       <mdbdebugger version="1">\r
         <placeholder1>place holder 1</placeholder1>\r
         <placeholder2>place holder 2</placeholder2>\r
index 778e32b2419d13383bc375f2bbb59a7be63d03f2..8b05f08e8c2ece1977bb0830833cad3571790929 100644 (file)
@@ -1,3 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><project-private xmlns="http://www.netbeans.org/ns/project-private/1">\r
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">\r
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>\r
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>\r
+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">\r
+        <group name="Masters19024">\r
+            <file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC24_MPLAB/main.c</file>\r
+        </group>\r
+    </open-files>\r
 </project-private>\r
index 5e4d477856b59b0bc46babf07278df088cb03a9e..d23b9e3924fb70323f5e24b30ea5f94ef8b58543 100644 (file)
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://www.netbeans.org/ns/project/1">\r
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xmlns="http://www.netbeans.org/ns/project/1">\r
     <type>com.microchip.mplab.nbide.embedded.makeproject</type>\r
     <configuration>\r
         <data xmlns="http://www.netbeans.org/ns/make-project/1">\r
@@ -9,6 +10,7 @@
             <cpp-extensions/>\r
             <header-extensions>h</header-extensions>\r
             <sourceEncoding>ISO-8859-1</sourceEncoding>\r
+            <asminc-extensions/>\r
             <make-dep-projects/>\r
         </data>\r
     </configuration>\r
index 894321bd478873537b9cf262bb8c98dd2dfc9b7d..d0e403b7b6afceb4abd11826272c204b9d05a9e7 100644 (file)
 #define configPERIPHERAL_CLOCK_HZ                              ( 40000000UL )\r
 #define configMAX_PRIORITIES                                   ( 5UL )\r
 #define configMINIMAL_STACK_SIZE                               ( 190 )\r
-#define configISR_STACK_SIZE                                   ( 300 )\r
-#define configTOTAL_HEAP_SIZE                                  ( ( size_t ) 56000 )\r
+#define configISR_STACK_SIZE                                   ( 400 )\r
+#define configTOTAL_HEAP_SIZE                                  ( ( size_t ) 60000 )\r
 #define configMAX_TASK_NAME_LEN                                        ( 8 )\r
 #define configUSE_TRACE_FACILITY                               0\r
 #define configUSE_16_BIT_TICKS                                 0\r
 #define configIDLE_SHOULD_YIELD                                        1\r
 #define configUSE_MUTEXES                                              1\r
-#define configCHECK_FOR_STACK_OVERFLOW                 3\r
+#define configCHECK_FOR_STACK_OVERFLOW                 3 /* Three also checks the system/interrupt stack. */\r
 #define configQUEUE_REGISTRY_SIZE                              0\r
 #define configUSE_RECURSIVE_MUTEXES                            1\r
 #define configUSE_MALLOC_FAILED_HOOK                   1\r
 #define configUSE_COUNTING_SEMAPHORES                  1\r
 #define configGENERATE_RUN_TIME_STATS                  0\r
 \r
+/* Enable support for Task based FPU operations. This will enable support for\r
+FPU context saving during switches only on architectures with hardware FPU.\r
+\r
+NOTE: This constant is defined in the project options as configurations are \r
+provided that both enable and disable floating point support. \r
+#define configUSE_TASK_FPU_SUPPORT                             0 */\r
+\r
 /* Co-routine definitions. */\r
 #define configUSE_CO_ROUTINES                                  0\r
 #define configMAX_CO_ROUTINE_PRIORITIES                        ( 2 )\r
@@ -147,5 +154,5 @@ interrupts. */
        extern void vAssertCalled( const char * pcFile, unsigned long ulLine );\r
        #define configASSERT( x ) if( ( x ) == 0  ) vAssertCalled( __FILE__, __LINE__ )\r
 #endif\r
-\r
+    \r
 #endif /* FREERTOS_CONFIG_H */\r
index 44af0992102edd365bbd355e1cd6b3ac4c967028..6f00e67f07aee20d29f845276807c7b4468b2fc6 100644 (file)
@@ -45,17 +45,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
 DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
 
 # Source Files Quoted if spaced
-SOURCEFILES_QUOTED_IF_SPACED=../../Common/Minimal/GenQTest.c ../../Common/Minimal/QPeek.c ../../Common/Minimal/blocktim.c ../../Common/Minimal/flash_timer.c ../../Common/Minimal/semtest.c ../../Common/Minimal/IntQueue.c ../../Common/Minimal/QueueOverwrite.c ../../Common/Minimal/QueueSet.c ../../Common/Minimal/countsem.c ../../Common/Minimal/dynamic.c ../../Common/Minimal/recmutex.c ../../Common/Minimal/EventGroupsDemo.c ../../../Source/queue.c ../../../Source/tasks.c ../../../Source/list.c ../../../Source/timers.c ../../../Source/portable/MPLAB/PIC32MZ/port.c ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S ../../../Source/portable/MemMang/heap_4.c ../../../Source/event_groups.c ../main.c ../ParTest/ParTest.c ../main_blinky.c ../ConfigPerformance.c ../main_full.c ../RegisterTestTasks.S ../IntQueueTimer.c ../IntQueueTimer_isr.S ../timertest.c ../timertest_isr.S ../ISRTriggeredTask.c ../ISRTriggeredTask_isr.S
+SOURCEFILES_QUOTED_IF_SPACED=../../Common/Minimal/GenQTest.c ../../Common/Minimal/QPeek.c ../../Common/Minimal/blocktim.c ../../Common/Minimal/flash_timer.c ../../Common/Minimal/semtest.c ../../Common/Minimal/IntQueue.c ../../Common/Minimal/QueueOverwrite.c ../../Common/Minimal/QueueSet.c ../../Common/Minimal/countsem.c ../../Common/Minimal/dynamic.c ../../Common/Minimal/recmutex.c ../../Common/Minimal/EventGroupsDemo.c ../../../Source/queue.c ../../../Source/tasks.c ../../../Source/list.c ../../../Source/timers.c ../../../Source/portable/MPLAB/PIC32MZ/port.c ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S ../../../Source/portable/MemMang/heap_4.c ../../../Source/event_groups.c ../main.c ../ParTest/ParTest.c ../main_blinky.c ../ConfigPerformance.c ../main_full.c ../RegisterTestTasks.S ../IntQueueTimer.c ../IntQueueTimer_isr.S ../timertest.c ../timertest_isr.S ../ISRTriggeredTask.c ../ISRTriggeredTask_isr.S ../flop_mz.c
 
 # Object Files Quoted if spaced
-OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1163846883/GenQTest.o ${OBJECTDIR}/_ext/1163846883/QPeek.o ${OBJECTDIR}/_ext/1163846883/blocktim.o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ${OBJECTDIR}/_ext/1163846883/semtest.o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ${OBJECTDIR}/_ext/1163846883/countsem.o ${OBJECTDIR}/_ext/1163846883/dynamic.o ${OBJECTDIR}/_ext/1163846883/recmutex.o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ${OBJECTDIR}/_ext/449926602/queue.o ${OBJECTDIR}/_ext/449926602/tasks.o ${OBJECTDIR}/_ext/449926602/list.o ${OBJECTDIR}/_ext/449926602/timers.o ${OBJECTDIR}/_ext/332309698/port.o ${OBJECTDIR}/_ext/332309698/port_asm.o ${OBJECTDIR}/_ext/1884096877/heap_4.o ${OBJECTDIR}/_ext/449926602/event_groups.o ${OBJECTDIR}/_ext/1472/main.o ${OBJECTDIR}/_ext/809743516/ParTest.o ${OBJECTDIR}/_ext/1472/main_blinky.o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ${OBJECTDIR}/_ext/1472/main_full.o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ${OBJECTDIR}/_ext/1472/timertest.o ${OBJECTDIR}/_ext/1472/timertest_isr.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o
-POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1163846883/GenQTest.o.d ${OBJECTDIR}/_ext/1163846883/QPeek.o.d ${OBJECTDIR}/_ext/1163846883/blocktim.o.d ${OBJECTDIR}/_ext/1163846883/flash_timer.o.d ${OBJECTDIR}/_ext/1163846883/semtest.o.d ${OBJECTDIR}/_ext/1163846883/IntQueue.o.d ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d ${OBJECTDIR}/_ext/1163846883/QueueSet.o.d ${OBJECTDIR}/_ext/1163846883/countsem.o.d ${OBJECTDIR}/_ext/1163846883/dynamic.o.d ${OBJECTDIR}/_ext/1163846883/recmutex.o.d ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d ${OBJECTDIR}/_ext/449926602/queue.o.d ${OBJECTDIR}/_ext/449926602/tasks.o.d ${OBJECTDIR}/_ext/449926602/list.o.d ${OBJECTDIR}/_ext/449926602/timers.o.d ${OBJECTDIR}/_ext/332309698/port.o.d ${OBJECTDIR}/_ext/332309698/port_asm.o.d ${OBJECTDIR}/_ext/1884096877/heap_4.o.d ${OBJECTDIR}/_ext/449926602/event_groups.o.d ${OBJECTDIR}/_ext/1472/main.o.d ${OBJECTDIR}/_ext/809743516/ParTest.o.d ${OBJECTDIR}/_ext/1472/main_blinky.o.d ${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d ${OBJECTDIR}/_ext/1472/main_full.o.d ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d ${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d ${OBJECTDIR}/_ext/1472/timertest.o.d ${OBJECTDIR}/_ext/1472/timertest_isr.o.d ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d
+OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/_ext/1163846883/GenQTest.o ${OBJECTDIR}/_ext/1163846883/QPeek.o ${OBJECTDIR}/_ext/1163846883/blocktim.o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ${OBJECTDIR}/_ext/1163846883/semtest.o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ${OBJECTDIR}/_ext/1163846883/countsem.o ${OBJECTDIR}/_ext/1163846883/dynamic.o ${OBJECTDIR}/_ext/1163846883/recmutex.o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ${OBJECTDIR}/_ext/449926602/queue.o ${OBJECTDIR}/_ext/449926602/tasks.o ${OBJECTDIR}/_ext/449926602/list.o ${OBJECTDIR}/_ext/449926602/timers.o ${OBJECTDIR}/_ext/332309698/port.o ${OBJECTDIR}/_ext/332309698/port_asm.o ${OBJECTDIR}/_ext/1884096877/heap_4.o ${OBJECTDIR}/_ext/449926602/event_groups.o ${OBJECTDIR}/_ext/1472/main.o ${OBJECTDIR}/_ext/809743516/ParTest.o ${OBJECTDIR}/_ext/1472/main_blinky.o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ${OBJECTDIR}/_ext/1472/main_full.o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ${OBJECTDIR}/_ext/1472/timertest.o ${OBJECTDIR}/_ext/1472/timertest_isr.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o ${OBJECTDIR}/_ext/1472/flop_mz.o
+POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/1163846883/GenQTest.o.d ${OBJECTDIR}/_ext/1163846883/QPeek.o.d ${OBJECTDIR}/_ext/1163846883/blocktim.o.d ${OBJECTDIR}/_ext/1163846883/flash_timer.o.d ${OBJECTDIR}/_ext/1163846883/semtest.o.d ${OBJECTDIR}/_ext/1163846883/IntQueue.o.d ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o.d ${OBJECTDIR}/_ext/1163846883/QueueSet.o.d ${OBJECTDIR}/_ext/1163846883/countsem.o.d ${OBJECTDIR}/_ext/1163846883/dynamic.o.d ${OBJECTDIR}/_ext/1163846883/recmutex.o.d ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o.d ${OBJECTDIR}/_ext/449926602/queue.o.d ${OBJECTDIR}/_ext/449926602/tasks.o.d ${OBJECTDIR}/_ext/449926602/list.o.d ${OBJECTDIR}/_ext/449926602/timers.o.d ${OBJECTDIR}/_ext/332309698/port.o.d ${OBJECTDIR}/_ext/332309698/port_asm.o.d ${OBJECTDIR}/_ext/1884096877/heap_4.o.d ${OBJECTDIR}/_ext/449926602/event_groups.o.d ${OBJECTDIR}/_ext/1472/main.o.d ${OBJECTDIR}/_ext/809743516/ParTest.o.d ${OBJECTDIR}/_ext/1472/main_blinky.o.d ${OBJECTDIR}/_ext/1472/ConfigPerformance.o.d ${OBJECTDIR}/_ext/1472/main_full.o.d ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o.d ${OBJECTDIR}/_ext/1472/IntQueueTimer.o.d ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o.d ${OBJECTDIR}/_ext/1472/timertest.o.d ${OBJECTDIR}/_ext/1472/timertest_isr.o.d ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o.d ${OBJECTDIR}/_ext/1472/flop_mz.o.d
 
 # Object Files
-OBJECTFILES=${OBJECTDIR}/_ext/1163846883/GenQTest.o ${OBJECTDIR}/_ext/1163846883/QPeek.o ${OBJECTDIR}/_ext/1163846883/blocktim.o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ${OBJECTDIR}/_ext/1163846883/semtest.o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ${OBJECTDIR}/_ext/1163846883/countsem.o ${OBJECTDIR}/_ext/1163846883/dynamic.o ${OBJECTDIR}/_ext/1163846883/recmutex.o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ${OBJECTDIR}/_ext/449926602/queue.o ${OBJECTDIR}/_ext/449926602/tasks.o ${OBJECTDIR}/_ext/449926602/list.o ${OBJECTDIR}/_ext/449926602/timers.o ${OBJECTDIR}/_ext/332309698/port.o ${OBJECTDIR}/_ext/332309698/port_asm.o ${OBJECTDIR}/_ext/1884096877/heap_4.o ${OBJECTDIR}/_ext/449926602/event_groups.o ${OBJECTDIR}/_ext/1472/main.o ${OBJECTDIR}/_ext/809743516/ParTest.o ${OBJECTDIR}/_ext/1472/main_blinky.o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ${OBJECTDIR}/_ext/1472/main_full.o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ${OBJECTDIR}/_ext/1472/timertest.o ${OBJECTDIR}/_ext/1472/timertest_isr.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o
+OBJECTFILES=${OBJECTDIR}/_ext/1163846883/GenQTest.o ${OBJECTDIR}/_ext/1163846883/QPeek.o ${OBJECTDIR}/_ext/1163846883/blocktim.o ${OBJECTDIR}/_ext/1163846883/flash_timer.o ${OBJECTDIR}/_ext/1163846883/semtest.o ${OBJECTDIR}/_ext/1163846883/IntQueue.o ${OBJECTDIR}/_ext/1163846883/QueueOverwrite.o ${OBJECTDIR}/_ext/1163846883/QueueSet.o ${OBJECTDIR}/_ext/1163846883/countsem.o ${OBJECTDIR}/_ext/1163846883/dynamic.o ${OBJECTDIR}/_ext/1163846883/recmutex.o ${OBJECTDIR}/_ext/1163846883/EventGroupsDemo.o ${OBJECTDIR}/_ext/449926602/queue.o ${OBJECTDIR}/_ext/449926602/tasks.o ${OBJECTDIR}/_ext/449926602/list.o ${OBJECTDIR}/_ext/449926602/timers.o ${OBJECTDIR}/_ext/332309698/port.o ${OBJECTDIR}/_ext/332309698/port_asm.o ${OBJECTDIR}/_ext/1884096877/heap_4.o ${OBJECTDIR}/_ext/449926602/event_groups.o ${OBJECTDIR}/_ext/1472/main.o ${OBJECTDIR}/_ext/809743516/ParTest.o ${OBJECTDIR}/_ext/1472/main_blinky.o ${OBJECTDIR}/_ext/1472/ConfigPerformance.o ${OBJECTDIR}/_ext/1472/main_full.o ${OBJECTDIR}/_ext/1472/RegisterTestTasks.o ${OBJECTDIR}/_ext/1472/IntQueueTimer.o ${OBJECTDIR}/_ext/1472/IntQueueTimer_isr.o ${OBJECTDIR}/_ext/1472/timertest.o ${OBJECTDIR}/_ext/1472/timertest_isr.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask_isr.o ${OBJECTDIR}/_ext/1472/flop_mz.o
 
 # Source Files
-SOURCEFILES=../../Common/Minimal/GenQTest.c ../../Common/Minimal/QPeek.c ../../Common/Minimal/blocktim.c ../../Common/Minimal/flash_timer.c ../../Common/Minimal/semtest.c ../../Common/Minimal/IntQueue.c ../../Common/Minimal/QueueOverwrite.c ../../Common/Minimal/QueueSet.c ../../Common/Minimal/countsem.c ../../Common/Minimal/dynamic.c ../../Common/Minimal/recmutex.c ../../Common/Minimal/EventGroupsDemo.c ../../../Source/queue.c ../../../Source/tasks.c ../../../Source/list.c ../../../Source/timers.c ../../../Source/portable/MPLAB/PIC32MZ/port.c ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S ../../../Source/portable/MemMang/heap_4.c ../../../Source/event_groups.c ../main.c ../ParTest/ParTest.c ../main_blinky.c ../ConfigPerformance.c ../main_full.c ../RegisterTestTasks.S ../IntQueueTimer.c ../IntQueueTimer_isr.S ../timertest.c ../timertest_isr.S ../ISRTriggeredTask.c ../ISRTriggeredTask_isr.S
+SOURCEFILES=../../Common/Minimal/GenQTest.c ../../Common/Minimal/QPeek.c ../../Common/Minimal/blocktim.c ../../Common/Minimal/flash_timer.c ../../Common/Minimal/semtest.c ../../Common/Minimal/IntQueue.c ../../Common/Minimal/QueueOverwrite.c ../../Common/Minimal/QueueSet.c ../../Common/Minimal/countsem.c ../../Common/Minimal/dynamic.c ../../Common/Minimal/recmutex.c ../../Common/Minimal/EventGroupsDemo.c ../../../Source/queue.c ../../../Source/tasks.c ../../../Source/list.c ../../../Source/timers.c ../../../Source/portable/MPLAB/PIC32MZ/port.c ../../../Source/portable/MPLAB/PIC32MZ/port_asm.S ../../../Source/portable/MemMang/heap_4.c ../../../Source/event_groups.c ../main.c ../ParTest/ParTest.c ../main_blinky.c ../ConfigPerformance.c ../main_full.c ../RegisterTestTasks.S ../IntQueueTimer.c ../IntQueueTimer_isr.S ../timertest.c ../timertest_isr.S ../ISRTriggeredTask.c ../ISRTriggeredTask_isr.S ../flop_mz.c
 
 
 CFLAGS=
@@ -326,6 +326,12 @@ ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o: ../ISRTriggeredTask.c  nbproject/Make
        @${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o 
        @${FIXDEPS} "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../  -c ${MP_CC}  $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist  -x c -c -mprocessor=$(MP_PROCESSOR_OPTION)  -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" -o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ../ISRTriggeredTask.c    -Wall -Wextra
        
+${OBJECTDIR}/_ext/1472/flop_mz.o: ../flop_mz.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} "${OBJECTDIR}/_ext/1472" 
+       @${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o.d 
+       @${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o 
+       @${FIXDEPS} "${OBJECTDIR}/_ext/1472/flop_mz.o.d" $(SILENT) -rsi ${MP_CC_DIR}../  -c ${MP_CC}  $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist  -x c -c -mprocessor=$(MP_PROCESSOR_OPTION)  -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/flop_mz.o.d" -o ${OBJECTDIR}/_ext/1472/flop_mz.o ../flop_mz.c    -Wall -Wextra
+       
 else
 ${OBJECTDIR}/_ext/1163846883/GenQTest.o: ../../Common/Minimal/GenQTest.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} "${OBJECTDIR}/_ext/1163846883" 
@@ -489,6 +495,12 @@ ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o: ../ISRTriggeredTask.c  nbproject/Make
        @${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o 
        @${FIXDEPS} "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" $(SILENT) -rsi ${MP_CC_DIR}../  -c ${MP_CC}  $(MP_EXTRA_CC_PRE)  -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION)  -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o.d" -o ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o ../ISRTriggeredTask.c    -Wall -Wextra
        
+${OBJECTDIR}/_ext/1472/flop_mz.o: ../flop_mz.c  nbproject/Makefile-${CND_CONF}.mk
+       @${MKDIR} "${OBJECTDIR}/_ext/1472" 
+       @${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o.d 
+       @${RM} ${OBJECTDIR}/_ext/1472/flop_mz.o 
+       @${FIXDEPS} "${OBJECTDIR}/_ext/1472/flop_mz.o.d" $(SILENT) -rsi ${MP_CC_DIR}../  -c ${MP_CC}  $(MP_EXTRA_CC_PRE)  -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION)  -I"../../../Source/include" -I"../../../Source/portable/MPLAB/PIC32MZ" -I"../../Common/include" -I"../" -Wall -MMD -MF "${OBJECTDIR}/_ext/1472/flop_mz.o.d" -o ${OBJECTDIR}/_ext/1472/flop_mz.o ../flop_mz.c    -Wall -Wextra
+       
 endif
 
 # ------------------------------------------------------------------------------------
@@ -502,12 +514,12 @@ endif
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
 dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk    
        @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_CC} $(MP_EXTRA_LD_PRE)  -mdebugger -D__MPLAB_DEBUGGER_PK3=1 -mprocessor=$(MP_PROCESSOR_OPTION)  -o dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}           -mreserve=data@0x0:0x27F   -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_PK3=1,--defsym=_min_heap_size=0,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"
+       ${MP_CC} $(MP_EXTRA_LD_PRE)  -mdebugger -D__MPLAB_DEBUGGER_PK3=1 -mprocessor=$(MP_PROCESSOR_OPTION)  -o dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}           -mreserve=data@0x0:0x27F   -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_PK3=1,--defsym=_min_heap_size=0,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
        
 else
 dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk   
        @${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_CC} $(MP_EXTRA_LD_PRE)  -mprocessor=$(MP_PROCESSOR_OPTION)  -o dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}          -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=0,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"
+       ${MP_CC} $(MP_EXTRA_LD_PRE)  -mprocessor=$(MP_PROCESSOR_OPTION)  -o dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED}          -Wl,--defsym=__MPLAB_BUILD=1$(MP_EXTRA_LD_POST)$(MP_LINKER_FILE_OPTION),--defsym=_min_heap_size=0,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--memorysummary,dist/${CND_CONF}/${IMAGE_TYPE}/memoryfile.xml
        ${MP_CC_DIR}\\xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} 
 endif
 
index e13ccd139f2e1adf4af1e5b800a925516207cfa2..f03ec51fb6050d0c0384ff16e4433bc800d1e038 100644 (file)
@@ -1,9 +1,15 @@
 #\r
-#Wed Jun 24 18:51:30 BST 2015\r
-PIC32MZ2048_SK.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.34\\bin\r
-PIC32MZ2048_SK.languagetoolchain.version=1.34\r
-configurations-xml=68562b6839a3ad04af65579a10c3115b\r
-com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=47805b5596804b87cda41e61096929be\r
+#Thu Oct 15 18:30:50 BST 2015\r
+PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b\r
+PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin\r
+conf.ids=PIC32MZ2048_SK,PIC32MZ2048EF_SK_SOFT_FLOAT,PIC32MZ2048EF_SK_HARD_FLOAT\r
+configurations-xml=b89c82494ccd01c641a679d02e4a20c2\r
+PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin\r
+PIC32MZ2048EF_SK_SOFT_FLOAT.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b\r
+PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.version=1.40\r
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=17a71d03e7d3823160f3e8681fc226e8\r
+PIC32MZ2048_SK.languagetoolchain.version=1.40\r
+PIC32MZ2048_SK.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin\r
+PIC32MZ2048EF_SK_HARD_FLOAT.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b\r
+PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.version=1.40\r
 host.platform=windows\r
-conf.ids=PIC32MZ2048_SK\r
-PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a29d9df60dd9a7849837c8f5ca17a004\r
index da02e6808e07d80a731627d6b32c7c221df905ba..37740d55d3402ea74e4b7088cc7546d977944d74 100644 (file)
@@ -27,11 +27,11 @@ CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
 PROJECTNAME=RTOSDemo.X
 
 # Active Configuration
-DEFAULTCONF=PIC32MZ2048_SK
+DEFAULTCONF=PIC32MZ2048EF_SK_HARD_FLOAT
 CONF=${DEFAULTCONF}
 
 # All Configurations
-ALLCONFS=PIC32MZ2048_SK 
+ALLCONFS=PIC32MZ2048_SK PIC32MZ2048EF_SK_SOFT_FLOAT PIC32MZ2048EF_SK_HARD_FLOAT 
 
 
 # build
@@ -46,12 +46,16 @@ ALLCONFS=PIC32MZ2048_SK
 # clobber
 .clobber-impl: .clobber-pre .depcheck-impl
            ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048_SK clean
+           ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_SOFT_FLOAT clean
+           ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_HARD_FLOAT clean
 
 
 
 # all
 .all-impl: .all-pre .depcheck-impl
            ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048_SK build
+           ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_SOFT_FLOAT build
+           ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048EF_SK_HARD_FLOAT build
 
 
 
index 82bb366fac89d2ee069a140f4d4de62e9a99d7a1..3a71c0b682c34255752208e1c93d78e13e058295 100644 (file)
 # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
 #
 SHELL=cmd.exe
-PATH_TO_IDE_BIN=C:/DevTools/Microchip/MPLABX/v3.05/mplab_ide/mplab_ide/modules/../../bin/
+PATH_TO_IDE_BIN=C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/
 # Adding MPLAB X bin directory to path.
-PATH:=C:/DevTools/Microchip/MPLABX/v3.05/mplab_ide/mplab_ide/modules/../../bin/:$(PATH)
+PATH:=C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/:$(PATH)
 # Path to java used to run MPLAB X when this makefile was created
-MP_JAVA_PATH="C:\DevTools\Microchip\MPLABX\v3.05\sys\java\jre1.7.0_67/bin/"
+MP_JAVA_PATH="C:\DevTools\Microchip\MPLABX\v3.10\sys\java\jre1.7.0_79/bin/"
 OS_CURRENT="$(shell uname -s)"
-MP_CC="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-gcc.exe"
-MP_CPPC="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-g++.exe"
+MP_CC="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-gcc.exe"
+MP_CPPC="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-g++.exe"
 # MP_BC is not defined
-MP_AS="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-as.exe"
-MP_LD="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-ld.exe"
-MP_AR="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-ar.exe"
-DEP_GEN=${MP_JAVA_PATH}java -jar "C:/DevTools/Microchip/MPLABX/v3.05/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar"
-MP_CC_DIR="C:\DevTools\Microchip\xc32\v1.34\bin"
-MP_CPPC_DIR="C:\DevTools\Microchip\xc32\v1.34\bin"
+MP_AS="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-as.exe"
+MP_LD="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-ld.exe"
+MP_AR="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-ar.exe"
+DEP_GEN=${MP_JAVA_PATH}java -jar "C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
+MP_CPPC_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
 # MP_BC_DIR is not defined
-MP_AS_DIR="C:\DevTools\Microchip\xc32\v1.34\bin"
-MP_LD_DIR="C:\DevTools\Microchip\xc32\v1.34\bin"
-MP_AR_DIR="C:\DevTools\Microchip\xc32\v1.34\bin"
+MP_AS_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
+MP_LD_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
+MP_AR_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
 # MP_BC_DIR is not defined
index 571e551effa91c4bef8af2b1c2cb23934e0ec0e2..b0f26fb75361db527239f3ee7165f9be45eb338d 100644 (file)
@@ -11,3 +11,17 @@ CND_ARTIFACT_PATH_PIC32MZ2048_SK=dist/PIC32MZ2048_SK/production/RTOSDemo.X.produ
 CND_PACKAGE_DIR_PIC32MZ2048_SK=${CND_DISTDIR}/PIC32MZ2048_SK/package
 CND_PACKAGE_NAME_PIC32MZ2048_SK=rtosdemo.x.tar
 CND_PACKAGE_PATH_PIC32MZ2048_SK=${CND_DISTDIR}/PIC32MZ2048_SK/package/rtosdemo.x.tar
+# PIC32MZ2048EF_SK_SOFT_FLOAT configuration
+CND_ARTIFACT_DIR_PIC32MZ2048EF_SK_SOFT_FLOAT=dist/PIC32MZ2048EF_SK_SOFT_FLOAT/production
+CND_ARTIFACT_NAME_PIC32MZ2048EF_SK_SOFT_FLOAT=RTOSDemo.X.production.hex
+CND_ARTIFACT_PATH_PIC32MZ2048EF_SK_SOFT_FLOAT=dist/PIC32MZ2048EF_SK_SOFT_FLOAT/production/RTOSDemo.X.production.hex
+CND_PACKAGE_DIR_PIC32MZ2048EF_SK_SOFT_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_SOFT_FLOAT/package
+CND_PACKAGE_NAME_PIC32MZ2048EF_SK_SOFT_FLOAT=rtosdemo.x.tar
+CND_PACKAGE_PATH_PIC32MZ2048EF_SK_SOFT_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_SOFT_FLOAT/package/rtosdemo.x.tar
+# PIC32MZ2048EF_SK_HARD_FLOAT configuration
+CND_ARTIFACT_DIR_PIC32MZ2048EF_SK_HARD_FLOAT=dist/PIC32MZ2048EF_SK_HARD_FLOAT/production
+CND_ARTIFACT_NAME_PIC32MZ2048EF_SK_HARD_FLOAT=RTOSDemo.X.production.hex
+CND_ARTIFACT_PATH_PIC32MZ2048EF_SK_HARD_FLOAT=dist/PIC32MZ2048EF_SK_HARD_FLOAT/production/RTOSDemo.X.production.hex
+CND_PACKAGE_DIR_PIC32MZ2048EF_SK_HARD_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_HARD_FLOAT/package
+CND_PACKAGE_NAME_PIC32MZ2048EF_SK_HARD_FLOAT=rtosdemo.x.tar
+CND_PACKAGE_PATH_PIC32MZ2048EF_SK_HARD_FLOAT=${CND_DISTDIR}/PIC32MZ2048EF_SK_HARD_FLOAT/package/rtosdemo.x.tar
index 011383de7b259bbf2eabc34484d53496bbc791f8..43fc1c1609141a30340eb004e1e7796bc1e11130 100644 (file)
@@ -63,6 +63,7 @@
       <itemPath>../timertest_isr.S</itemPath>\r
       <itemPath>../ISRTriggeredTask.c</itemPath>\r
       <itemPath>../ISRTriggeredTask_isr.S</itemPath>\r
+      <itemPath>../flop_mz.c</itemPath>\r
     </logicalFolder>\r
     <logicalFolder name="ExternalFiles"\r
                    displayName="Important Files"\r
@@ -74,6 +75,9 @@
     <Elem>../</Elem>\r
     <Elem>../../Common/Minimal</Elem>\r
     <Elem>../../../Source</Elem>\r
+    <Elem>../../Common/Full</Elem>\r
+    <Elem>../../../../FreeRTOS-MPLAB_X-PIC32MZ/GenericRecorderLibSrc</Elem>\r
+    <Elem>../../FreeRTOS-Plus-Trace</Elem>\r
   </sourceRootList>\r
   <projectmakefile>Makefile</projectmakefile>\r
   <confs>\r
@@ -85,7 +89,7 @@
         <targetPluginBoard></targetPluginBoard>\r
         <platformTool>PKOBSKDEPlatformTool</platformTool>\r
         <languageToolchain>XC32</languageToolchain>\r
-        <languageToolchainVersion>1.34</languageToolchainVersion>\r
+        <languageToolchainVersion>1.40</languageToolchainVersion>\r
         <platform>3</platform>\r
       </toolsSet>\r
       <compileType>\r
         <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
         <property key="memories.programmemory.start" value="0x1d000000"/>\r
         <property key="memories.userotp" value="true"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x1d0007ff"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
+      </PKOBSKDEPlatformTool>\r
+      <RealICEPlatformTool>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="CAN1" value="true"/>\r
+        <property key="CAN2" value="true"/>\r
+        <property key="CHANGE NOTICE A" value="true"/>\r
+        <property key="CHANGE NOTICE B" value="true"/>\r
+        <property key="CHANGE NOTICE C" value="true"/>\r
+        <property key="CHANGE NOTICE D" value="true"/>\r
+        <property key="CHANGE NOTICE E" value="true"/>\r
+        <property key="CHANGE NOTICE F" value="true"/>\r
+        <property key="CHANGE NOTICE G" value="true"/>\r
+        <property key="CHANGE NOTICE H" value="true"/>\r
+        <property key="CHANGE NOTICE J" value="true"/>\r
+        <property key="CHANGE NOTICE K" value="true"/>\r
+        <property key="COMPARATOR" value="true"/>\r
+        <property key="DMA" value="true"/>\r
+        <property key="ETHERNET CONTROLLER" value="true"/>\r
+        <property key="INPUT CAPTURE 1" value="true"/>\r
+        <property key="INPUT CAPTURE 2" value="true"/>\r
+        <property key="INPUT CAPTURE 3" value="true"/>\r
+        <property key="INPUT CAPTURE 4" value="true"/>\r
+        <property key="INPUT CAPTURE 5" value="true"/>\r
+        <property key="INPUT CAPTURE 6" value="true"/>\r
+        <property key="INPUT CAPTURE 7" value="true"/>\r
+        <property key="INPUT CAPTURE 8" value="true"/>\r
+        <property key="INPUT CAPTURE 9" value="true"/>\r
+        <property key="INTERRUPT CONTROL" value="true"/>\r
+        <property key="OUTPUT COMPARE 1" value="true"/>\r
+        <property key="OUTPUT COMPARE 2" value="true"/>\r
+        <property key="OUTPUT COMPARE 3" value="true"/>\r
+        <property key="OUTPUT COMPARE 4" value="true"/>\r
+        <property key="OUTPUT COMPARE 5" value="true"/>\r
+        <property key="OUTPUT COMPARE 6" value="true"/>\r
+        <property key="OUTPUT COMPARE 7" value="true"/>\r
+        <property key="OUTPUT COMPARE 8" value="true"/>\r
+        <property key="OUTPUT COMPARE 9" value="true"/>\r
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>\r
+        <property key="REAL TIME CLOCK" value="true"/>\r
+        <property key="REFERENCE CLOCK1" value="true"/>\r
+        <property key="REFERENCE CLOCK2" value="true"/>\r
+        <property key="REFERENCE CLOCK3" value="true"/>\r
+        <property key="REFERENCE CLOCK4" value="true"/>\r
+        <property key="RIExTrigs.Five" value="OFF"/>\r
+        <property key="RIExTrigs.Four" value="OFF"/>\r
+        <property key="RIExTrigs.One" value="OFF"/>\r
+        <property key="RIExTrigs.Seven" value="OFF"/>\r
+        <property key="RIExTrigs.Six" value="OFF"/>\r
+        <property key="RIExTrigs.Three" value="OFF"/>\r
+        <property key="RIExTrigs.Two" value="OFF"/>\r
+        <property key="RIExTrigs.Zero" value="OFF"/>\r
+        <property key="SPI/I2S 1" value="true"/>\r
+        <property key="SPI/I2S 2" value="true"/>\r
+        <property key="SPI/I2S 3" value="true"/>\r
+        <property key="SPI/I2S 4" value="true"/>\r
+        <property key="SPI/I2S 5" value="true"/>\r
+        <property key="SPI/I2S 6" value="true"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="TIMER1" value="true"/>\r
+        <property key="TIMER2" value="true"/>\r
+        <property key="TIMER3" value="true"/>\r
+        <property key="TIMER4" value="true"/>\r
+        <property key="TIMER5" value="true"/>\r
+        <property key="TIMER6" value="true"/>\r
+        <property key="TIMER7" value="true"/>\r
+        <property key="TIMER8" value="true"/>\r
+        <property key="TIMER9" value="true"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="UART1" value="true"/>\r
+        <property key="UART2" value="true"/>\r
+        <property key="UART3" value="true"/>\r
+        <property key="UART4" value="true"/>\r
+        <property key="UART5" value="true"/>\r
+        <property key="UART6" value="true"/>\r
+        <property key="debugoptions.useswbreakpoints" value="false"/>\r
+        <property key="hwtoolclock.frcindebug" value="false"/>\r
+        <property key="hwtoolclock.instructionspeed" value="4"/>\r
+        <property key="hwtoolclock.units" value="mips"/>\r
+        <property key="memories.aux" value="false"/>\r
+        <property key="memories.bootflash" value="true"/>\r
+        <property key="memories.configurationmemory" value="true"/>\r
+        <property key="memories.configurationmemory2" value="true"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="true"/>\r
+        <property key="memories.flashdata" value="true"/>\r
+        <property key="memories.id" value="true"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
+        <property key="memories.programmemory.partition2" value="true"/>\r
+        <property key="memories.programmemory.partition2.end"\r
+                  value="${memories.programmemory.partition2.end.value}"/>\r
+        <property key="memories.programmemory.partition2.start"\r
+                  value="${memories.programmemory.partition2.start.value}"/>\r
+        <property key="memories.programmemory.start" value="0x1d000000"/>\r
         <property key="poweroptions.powerenable" value="false"/>\r
         <property key="programoptions.donoteraseauxmem" value="false"/>\r
         <property key="programoptions.eraseb4program" value="true"/>\r
         <property key="programoptions.preservedataflash" value="false"/>\r
         <property key="programoptions.preserveeeprom" value="false"/>\r
         <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
+        <property key="programoptions.preserveuserid" value="false"/>\r
+        <property key="programoptions.programcalmem" value="false"/>\r
+        <property key="programoptions.programuserotp" value="false"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
+        <property key="tracecontrol.include.timestamp" value="summarydataenabled"/>\r
+        <property key="tracecontrol.select" value="0"/>\r
+        <property key="tracecontrol.stallontracebufferfull" value="false"/>\r
+        <property key="tracecontrol.tracebufmax" value="546000"/>\r
+        <property key="tracecontrol.tracefile" value="defmplabxtrace.log"/>\r
+        <property key="tracecontrol.tracefilemax" value="10000000"/>\r
+        <property key="voltagevalue" value="3.25"/>\r
+      </RealICEPlatformTool>\r
+    </conf>\r
+    <conf name="PIC32MZ2048EF_SK_SOFT_FLOAT" type="2">\r
+      <toolsSet>\r
+        <developmentServer>localhost</developmentServer>\r
+        <targetDevice>PIC32MZ2048EFH144</targetDevice>\r
+        <targetHeader></targetHeader>\r
+        <targetPluginBoard></targetPluginBoard>\r
+        <platformTool>PKOBSKDEPlatformTool</platformTool>\r
+        <languageToolchain>XC32</languageToolchain>\r
+        <languageToolchainVersion>1.40</languageToolchainVersion>\r
+        <platform>3</platform>\r
+      </toolsSet>\r
+      <compileType>\r
+        <linkerTool>\r
+          <linkerLibItems>\r
+          </linkerLibItems>\r
+        </linkerTool>\r
+        <archiverTool>\r
+        </archiverTool>\r
+        <loading>\r
+          <useAlternateLoadableFile>false</useAlternateLoadableFile>\r
+          <parseOnProdLoad>true</parseOnProdLoad>\r
+          <alternateLoadableFile></alternateLoadableFile>\r
+        </loading>\r
+      </compileType>\r
+      <makeCustomizationType>\r
+        <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>\r
+        <makeCustomizationPreStep></makeCustomizationPreStep>\r
+        <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>\r
+        <makeCustomizationPostStep></makeCustomizationPostStep>\r
+        <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>\r
+        <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>\r
+        <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>\r
+      </makeCustomizationType>\r
+      <C32>\r
+        <property key="additional-warnings" value="true"/>\r
+        <property key="enable-app-io" value="false"/>\r
+        <property key="enable-omit-frame-pointer" value="false"/>\r
+        <property key="enable-symbols" value="true"/>\r
+        <property key="enable-unroll-loops" value="false"/>\r
+        <property key="exclude-floating-point" value="false"/>\r
+        <property key="extra-include-directories"\r
+                  value="../../../Source/include;../../../Source/portable/MPLAB/PIC32MZ;../../Common/include;../"/>\r
+        <property key="generate-16-bit-code" value="false"/>\r
+        <property key="generate-micro-compressed-code" value="false"/>\r
+        <property key="isolate-each-function" value="false"/>\r
+        <property key="make-warnings-into-errors" value="false"/>\r
+        <property key="optimization-level" value=""/>\r
+        <property key="place-data-into-section" value="false"/>\r
+        <property key="post-instruction-scheduling" value="default"/>\r
+        <property key="pre-instruction-scheduling" value="default"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="strict-ansi" value="false"/>\r
+        <property key="support-ansi" value="false"/>\r
+        <property key="use-cci" value="false"/>\r
+        <property key="use-iar" value="false"/>\r
+        <property key="use-indirect-calls" value="false"/>\r
+        <appendMe value="-Wall -Wextra -DconfigUSE_TASK_FPU_SUPPORT=0"/>\r
+      </C32>\r
+      <C32-AR>\r
+        <property key="additional-options-chop-files" value="false"/>\r
+      </C32-AR>\r
+      <C32-AS>\r
+        <property key="assembler-symbols" value=""/>\r
+        <property key="enable-symbols" value="true"/>\r
+        <property key="exclude-floating-point-library" value="false"/>\r
+        <property key="expand-macros" value="false"/>\r
+        <property key="extra-include-directories-for-assembler" value=""/>\r
+        <property key="extra-include-directories-for-preprocessor" value=""/>\r
+        <property key="false-conditionals" value="false"/>\r
+        <property key="keep-locals" value="false"/>\r
+        <property key="list-assembly" value="false"/>\r
+        <property key="list-source" value="false"/>\r
+        <property key="list-symbols" value="false"/>\r
+        <property key="oXC32asm-list-to-file" value="false"/>\r
+        <property key="omit-debug-dirs" value="false"/>\r
+        <property key="omit-forms" value="false"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="warning-level" value=""/>\r
+        <appendMe value="-I../../../Source/portable/MPLAB/PIC32MZ -I../"/>\r
+      </C32-AS>\r
+      <C32-LD>\r
+        <property key="additional-options-use-response-files" value="false"/>\r
+        <property key="enable-check-sections" value="false"/>\r
+        <property key="exclude-floating-point-library" value="false"/>\r
+        <property key="exclude-standard-libraries" value="false"/>\r
+        <property key="extra-lib-directories" value=""/>\r
+        <property key="fill-flash-options-addr" value=""/>\r
+        <property key="fill-flash-options-const" value=""/>\r
+        <property key="fill-flash-options-how" value="0"/>\r
+        <property key="fill-flash-options-inc-const" value="1"/>\r
+        <property key="fill-flash-options-increment" value=""/>\r
+        <property key="fill-flash-options-seq" value=""/>\r
+        <property key="fill-flash-options-what" value="0"/>\r
+        <property key="generate-16-bit-code" value="false"/>\r
+        <property key="generate-cross-reference-file" value="false"/>\r
+        <property key="generate-micro-compressed-code" value="false"/>\r
+        <property key="heap-size" value="0"/>\r
+        <property key="input-libraries" value=""/>\r
+        <property key="linker-symbols" value=""/>\r
+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>\r
+        <property key="no-startup-files" value="false"/>\r
+        <property key="oXC32ld-extra-opts" value=""/>\r
+        <property key="optimization-level" value=""/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="remove-unused-sections" value="false"/>\r
+        <property key="report-memory-usage" value="false"/>\r
+        <property key="stack-size" value=""/>\r
+        <property key="symbol-stripping" value=""/>\r
+        <property key="trace-symbols" value=""/>\r
+        <property key="warn-section-align" value="false"/>\r
+      </C32-LD>\r
+      <C32CPP>\r
+        <property key="additional-warnings" value="false"/>\r
+        <property key="check-new" value="false"/>\r
+        <property key="eh-specs" value="true"/>\r
+        <property key="enable-app-io" value="false"/>\r
+        <property key="enable-omit-frame-pointer" value="false"/>\r
+        <property key="enable-symbols" value="true"/>\r
+        <property key="enable-unroll-loops" value="false"/>\r
+        <property key="exceptions" value="true"/>\r
+        <property key="exclude-floating-point" value="false"/>\r
+        <property key="extra-include-directories" value=""/>\r
+        <property key="generate-16-bit-code" value="false"/>\r
+        <property key="generate-micro-compressed-code" value="false"/>\r
+        <property key="isolate-each-function" value="false"/>\r
+        <property key="make-warnings-into-errors" value="false"/>\r
+        <property key="optimization-level" value=""/>\r
+        <property key="place-data-into-section" value="false"/>\r
+        <property key="post-instruction-scheduling" value="default"/>\r
+        <property key="pre-instruction-scheduling" value="default"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="rtti" value="true"/>\r
+        <property key="strict-ansi" value="false"/>\r
+        <property key="use-cci" value="false"/>\r
+        <property key="use-iar" value="false"/>\r
+        <property key="use-indirect-calls" value="false"/>\r
+      </C32CPP>\r
+      <C32Global>\r
+        <property key="common-include-directories" value=""/>\r
+        <property key="gp-relative-option" value=""/>\r
+        <property key="legacy-libc" value="false"/>\r
+        <property key="relaxed-math" value="false"/>\r
+        <property key="save-temps" value="false"/>\r
+        <property key="wpo-lto" value="false"/>\r
+        <appendMe value="-msoft-float"/>\r
+      </C32Global>\r
+      <ICD3PlatformTool>\r
+        <property key="ADC" value="true"/>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="CAN1" value="true"/>\r
+        <property key="CAN2" value="true"/>\r
+        <property key="CHANGE NOTICE A" value="true"/>\r
+        <property key="CHANGE NOTICE B" value="true"/>\r
+        <property key="CHANGE NOTICE C" value="true"/>\r
+        <property key="CHANGE NOTICE D" value="true"/>\r
+        <property key="CHANGE NOTICE E" value="true"/>\r
+        <property key="CHANGE NOTICE F" value="true"/>\r
+        <property key="CHANGE NOTICE G" value="true"/>\r
+        <property key="CHANGE NOTICE H" value="true"/>\r
+        <property key="CHANGE NOTICE J" value="true"/>\r
+        <property key="CHANGE NOTICE K" value="true"/>\r
+        <property key="COMPARATOR" value="true"/>\r
+        <property key="DMA" value="true"/>\r
+        <property key="ETHERNET CONTROLLER" value="true"/>\r
+        <property key="INPUT CAPTURE 1" value="true"/>\r
+        <property key="INPUT CAPTURE 2" value="true"/>\r
+        <property key="INPUT CAPTURE 3" value="true"/>\r
+        <property key="INPUT CAPTURE 4" value="true"/>\r
+        <property key="INPUT CAPTURE 5" value="true"/>\r
+        <property key="INPUT CAPTURE 6" value="true"/>\r
+        <property key="INPUT CAPTURE 7" value="true"/>\r
+        <property key="INPUT CAPTURE 8" value="true"/>\r
+        <property key="INPUT CAPTURE 9" value="true"/>\r
+        <property key="INTERRUPT CONTROL" value="true"/>\r
+        <property key="OUTPUT COMPARE 1" value="true"/>\r
+        <property key="OUTPUT COMPARE 2" value="true"/>\r
+        <property key="OUTPUT COMPARE 3" value="true"/>\r
+        <property key="OUTPUT COMPARE 4" value="true"/>\r
+        <property key="OUTPUT COMPARE 5" value="true"/>\r
+        <property key="OUTPUT COMPARE 6" value="true"/>\r
+        <property key="OUTPUT COMPARE 7" value="true"/>\r
+        <property key="OUTPUT COMPARE 8" value="true"/>\r
+        <property key="OUTPUT COMPARE 9" value="true"/>\r
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>\r
+        <property key="REAL TIME CLOCK" value="true"/>\r
+        <property key="REFERENCE CLOCK1" value="true"/>\r
+        <property key="REFERENCE CLOCK2" value="true"/>\r
+        <property key="REFERENCE CLOCK3" value="true"/>\r
+        <property key="REFERENCE CLOCK4" value="true"/>\r
+        <property key="SPI/I2S 1" value="true"/>\r
+        <property key="SPI/I2S 2" value="true"/>\r
+        <property key="SPI/I2S 3" value="true"/>\r
+        <property key="SPI/I2S 4" value="true"/>\r
+        <property key="SPI/I2S 5" value="true"/>\r
+        <property key="SPI/I2S 6" value="true"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="TIMER1" value="true"/>\r
+        <property key="TIMER2" value="true"/>\r
+        <property key="TIMER3" value="true"/>\r
+        <property key="TIMER4" value="true"/>\r
+        <property key="TIMER5" value="true"/>\r
+        <property key="TIMER6" value="true"/>\r
+        <property key="TIMER7" value="true"/>\r
+        <property key="TIMER8" value="true"/>\r
+        <property key="TIMER9" value="true"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="UART1" value="true"/>\r
+        <property key="UART2" value="true"/>\r
+        <property key="UART3" value="true"/>\r
+        <property key="UART4" value="true"/>\r
+        <property key="UART5" value="true"/>\r
+        <property key="UART6" value="true"/>\r
+        <property key="debugoptions.useswbreakpoints" value="false"/>\r
+        <property key="hwtoolclock.frcindebug" value="false"/>\r
+        <property key="memories.aux" value="false"/>\r
+        <property key="memories.bootflash" value="false"/>\r
+        <property key="memories.configurationmemory" value="true"/>\r
+        <property key="memories.configurationmemory2" value="true"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="true"/>\r
+        <property key="memories.flashdata" value="true"/>\r
+        <property key="memories.id" value="true"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
+        <property key="memories.programmemory.partition2" value="true"/>\r
+        <property key="memories.programmemory.partition2.end"\r
+                  value="${memories.programmemory.partition2.end.value}"/>\r
+        <property key="memories.programmemory.partition2.start"\r
+                  value="${memories.programmemory.partition2.start.value}"/>\r
+        <property key="memories.programmemory.start" value="0x1d000000"/>\r
+        <property key="poweroptions.powerenable" value="false"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
+        <property key="programoptions.preserveuserid" value="false"/>\r
+        <property key="programoptions.programcalmem" value="false"/>\r
+        <property key="programoptions.programuserotp" value="false"/>\r
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
+        <property key="voltagevalue" value="3.25"/>\r
+      </ICD3PlatformTool>\r
+      <PKOBSKDEPlatformTool>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="firmware.download.all" value="false"/>\r
+        <property key="memories.configurationmemory" value="false"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="false"/>\r
+        <property key="memories.id" value="false"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
+        <property key="memories.programmemory.start" value="0x1d000000"/>\r
+        <property key="memories.userotp" value="true"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
         <property key="programoptions.preserveprogramrange.end" value="0x1d0007ff"/>\r
         <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
         <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
         <property key="programoptions.uselvpprogramming" value="false"/>\r
+      </PKOBSKDEPlatformTool>\r
+      <RealICEPlatformTool>\r
+        <property key="ADC" value="true"/>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="CAN1" value="true"/>\r
+        <property key="CAN2" value="true"/>\r
+        <property key="CHANGE NOTICE A" value="true"/>\r
+        <property key="CHANGE NOTICE B" value="true"/>\r
+        <property key="CHANGE NOTICE C" value="true"/>\r
+        <property key="CHANGE NOTICE D" value="true"/>\r
+        <property key="CHANGE NOTICE E" value="true"/>\r
+        <property key="CHANGE NOTICE F" value="true"/>\r
+        <property key="CHANGE NOTICE G" value="true"/>\r
+        <property key="CHANGE NOTICE H" value="true"/>\r
+        <property key="CHANGE NOTICE J" value="true"/>\r
+        <property key="CHANGE NOTICE K" value="true"/>\r
+        <property key="COMPARATOR" value="true"/>\r
+        <property key="DMA" value="true"/>\r
+        <property key="ETHERNET CONTROLLER" value="true"/>\r
+        <property key="INPUT CAPTURE 1" value="true"/>\r
+        <property key="INPUT CAPTURE 2" value="true"/>\r
+        <property key="INPUT CAPTURE 3" value="true"/>\r
+        <property key="INPUT CAPTURE 4" value="true"/>\r
+        <property key="INPUT CAPTURE 5" value="true"/>\r
+        <property key="INPUT CAPTURE 6" value="true"/>\r
+        <property key="INPUT CAPTURE 7" value="true"/>\r
+        <property key="INPUT CAPTURE 8" value="true"/>\r
+        <property key="INPUT CAPTURE 9" value="true"/>\r
+        <property key="INTERRUPT CONTROL" value="true"/>\r
+        <property key="OUTPUT COMPARE 1" value="true"/>\r
+        <property key="OUTPUT COMPARE 2" value="true"/>\r
+        <property key="OUTPUT COMPARE 3" value="true"/>\r
+        <property key="OUTPUT COMPARE 4" value="true"/>\r
+        <property key="OUTPUT COMPARE 5" value="true"/>\r
+        <property key="OUTPUT COMPARE 6" value="true"/>\r
+        <property key="OUTPUT COMPARE 7" value="true"/>\r
+        <property key="OUTPUT COMPARE 8" value="true"/>\r
+        <property key="OUTPUT COMPARE 9" value="true"/>\r
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>\r
+        <property key="REAL TIME CLOCK" value="true"/>\r
+        <property key="REFERENCE CLOCK1" value="true"/>\r
+        <property key="REFERENCE CLOCK2" value="true"/>\r
+        <property key="REFERENCE CLOCK3" value="true"/>\r
+        <property key="REFERENCE CLOCK4" value="true"/>\r
+        <property key="RIExTrigs.Five" value="OFF"/>\r
+        <property key="RIExTrigs.Four" value="OFF"/>\r
+        <property key="RIExTrigs.One" value="OFF"/>\r
+        <property key="RIExTrigs.Seven" value="OFF"/>\r
+        <property key="RIExTrigs.Six" value="OFF"/>\r
+        <property key="RIExTrigs.Three" value="OFF"/>\r
+        <property key="RIExTrigs.Two" value="OFF"/>\r
+        <property key="RIExTrigs.Zero" value="OFF"/>\r
+        <property key="SPI/I2S 1" value="true"/>\r
+        <property key="SPI/I2S 2" value="true"/>\r
+        <property key="SPI/I2S 3" value="true"/>\r
+        <property key="SPI/I2S 4" value="true"/>\r
+        <property key="SPI/I2S 5" value="true"/>\r
+        <property key="SPI/I2S 6" value="true"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="TIMER1" value="true"/>\r
+        <property key="TIMER2" value="true"/>\r
+        <property key="TIMER3" value="true"/>\r
+        <property key="TIMER4" value="true"/>\r
+        <property key="TIMER5" value="true"/>\r
+        <property key="TIMER6" value="true"/>\r
+        <property key="TIMER7" value="true"/>\r
+        <property key="TIMER8" value="true"/>\r
+        <property key="TIMER9" value="true"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="UART1" value="true"/>\r
+        <property key="UART2" value="true"/>\r
+        <property key="UART3" value="true"/>\r
+        <property key="UART4" value="true"/>\r
+        <property key="UART5" value="true"/>\r
+        <property key="UART6" value="true"/>\r
+        <property key="debugoptions.useswbreakpoints" value="false"/>\r
+        <property key="hwtoolclock.frcindebug" value="false"/>\r
+        <property key="hwtoolclock.instructionspeed" value="4"/>\r
+        <property key="hwtoolclock.units" value="mips"/>\r
+        <property key="memories.aux" value="false"/>\r
+        <property key="memories.bootflash" value="true"/>\r
+        <property key="memories.configurationmemory" value="true"/>\r
+        <property key="memories.configurationmemory2" value="true"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="true"/>\r
+        <property key="memories.flashdata" value="true"/>\r
+        <property key="memories.id" value="true"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
+        <property key="memories.programmemory.partition2" value="true"/>\r
+        <property key="memories.programmemory.partition2.end"\r
+                  value="${memories.programmemory.partition2.end.value}"/>\r
+        <property key="memories.programmemory.partition2.start"\r
+                  value="${memories.programmemory.partition2.start.value}"/>\r
+        <property key="memories.programmemory.start" value="0x1d000000"/>\r
+        <property key="poweroptions.powerenable" value="false"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
+        <property key="programoptions.preserveuserid" value="false"/>\r
+        <property key="programoptions.programcalmem" value="false"/>\r
+        <property key="programoptions.programuserotp" value="false"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
+        <property key="tracecontrol.include.timestamp" value="summarydataenabled"/>\r
+        <property key="tracecontrol.select" value="0"/>\r
+        <property key="tracecontrol.stallontracebufferfull" value="false"/>\r
+        <property key="tracecontrol.tracebufmax" value="54600"/>\r
+        <property key="tracecontrol.tracefile" value="defmplabxtrace.log"/>\r
+        <property key="tracecontrol.tracefilemax" value="400000000"/>\r
         <property key="voltagevalue" value="3.25"/>\r
+      </RealICEPlatformTool>\r
+    </conf>\r
+    <conf name="PIC32MZ2048EF_SK_HARD_FLOAT" type="2">\r
+      <toolsSet>\r
+        <developmentServer>localhost</developmentServer>\r
+        <targetDevice>PIC32MZ2048EFH144</targetDevice>\r
+        <targetHeader></targetHeader>\r
+        <targetPluginBoard></targetPluginBoard>\r
+        <platformTool>PKOBSKDEPlatformTool</platformTool>\r
+        <languageToolchain>XC32</languageToolchain>\r
+        <languageToolchainVersion>1.40</languageToolchainVersion>\r
+        <platform>3</platform>\r
+      </toolsSet>\r
+      <compileType>\r
+        <linkerTool>\r
+          <linkerLibItems>\r
+          </linkerLibItems>\r
+        </linkerTool>\r
+        <archiverTool>\r
+        </archiverTool>\r
+        <loading>\r
+          <useAlternateLoadableFile>false</useAlternateLoadableFile>\r
+          <parseOnProdLoad>true</parseOnProdLoad>\r
+          <alternateLoadableFile></alternateLoadableFile>\r
+        </loading>\r
+      </compileType>\r
+      <makeCustomizationType>\r
+        <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>\r
+        <makeCustomizationPreStep></makeCustomizationPreStep>\r
+        <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>\r
+        <makeCustomizationPostStep></makeCustomizationPostStep>\r
+        <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>\r
+        <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>\r
+        <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>\r
+      </makeCustomizationType>\r
+      <C32>\r
+        <property key="additional-warnings" value="true"/>\r
+        <property key="enable-app-io" value="false"/>\r
+        <property key="enable-omit-frame-pointer" value="false"/>\r
+        <property key="enable-symbols" value="true"/>\r
+        <property key="enable-unroll-loops" value="false"/>\r
+        <property key="exclude-floating-point" value="false"/>\r
+        <property key="extra-include-directories"\r
+                  value="../../../Source/include;../../../Source/portable/MPLAB/PIC32MZ;../../Common/include;../"/>\r
+        <property key="generate-16-bit-code" value="false"/>\r
+        <property key="generate-micro-compressed-code" value="false"/>\r
+        <property key="isolate-each-function" value="false"/>\r
+        <property key="make-warnings-into-errors" value="false"/>\r
+        <property key="optimization-level" value=""/>\r
+        <property key="place-data-into-section" value="false"/>\r
+        <property key="post-instruction-scheduling" value="default"/>\r
+        <property key="pre-instruction-scheduling" value="default"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="strict-ansi" value="false"/>\r
+        <property key="support-ansi" value="false"/>\r
+        <property key="use-cci" value="false"/>\r
+        <property key="use-iar" value="false"/>\r
+        <property key="use-indirect-calls" value="false"/>\r
+        <appendMe value="-Wall -Wextra -DconfigUSE_TASK_FPU_SUPPORT=1"/>\r
+      </C32>\r
+      <C32-AR>\r
+        <property key="additional-options-chop-files" value="false"/>\r
+      </C32-AR>\r
+      <C32-AS>\r
+        <property key="assembler-symbols" value=""/>\r
+        <property key="enable-symbols" value="true"/>\r
+        <property key="exclude-floating-point-library" value="false"/>\r
+        <property key="expand-macros" value="false"/>\r
+        <property key="extra-include-directories-for-assembler" value=""/>\r
+        <property key="extra-include-directories-for-preprocessor" value=""/>\r
+        <property key="false-conditionals" value="false"/>\r
+        <property key="keep-locals" value="false"/>\r
+        <property key="list-assembly" value="false"/>\r
+        <property key="list-source" value="false"/>\r
+        <property key="list-symbols" value="false"/>\r
+        <property key="oXC32asm-list-to-file" value="false"/>\r
+        <property key="omit-debug-dirs" value="false"/>\r
+        <property key="omit-forms" value="false"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="warning-level" value=""/>\r
+        <appendMe value="-I../../../Source/portable/MPLAB/PIC32MZ -I../ -DconfigUSE_TASK_FPU_SUPPORT=1"/>\r
+      </C32-AS>\r
+      <C32-LD>\r
+        <property key="additional-options-use-response-files" value="false"/>\r
+        <property key="enable-check-sections" value="false"/>\r
+        <property key="exclude-floating-point-library" value="false"/>\r
+        <property key="exclude-standard-libraries" value="false"/>\r
+        <property key="extra-lib-directories" value=""/>\r
+        <property key="fill-flash-options-addr" value=""/>\r
+        <property key="fill-flash-options-const" value=""/>\r
+        <property key="fill-flash-options-how" value="0"/>\r
+        <property key="fill-flash-options-inc-const" value="1"/>\r
+        <property key="fill-flash-options-increment" value=""/>\r
+        <property key="fill-flash-options-seq" value=""/>\r
+        <property key="fill-flash-options-what" value="0"/>\r
+        <property key="generate-16-bit-code" value="false"/>\r
+        <property key="generate-cross-reference-file" value="false"/>\r
+        <property key="generate-micro-compressed-code" value="false"/>\r
+        <property key="heap-size" value="0"/>\r
+        <property key="input-libraries" value=""/>\r
+        <property key="linker-symbols" value=""/>\r
+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>\r
+        <property key="no-startup-files" value="false"/>\r
+        <property key="oXC32ld-extra-opts" value=""/>\r
+        <property key="optimization-level" value=""/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="remove-unused-sections" value="false"/>\r
+        <property key="report-memory-usage" value="false"/>\r
+        <property key="stack-size" value=""/>\r
+        <property key="symbol-stripping" value=""/>\r
+        <property key="trace-symbols" value=""/>\r
+        <property key="warn-section-align" value="false"/>\r
+      </C32-LD>\r
+      <C32CPP>\r
+        <property key="additional-warnings" value="false"/>\r
+        <property key="check-new" value="false"/>\r
+        <property key="eh-specs" value="true"/>\r
+        <property key="enable-app-io" value="false"/>\r
+        <property key="enable-omit-frame-pointer" value="false"/>\r
+        <property key="enable-symbols" value="true"/>\r
+        <property key="enable-unroll-loops" value="false"/>\r
+        <property key="exceptions" value="true"/>\r
+        <property key="exclude-floating-point" value="false"/>\r
+        <property key="extra-include-directories" value=""/>\r
+        <property key="generate-16-bit-code" value="false"/>\r
+        <property key="generate-micro-compressed-code" value="false"/>\r
+        <property key="isolate-each-function" value="false"/>\r
+        <property key="make-warnings-into-errors" value="false"/>\r
+        <property key="optimization-level" value=""/>\r
+        <property key="place-data-into-section" value="false"/>\r
+        <property key="post-instruction-scheduling" value="default"/>\r
+        <property key="pre-instruction-scheduling" value="default"/>\r
+        <property key="preprocessor-macros" value=""/>\r
+        <property key="rtti" value="true"/>\r
+        <property key="strict-ansi" value="false"/>\r
+        <property key="use-cci" value="false"/>\r
+        <property key="use-iar" value="false"/>\r
+        <property key="use-indirect-calls" value="false"/>\r
+      </C32CPP>\r
+      <C32Global>\r
+        <property key="common-include-directories" value=""/>\r
+        <property key="gp-relative-option" value=""/>\r
+        <property key="legacy-libc" value="false"/>\r
+        <property key="relaxed-math" value="false"/>\r
+        <property key="save-temps" value="false"/>\r
+        <property key="wpo-lto" value="false"/>\r
+      </C32Global>\r
+      <ICD3PlatformTool>\r
+        <property key="ADC" value="true"/>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="CAN1" value="true"/>\r
+        <property key="CAN2" value="true"/>\r
+        <property key="CHANGE NOTICE A" value="true"/>\r
+        <property key="CHANGE NOTICE B" value="true"/>\r
+        <property key="CHANGE NOTICE C" value="true"/>\r
+        <property key="CHANGE NOTICE D" value="true"/>\r
+        <property key="CHANGE NOTICE E" value="true"/>\r
+        <property key="CHANGE NOTICE F" value="true"/>\r
+        <property key="CHANGE NOTICE G" value="true"/>\r
+        <property key="CHANGE NOTICE H" value="true"/>\r
+        <property key="CHANGE NOTICE J" value="true"/>\r
+        <property key="CHANGE NOTICE K" value="true"/>\r
+        <property key="COMPARATOR" value="true"/>\r
+        <property key="DMA" value="true"/>\r
+        <property key="ETHERNET CONTROLLER" value="true"/>\r
+        <property key="INPUT CAPTURE 1" value="true"/>\r
+        <property key="INPUT CAPTURE 2" value="true"/>\r
+        <property key="INPUT CAPTURE 3" value="true"/>\r
+        <property key="INPUT CAPTURE 4" value="true"/>\r
+        <property key="INPUT CAPTURE 5" value="true"/>\r
+        <property key="INPUT CAPTURE 6" value="true"/>\r
+        <property key="INPUT CAPTURE 7" value="true"/>\r
+        <property key="INPUT CAPTURE 8" value="true"/>\r
+        <property key="INPUT CAPTURE 9" value="true"/>\r
+        <property key="INTERRUPT CONTROL" value="true"/>\r
+        <property key="OUTPUT COMPARE 1" value="true"/>\r
+        <property key="OUTPUT COMPARE 2" value="true"/>\r
+        <property key="OUTPUT COMPARE 3" value="true"/>\r
+        <property key="OUTPUT COMPARE 4" value="true"/>\r
+        <property key="OUTPUT COMPARE 5" value="true"/>\r
+        <property key="OUTPUT COMPARE 6" value="true"/>\r
+        <property key="OUTPUT COMPARE 7" value="true"/>\r
+        <property key="OUTPUT COMPARE 8" value="true"/>\r
+        <property key="OUTPUT COMPARE 9" value="true"/>\r
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>\r
+        <property key="REAL TIME CLOCK" value="true"/>\r
+        <property key="REFERENCE CLOCK1" value="true"/>\r
+        <property key="REFERENCE CLOCK2" value="true"/>\r
+        <property key="REFERENCE CLOCK3" value="true"/>\r
+        <property key="REFERENCE CLOCK4" value="true"/>\r
+        <property key="SPI/I2S 1" value="true"/>\r
+        <property key="SPI/I2S 2" value="true"/>\r
+        <property key="SPI/I2S 3" value="true"/>\r
+        <property key="SPI/I2S 4" value="true"/>\r
+        <property key="SPI/I2S 5" value="true"/>\r
+        <property key="SPI/I2S 6" value="true"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="TIMER1" value="true"/>\r
+        <property key="TIMER2" value="true"/>\r
+        <property key="TIMER3" value="true"/>\r
+        <property key="TIMER4" value="true"/>\r
+        <property key="TIMER5" value="true"/>\r
+        <property key="TIMER6" value="true"/>\r
+        <property key="TIMER7" value="true"/>\r
+        <property key="TIMER8" value="true"/>\r
+        <property key="TIMER9" value="true"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="UART1" value="true"/>\r
+        <property key="UART2" value="true"/>\r
+        <property key="UART3" value="true"/>\r
+        <property key="UART4" value="true"/>\r
+        <property key="UART5" value="true"/>\r
+        <property key="UART6" value="true"/>\r
+        <property key="debugoptions.useswbreakpoints" value="false"/>\r
+        <property key="hwtoolclock.frcindebug" value="false"/>\r
+        <property key="memories.aux" value="false"/>\r
+        <property key="memories.bootflash" value="false"/>\r
+        <property key="memories.configurationmemory" value="true"/>\r
+        <property key="memories.configurationmemory2" value="true"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="true"/>\r
+        <property key="memories.flashdata" value="true"/>\r
+        <property key="memories.id" value="true"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
+        <property key="memories.programmemory.partition2" value="true"/>\r
+        <property key="memories.programmemory.partition2.end"\r
+                  value="${memories.programmemory.partition2.end.value}"/>\r
+        <property key="memories.programmemory.partition2.start"\r
+                  value="${memories.programmemory.partition2.start.value}"/>\r
+        <property key="memories.programmemory.start" value="0x1d000000"/>\r
+        <property key="poweroptions.powerenable" value="false"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
+        <property key="programoptions.preserveuserid" value="false"/>\r
+        <property key="programoptions.programcalmem" value="false"/>\r
+        <property key="programoptions.programuserotp" value="false"/>\r
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
+        <property key="voltagevalue" value="3.25"/>\r
+      </ICD3PlatformTool>\r
+      <PKOBSKDEPlatformTool>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="memories.configurationmemory" value="false"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="false"/>\r
+        <property key="memories.id" value="false"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
+        <property key="memories.programmemory.start" value="0x1d000000"/>\r
+        <property key="memories.userotp" value="true"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x1d0007ff"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
       </PKOBSKDEPlatformTool>\r
+      <RealICEPlatformTool>\r
+        <property key="ADC" value="true"/>\r
+        <property key="AutoSelectMemRanges" value="auto"/>\r
+        <property key="CAN1" value="true"/>\r
+        <property key="CAN2" value="true"/>\r
+        <property key="CHANGE NOTICE A" value="true"/>\r
+        <property key="CHANGE NOTICE B" value="true"/>\r
+        <property key="CHANGE NOTICE C" value="true"/>\r
+        <property key="CHANGE NOTICE D" value="true"/>\r
+        <property key="CHANGE NOTICE E" value="true"/>\r
+        <property key="CHANGE NOTICE F" value="true"/>\r
+        <property key="CHANGE NOTICE G" value="true"/>\r
+        <property key="CHANGE NOTICE H" value="true"/>\r
+        <property key="CHANGE NOTICE J" value="true"/>\r
+        <property key="CHANGE NOTICE K" value="true"/>\r
+        <property key="COMPARATOR" value="true"/>\r
+        <property key="DMA" value="true"/>\r
+        <property key="ETHERNET CONTROLLER" value="true"/>\r
+        <property key="INPUT CAPTURE 1" value="true"/>\r
+        <property key="INPUT CAPTURE 2" value="true"/>\r
+        <property key="INPUT CAPTURE 3" value="true"/>\r
+        <property key="INPUT CAPTURE 4" value="true"/>\r
+        <property key="INPUT CAPTURE 5" value="true"/>\r
+        <property key="INPUT CAPTURE 6" value="true"/>\r
+        <property key="INPUT CAPTURE 7" value="true"/>\r
+        <property key="INPUT CAPTURE 8" value="true"/>\r
+        <property key="INPUT CAPTURE 9" value="true"/>\r
+        <property key="INTERRUPT CONTROL" value="true"/>\r
+        <property key="OUTPUT COMPARE 1" value="true"/>\r
+        <property key="OUTPUT COMPARE 2" value="true"/>\r
+        <property key="OUTPUT COMPARE 3" value="true"/>\r
+        <property key="OUTPUT COMPARE 4" value="true"/>\r
+        <property key="OUTPUT COMPARE 5" value="true"/>\r
+        <property key="OUTPUT COMPARE 6" value="true"/>\r
+        <property key="OUTPUT COMPARE 7" value="true"/>\r
+        <property key="OUTPUT COMPARE 8" value="true"/>\r
+        <property key="OUTPUT COMPARE 9" value="true"/>\r
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>\r
+        <property key="REAL TIME CLOCK" value="true"/>\r
+        <property key="REFERENCE CLOCK1" value="true"/>\r
+        <property key="REFERENCE CLOCK2" value="true"/>\r
+        <property key="REFERENCE CLOCK3" value="true"/>\r
+        <property key="REFERENCE CLOCK4" value="true"/>\r
+        <property key="RIExTrigs.Five" value="OFF"/>\r
+        <property key="RIExTrigs.Four" value="OFF"/>\r
+        <property key="RIExTrigs.One" value="OFF"/>\r
+        <property key="RIExTrigs.Seven" value="OFF"/>\r
+        <property key="RIExTrigs.Six" value="OFF"/>\r
+        <property key="RIExTrigs.Three" value="OFF"/>\r
+        <property key="RIExTrigs.Two" value="OFF"/>\r
+        <property key="RIExTrigs.Zero" value="OFF"/>\r
+        <property key="SPI/I2S 1" value="true"/>\r
+        <property key="SPI/I2S 2" value="true"/>\r
+        <property key="SPI/I2S 3" value="true"/>\r
+        <property key="SPI/I2S 4" value="true"/>\r
+        <property key="SPI/I2S 5" value="true"/>\r
+        <property key="SPI/I2S 6" value="true"/>\r
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>\r
+        <property key="TIMER1" value="true"/>\r
+        <property key="TIMER2" value="true"/>\r
+        <property key="TIMER3" value="true"/>\r
+        <property key="TIMER4" value="true"/>\r
+        <property key="TIMER5" value="true"/>\r
+        <property key="TIMER6" value="true"/>\r
+        <property key="TIMER7" value="true"/>\r
+        <property key="TIMER8" value="true"/>\r
+        <property key="TIMER9" value="true"/>\r
+        <property key="ToolFirmwareFilePath"\r
+                  value="Press to browse for a specific firmware version"/>\r
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>\r
+        <property key="UART1" value="true"/>\r
+        <property key="UART2" value="true"/>\r
+        <property key="UART3" value="true"/>\r
+        <property key="UART4" value="true"/>\r
+        <property key="UART5" value="true"/>\r
+        <property key="UART6" value="true"/>\r
+        <property key="debugoptions.useswbreakpoints" value="false"/>\r
+        <property key="hwtoolclock.frcindebug" value="false"/>\r
+        <property key="hwtoolclock.instructionspeed" value="4"/>\r
+        <property key="hwtoolclock.units" value="mips"/>\r
+        <property key="memories.aux" value="false"/>\r
+        <property key="memories.bootflash" value="true"/>\r
+        <property key="memories.configurationmemory" value="true"/>\r
+        <property key="memories.configurationmemory2" value="true"/>\r
+        <property key="memories.dataflash" value="true"/>\r
+        <property key="memories.eeprom" value="true"/>\r
+        <property key="memories.flashdata" value="true"/>\r
+        <property key="memories.id" value="true"/>\r
+        <property key="memories.programmemory" value="true"/>\r
+        <property key="memories.programmemory.end" value="0x1d1fffff"/>\r
+        <property key="memories.programmemory.partition2" value="true"/>\r
+        <property key="memories.programmemory.partition2.end"\r
+                  value="${memories.programmemory.partition2.end.value}"/>\r
+        <property key="memories.programmemory.partition2.start"\r
+                  value="${memories.programmemory.partition2.start.value}"/>\r
+        <property key="memories.programmemory.start" value="0x1d000000"/>\r
+        <property key="poweroptions.powerenable" value="false"/>\r
+        <property key="programoptions.donoteraseauxmem" value="false"/>\r
+        <property key="programoptions.eraseb4program" value="true"/>\r
+        <property key="programoptions.preservedataflash" value="false"/>\r
+        <property key="programoptions.preserveeeprom" value="false"/>\r
+        <property key="programoptions.preserveprogramrange" value="false"/>\r
+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>\r
+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>\r
+        <property key="programoptions.preserveuserid" value="false"/>\r
+        <property key="programoptions.programcalmem" value="false"/>\r
+        <property key="programoptions.programuserotp" value="false"/>\r
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>\r
+        <property key="programoptions.uselvpprogramming" value="false"/>\r
+        <property key="tracecontrol.include.timestamp" value="summarydataenabled"/>\r
+        <property key="tracecontrol.select" value="0"/>\r
+        <property key="tracecontrol.stallontracebufferfull" value="false"/>\r
+        <property key="tracecontrol.tracebufmax" value="54600"/>\r
+        <property key="tracecontrol.tracefile" value="defmplabxtrace.log"/>\r
+        <property key="tracecontrol.tracefilemax" value="400000000"/>\r
+        <property key="voltagevalue" value="3.25"/>\r
+      </RealICEPlatformTool>\r
     </conf>\r
   </confs>\r
 </configurationDescriptor>\r
index e7c4e37385265ac3c6e03bbfbc50fad32163ffa7..a084b2b6d2e7439df64085feda3727a7c722dc22 100644 (file)
@@ -1,11 +1,47 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <configurationDescriptor version="62">\r
   <projectmakefile>Makefile</projectmakefile>\r
-  <defaultConf>0</defaultConf>\r
+  <defaultConf>2</defaultConf>\r
   <confs>\r
     <conf name="PIC32MZ2048_SK" type="2">\r
-      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>8107:=&lt;rev>0002:=&lt;man>Microchip Technology Incorporated:=&lt;prod>PIC32MZ EC Family:=&lt;sn>BUR135112430:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>\r
-      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.34\bin</languageToolchainDir>\r
+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>8107:=&lt;rev>0002:=&lt;man>Microchip Technology Incorporated:=&lt;prod>PIC32MZ EF Family:=&lt;sn>BUR153124004:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>\r
+      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.40\bin</languageToolchainDir>\r
+      <mdbdebugger version="1">\r
+        <placeholder1>place holder 1</placeholder1>\r
+        <placeholder2>place holder 2</placeholder2>\r
+      </mdbdebugger>\r
+      <runprofile version="6">\r
+        <args></args>\r
+        <rundir></rundir>\r
+        <buildfirst>true</buildfirst>\r
+        <console-type>0</console-type>\r
+        <terminal-type>0</terminal-type>\r
+        <remove-instrumentation>0</remove-instrumentation>\r
+        <environment>\r
+        </environment>\r
+      </runprofile>\r
+    </conf>\r
+    <conf name="PIC32MZ2048EF_SK_SOFT_FLOAT" type="2">\r
+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>8107:=&lt;rev>0002:=&lt;man>Microchip Technology Incorporated:=&lt;prod>PIC32MZ EF Family:=&lt;sn>BUR153124004:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>\r
+      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.40\bin</languageToolchainDir>\r
+      <mdbdebugger version="1">\r
+        <placeholder1>place holder 1</placeholder1>\r
+        <placeholder2>place holder 2</placeholder2>\r
+      </mdbdebugger>\r
+      <runprofile version="6">\r
+        <args></args>\r
+        <rundir></rundir>\r
+        <buildfirst>true</buildfirst>\r
+        <console-type>0</console-type>\r
+        <terminal-type>0</terminal-type>\r
+        <remove-instrumentation>0</remove-instrumentation>\r
+        <environment>\r
+        </environment>\r
+      </runprofile>\r
+    </conf>\r
+    <conf name="PIC32MZ2048EF_SK_HARD_FLOAT" type="2">\r
+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>8107:=&lt;rev>0002:=&lt;man>Microchip Technology Incorporated:=&lt;prod>PIC32MZ EF Family:=&lt;sn>BUR153124004:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>\r
+      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.40\bin</languageToolchainDir>\r
       <mdbdebugger version="1">\r
         <placeholder1>place holder 1</placeholder1>\r
         <placeholder2>place holder 2</placeholder2>\r
index a324c250bdbea87bc7e1bc20d69889d49e286bb9..d1d5490d95d8a4822fcc3074d2ce806b57e26c5a 100644 (file)
@@ -4,6 +4,17 @@
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>\r
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">\r
         <group>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/ISR_Support.h</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/main_blinky.c</file>\r
+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c</file>\r
+        </group>\r
+        <group name="Masters19024">\r
             <file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c</file>\r
         </group>\r
     </open-files>\r
index a46e01625dab226d73eb5d235badd8e002906527..f5e4bf8441e75262340710e97f1305e9036a727c 100644 (file)
 \r
 #include <xc.h>\r
 #include <sys/asm.h>\r
+#include "FreeRTOSConfig.h"\r
 \r
        .set    nomips16\r
-       .set    noreorder\r
+       .set    noreorder\r
 \r
 \r
-       .global vRegTest1\r
-       .global vRegTest2\r
+       .global vRegTest1\r
+       .global vRegTest2\r
 \r
+/************************************************************************/\r
+/* Reg test macro helper. Test a register for a known value branching to\r
+error_loop if not correct otherwise continuing on */\r
+.macro portREG_TEST work_reg, test_reg, test_value\r
+\r
+       /* Check each register maintains the value assigned to it for the lifetime\r
+       of the task. */\r
+       addiu   \work_reg, $0, 0x00\r
+       addiu   \work_reg, \test_reg, -\test_value\r
+       beq             \work_reg, $0, 1f\r
+       nop\r
+       /* The register value was not that expected.  Jump to the error loop so the\r
+       cycle counter stops incrementing. */\r
+       b       error_loop\r
+       nop\r
+1:\r
+       .endm\r
+\r
+/************************************************************************/\r
+/* FPU reg test macro helper, Test an FPU register for a known value branching to\r
+error_loop if not correct otherwise continuing on */\r
+       #if ( __mips_hard_float == 1)  && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+.macro portFPU_REG_TEST work_reg, test_reg, test_value\r
+       /* get the lower 32 bit value from the FPU and compare to the test value */\r
+       mfc1    \work_reg, \test_reg\r
+       addiu   \work_reg, \work_reg, -\test_value\r
+       beq             \work_reg, $0, 1f\r
+       nop\r
+\r
+       /* The register values was not that expected. Jump to the error loop */\r
+       b       error_loop\r
+       nop\r
+1:\r
+       .endm\r
+       #endif\r
+\r
+\r
+/************************************************************************/\r
        .set    noreorder\r
        .set    noat\r
        .ent    error_loop\r
@@ -93,7 +132,7 @@ error_loop:
 \r
 \r
        .set    noreorder\r
-       .set    noat\r
+       .set    noat\r
        .ent    vRegTest1\r
 \r
 vRegTest1:\r
@@ -136,233 +175,192 @@ vRegTest1:
        addiu   $22, $0, 0x136\r
        mtlo    $22, $ac3\r
 \r
-vRegTest1Loop:\r
-       /* Check each register maintains the value assigned to it for the lifetime\r
-       of the task. */\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $1, -0x11\r
-       beq             $22, $0, .+16\r
-       nop\r
-       /* The register value was not that expected.  Jump to the error loop so the\r
-       cycle counter stops incrementing. */\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $2, -0x12\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $3, -0x13\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
+       /* Test the FPU registers if they are present on the part. */\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+       addiu   $22, $0, 0x180\r
+       mtc1    $22, $f0\r
+       addiu   $22, $0, 0x181\r
+       mtc1    $22, $f1\r
+       addiu   $22, $0, 0x182\r
+       mtc1    $22, $f2\r
+       addiu   $22, $0, 0x183\r
+       mtc1    $22, $f3\r
+       addiu   $22, $0, 0x184\r
+       mtc1    $22, $f4\r
+       addiu   $22, $0, 0x185\r
+       mtc1    $22, $f5\r
+       addiu   $22, $0, 0x186\r
+       mtc1    $22, $f6\r
+       addiu   $22, $0, 0x187\r
+       mtc1    $22, $f7\r
+       addiu   $22, $0, 0x188\r
+       mtc1    $22, $f8\r
+       addiu   $22, $0, 0x189\r
+       mtc1    $22, $f9\r
+       addiu   $22, $0, 0x18A\r
+       mtc1    $22, $f10\r
+       addiu   $22, $0, 0x18B\r
+       mtc1    $22, $f11\r
+       addiu   $22, $0, 0x18C\r
+       mtc1    $22, $f12\r
+       addiu   $22, $0, 0x18D\r
+       mtc1    $22, $f13\r
+       addiu   $22, $0, 0x18E\r
+       mtc1    $22, $f14\r
+       addiu   $22, $0, 0x18F\r
+       mtc1    $22, $f15\r
+       addiu   $22, $0, 0x190\r
+       mtc1    $22, $f16\r
+       addiu   $22, $0, 0x191\r
+       mtc1    $22, $f17\r
+       addiu   $22, $0, 0x192\r
+       mtc1    $22, $f18\r
+       addiu   $22, $0, 0x193\r
+       mtc1    $22, $f19\r
+       addiu   $22, $0, 0x194\r
+       mtc1    $22, $f20\r
+       addiu   $22, $0, 0x195\r
+       mtc1    $22, $f21\r
+       addiu   $22, $0, 0x196\r
+       mtc1    $22, $f22\r
+       addiu   $22, $0, 0x197\r
+       mtc1    $22, $f23\r
+       addiu   $22, $0, 0x198\r
+       mtc1    $22, $f24\r
+       addiu   $22, $0, 0x199\r
+       mtc1    $22, $f25\r
+       addiu   $22, $0, 0x19A\r
+       mtc1    $22, $f26\r
+       addiu   $22, $0, 0x19B\r
+       mtc1    $22, $f27\r
+       addiu   $22, $0, 0x19C\r
+       mtc1    $22, $f28\r
+       addiu   $22, $0, 0x19D\r
+       mtc1    $22, $f29\r
+       addiu   $22, $0, 0x19E\r
+       mtc1    $22, $f30\r
+       addiu   $22, $0, 0x19F\r
+       mtc1    $22, $f31\r
+       #endif\r
 \r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $5, -0x15\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $6, -0x16\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $7, -0x17\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $8, -0x18\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $9, -0x19\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $10, -0x110\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $11, -0x111\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $12, -0x112\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $13, -0x113\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $14, -0x114\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $15, -0x115\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $16, -0x116\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $17, -0x117\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $18, -0x118\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $19, -0x119\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $20, -0x120\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $21, -0x121\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $23, -0x123\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $24, -0x124\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $25, -0x125\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
+vRegTest1Loop:\r
+       portREG_TEST    $22, $1, 0x11\r
+       portREG_TEST    $22, $2, 0x12\r
+       portREG_TEST    $22, $3, 0x13\r
+       /* Do not test r4 as we are using it as a loop counter */\r
+       portREG_TEST    $22, $5, 0x15\r
+       portREG_TEST    $22, $6, 0x16\r
+       portREG_TEST    $22, $7, 0x17\r
+       portREG_TEST    $22, $8, 0x18\r
+       portREG_TEST    $22, $9, 0x19\r
+       portREG_TEST    $22, $10, 0x110\r
+       portREG_TEST    $22, $11, 0x111\r
+       portREG_TEST    $22, $12, 0x112\r
+       portREG_TEST    $22, $13, 0x113\r
+       portREG_TEST    $22, $14, 0x114\r
+       portREG_TEST    $22, $15, 0x115\r
+       portREG_TEST    $22, $16, 0x116\r
+       portREG_TEST    $22, $17, 0x117\r
+       portREG_TEST    $22, $18, 0x118\r
+       portREG_TEST    $22, $19, 0x119\r
+       portREG_TEST    $22, $20, 0x120\r
+       portREG_TEST    $22, $21, 0x121\r
+       /* Do not test r22, used as a helper */\r
+       portREG_TEST    $22, $23, 0x123\r
+       portREG_TEST    $22, $24, 0x124\r
+       portREG_TEST    $22, $25, 0x125\r
+       portREG_TEST    $22, $30, 0x130\r
 \r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $30, -0x130\r
+       mfhi            $22, $ac1\r
+       addiu           $22, $22, -0x131\r
        beq             $22, $0, .+16\r
        nop\r
        b               error_loop\r
        nop\r
 \r
-       mfhi    $22, $ac1\r
-       addiu   $22, $22, -0x131\r
+       mflo            $22, $ac1\r
+       addiu           $22, $22, -0x132\r
        beq             $22, $0, .+16\r
        nop\r
        b               error_loop\r
        nop\r
 \r
-       mflo    $22, $ac1\r
-       addiu   $22, $22, -0x132\r
+       mfhi            $22, $ac2\r
+       addiu           $22, $22, -0x133\r
        beq             $22, $0, .+16\r
        nop\r
        b               error_loop\r
        nop\r
 \r
-       mfhi    $22, $ac2\r
-       addiu   $22, $22, -0x133\r
+       mflo            $22, $ac2\r
+       addiu           $22, $22, -0x134\r
        beq             $22, $0, .+16\r
        nop\r
        b               error_loop\r
        nop\r
 \r
-       mflo    $22, $ac2\r
-       addiu   $22, $22, -0x134\r
+       mfhi            $22, $ac3\r
+       addiu           $22, $22, -0x135\r
        beq             $22, $0, .+16\r
        nop\r
        b               error_loop\r
        nop\r
 \r
-       mfhi    $22, $ac3\r
-       addiu   $22, $22, -0x135\r
+       mflo            $22, $ac3\r
+       addiu           $22, $22, -0x136\r
        beq             $22, $0, .+16\r
        nop\r
        b               error_loop\r
        nop\r
 \r
-       mflo    $22, $ac3\r
-       addiu   $22, $22, -0x136\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
+       /* Test the FPU registers if they are present on the part. */\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+               portFPU_REG_TEST    $22, $f0, 0x180\r
+               portFPU_REG_TEST    $22, $f1, 0x181\r
+               portFPU_REG_TEST    $22, $f2, 0x182\r
+               portFPU_REG_TEST    $22, $f3, 0x183\r
+               portFPU_REG_TEST    $22, $f4, 0x184\r
+               portFPU_REG_TEST    $22, $f5, 0x185\r
+               portFPU_REG_TEST    $22, $f6, 0x186\r
+               portFPU_REG_TEST    $22, $f7, 0x187\r
+               portFPU_REG_TEST    $22, $f8, 0x188\r
+               portFPU_REG_TEST    $22, $f9, 0x189\r
+               portFPU_REG_TEST    $22, $f10, 0x18A\r
+               portFPU_REG_TEST    $22, $f11, 0x18B\r
+               portFPU_REG_TEST    $22, $f12, 0x18C\r
+               portFPU_REG_TEST    $22, $f13, 0x18D\r
+               portFPU_REG_TEST    $22, $f14, 0x18E\r
+               portFPU_REG_TEST    $22, $f15, 0x18F\r
+               portFPU_REG_TEST    $22, $f16, 0x190\r
+               portFPU_REG_TEST    $22, $f17, 0x191\r
+               portFPU_REG_TEST    $22, $f18, 0x192\r
+               portFPU_REG_TEST    $22, $f19, 0x193\r
+               portFPU_REG_TEST    $22, $f20, 0x194\r
+               portFPU_REG_TEST    $22, $f21, 0x195\r
+               portFPU_REG_TEST    $22, $f22, 0x196\r
+               portFPU_REG_TEST    $22, $f23, 0x197\r
+               portFPU_REG_TEST    $22, $f24, 0x198\r
+               portFPU_REG_TEST    $22, $f25, 0x199\r
+               portFPU_REG_TEST    $22, $f26, 0x19A\r
+               portFPU_REG_TEST    $22, $f27, 0x19B\r
+               portFPU_REG_TEST    $22, $f28, 0x19C\r
+               portFPU_REG_TEST    $22, $f29, 0x19D\r
+               portFPU_REG_TEST    $22, $f30, 0x19E\r
+               portFPU_REG_TEST    $22, $f31, 0x19F\r
+       #endif\r
 \r
        /* No errors detected.  Increment the loop count so the check timer knows\r
        this task is still running without error, then loop back to do it all\r
        again.  The address of the loop counter is in $4. */\r
        lw              $22, 0( $4 )\r
-       addiu   $22, $22, 0x01\r
+       addiu           $22, $22, 0x01\r
        sw              $22, 0( $4 )\r
        b               vRegTest1Loop\r
        nop\r
 \r
        .end    vRegTest1\r
 \r
-\r
+/************************************************************************/\r
        .set    noreorder\r
        .set    noat\r
        .ent    vRegTest2\r
@@ -406,174 +404,101 @@ vRegTest2:
        addiu   $22, $0, 0x236\r
        mtlo    $22, $ac3\r
 \r
-vRegTest2Loop:\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $1, -0x21\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $2, -0x22\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $3, -0x23\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $5, -0x25\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $6, -0x26\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $7, -0x27\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $8, -0x28\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $9, -0x29\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $10, -0x210\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $11, -0x211\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $12, -0x212\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
+       /* Test the FPU registers if they are present on the part. */\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+       addiu   $22, $0, 0x280\r
+       mtc1    $22, $f0\r
+       addiu   $22, $0, 0x281\r
+       mtc1    $22, $f1\r
+       addiu   $22, $0, 0x282\r
+       mtc1    $22, $f2\r
+       addiu   $22, $0, 0x283\r
+       mtc1    $22, $f3\r
+       addiu   $22, $0, 0x284\r
+       mtc1    $22, $f4\r
+       addiu   $22, $0, 0x285\r
+       mtc1    $22, $f5\r
+       addiu   $22, $0, 0x286\r
+       mtc1    $22, $f6\r
+       addiu   $22, $0, 0x287\r
+       mtc1    $22, $f7\r
+       addiu   $22, $0, 0x288\r
+       mtc1    $22, $f8\r
+       addiu   $22, $0, 0x289\r
+       mtc1    $22, $f9\r
+       addiu   $22, $0, 0x28A\r
+       mtc1    $22, $f10\r
+       addiu   $22, $0, 0x28B\r
+       mtc1    $22, $f11\r
+       addiu   $22, $0, 0x28C\r
+       mtc1    $22, $f12\r
+       addiu   $22, $0, 0x28D\r
+       mtc1    $22, $f13\r
+       addiu   $22, $0, 0x28E\r
+       mtc1    $22, $f14\r
+       addiu   $22, $0, 0x28F\r
+       mtc1    $22, $f15\r
+       addiu   $22, $0, 0x290\r
+       mtc1    $22, $f16\r
+       addiu   $22, $0, 0x291\r
+       mtc1    $22, $f17\r
+       addiu   $22, $0, 0x292\r
+       mtc1    $22, $f18\r
+       addiu   $22, $0, 0x293\r
+       mtc1    $22, $f19\r
+       addiu   $22, $0, 0x294\r
+       mtc1    $22, $f20\r
+       addiu   $22, $0, 0x295\r
+       mtc1    $22, $f21\r
+       addiu   $22, $0, 0x296\r
+       mtc1    $22, $f22\r
+       addiu   $22, $0, 0x297\r
+       mtc1    $22, $f23\r
+       addiu   $22, $0, 0x298\r
+       mtc1    $22, $f24\r
+       addiu   $22, $0, 0x299\r
+       mtc1    $22, $f25\r
+       addiu   $22, $0, 0x29A\r
+       mtc1    $22, $f26\r
+       addiu   $22, $0, 0x29B\r
+       mtc1    $22, $f27\r
+       addiu   $22, $0, 0x29C\r
+       mtc1    $22, $f28\r
+       addiu   $22, $0, 0x29D\r
+       mtc1    $22, $f29\r
+       addiu   $22, $0, 0x29E\r
+       mtc1    $22, $f30\r
+       addiu   $22, $0, 0x29F\r
+       mtc1    $22, $f31\r
+       #endif\r
 \r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $13, -0x213\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $14, -0x214\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $15, -0x215\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $16, -0x216\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $17, -0x217\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $18, -0x218\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $19, -0x219\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $20, -0x220\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $21, -0x221\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $23, -0x223\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $24, -0x224\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $25, -0x225\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
-\r
-       addiu   $22, $0, 0x00\r
-       addiu   $22, $30, -0x230\r
-       beq             $22, $0, .+16\r
-       nop\r
-       b               error_loop\r
-       nop\r
+vRegTest2Loop:\r
+       portREG_TEST    $22, $1, 0x21\r
+       portREG_TEST    $22, $2, 0x22\r
+       portREG_TEST    $22, $3, 0x23\r
+       /* Do not test r4 as we are using it as a loop counter */\r
+       portREG_TEST    $22, $5, 0x25\r
+       portREG_TEST    $22, $6, 0x26\r
+       portREG_TEST    $22, $7, 0x27\r
+       portREG_TEST    $22, $8, 0x28\r
+       portREG_TEST    $22, $9, 0x29\r
+       portREG_TEST    $22, $10, 0x210\r
+       portREG_TEST    $22, $11, 0x211\r
+       portREG_TEST    $22, $12, 0x212\r
+       portREG_TEST    $22, $13, 0x213\r
+       portREG_TEST    $22, $14, 0x214\r
+       portREG_TEST    $22, $15, 0x215\r
+       portREG_TEST    $22, $16, 0x216\r
+       portREG_TEST    $22, $17, 0x217\r
+       portREG_TEST    $22, $18, 0x218\r
+       portREG_TEST    $22, $19, 0x219\r
+       portREG_TEST    $22, $20, 0x220\r
+       portREG_TEST    $22, $21, 0x221\r
+       /* Do not test r22, used as a helper */\r
+       portREG_TEST    $22, $23, 0x223\r
+       portREG_TEST    $22, $24, 0x224\r
+       portREG_TEST    $22, $25, 0x225\r
+       portREG_TEST    $22, $30, 0x230\r
 \r
        mfhi    $22, $ac1\r
        addiu   $22, $22, -0x231\r
@@ -617,6 +542,42 @@ vRegTest2Loop:
        b               error_loop\r
        nop\r
 \r
+       /* Test the FPU registers if they are present on the part. */\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+               portFPU_REG_TEST    $22, $f0, 0x280\r
+               portFPU_REG_TEST    $22, $f1, 0x281\r
+               portFPU_REG_TEST    $22, $f2, 0x282\r
+               portFPU_REG_TEST    $22, $f3, 0x283\r
+               portFPU_REG_TEST    $22, $f4, 0x284\r
+               portFPU_REG_TEST    $22, $f5, 0x285\r
+               portFPU_REG_TEST    $22, $f6, 0x286\r
+               portFPU_REG_TEST    $22, $f7, 0x287\r
+               portFPU_REG_TEST    $22, $f8, 0x288\r
+               portFPU_REG_TEST    $22, $f9, 0x289\r
+               portFPU_REG_TEST    $22, $f10, 0x28A\r
+               portFPU_REG_TEST    $22, $f11, 0x28B\r
+               portFPU_REG_TEST    $22, $f12, 0x28C\r
+               portFPU_REG_TEST    $22, $f13, 0x28D\r
+               portFPU_REG_TEST    $22, $f14, 0x28E\r
+               portFPU_REG_TEST    $22, $f15, 0x28F\r
+               portFPU_REG_TEST    $22, $f16, 0x290\r
+               portFPU_REG_TEST    $22, $f17, 0x291\r
+               portFPU_REG_TEST    $22, $f18, 0x292\r
+               portFPU_REG_TEST    $22, $f19, 0x293\r
+               portFPU_REG_TEST    $22, $f20, 0x294\r
+               portFPU_REG_TEST    $22, $f21, 0x295\r
+               portFPU_REG_TEST    $22, $f22, 0x296\r
+               portFPU_REG_TEST    $22, $f23, 0x297\r
+               portFPU_REG_TEST    $22, $f24, 0x298\r
+               portFPU_REG_TEST    $22, $f25, 0x299\r
+               portFPU_REG_TEST    $22, $f26, 0x29A\r
+               portFPU_REG_TEST    $22, $f27, 0x29B\r
+               portFPU_REG_TEST    $22, $f28, 0x29C\r
+               portFPU_REG_TEST    $22, $f29, 0x29D\r
+               portFPU_REG_TEST    $22, $f30, 0x29E\r
+               portFPU_REG_TEST    $22, $f31, 0x29F\r
+       #endif\r
+\r
        /* No errors detected.  Increment the loop count so the check timer knows\r
        this task is still running without error, then loop back to do it all\r
        again.  The address of the loop counter is in $4. */\r
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c b/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c
new file mode 100644 (file)
index 0000000..2dd5c32
--- /dev/null
@@ -0,0 +1,388 @@
+/*\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
+ * Creates eight tasks, each of which loops continuously performing a\r
+ * floating point calculation.\r
+ *\r
+ * All the tasks run at the idle priority and never block or yield.  This causes\r
+ * all eight tasks to time slice with the idle task.  Running at the idle priority\r
+ * means that these tasks will get pre-empted any time another task is ready to run\r
+ * or a time slice occurs.  More often than not the pre-emption will occur mid\r
+ * calculation, creating a good test of the schedulers context switch mechanism - a\r
+ * calculation producing an unexpected result could be a symptom of a corruption in\r
+ * the context of a task.\r
+ */\r
+\r
+#include <stdlib.h>\r
+#include <math.h>\r
+\r
+/* Scheduler include files. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Demo program include files. */\r
+#include "flop_mz.h"\r
+\r
+#define mathSTACK_SIZE         (configMINIMAL_STACK_SIZE + 100)\r
+#define mathNUMBER_OF_TASKS  ( 8 )\r
+\r
+/* Four tasks, each of which performs a different floating point calculation.\r
+Each of the four is created twice. */\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask1, pvParameters );\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask2, pvParameters );\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask3, pvParameters );\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask4, pvParameters );\r
+\r
+/* These variables are used to check that all the tasks are still running.  If a\r
+task gets a calculation wrong it will\r
+stop incrementing its check variable. */\r
+static volatile unsigned long ulTaskCheck[ mathNUMBER_OF_TASKS ] = { 0 };\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vStartMathTasks( unsigned portBASE_TYPE uxPriority )\r
+{\r
+       xTaskCreate( vCompetingMathTask1, "Math1", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 0 ] ), uxPriority, NULL );\r
+       xTaskCreate( vCompetingMathTask2, "Math2", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 1 ] ), uxPriority, NULL );\r
+       xTaskCreate( vCompetingMathTask3, "Math3", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 2 ] ), uxPriority, NULL );\r
+       xTaskCreate( vCompetingMathTask4, "Math4", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 3 ] ), uxPriority, NULL );\r
+       xTaskCreate( vCompetingMathTask1, "Math5", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 4 ] ), uxPriority, NULL );\r
+       xTaskCreate( vCompetingMathTask2, "Math6", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 5 ] ), uxPriority, NULL );\r
+       xTaskCreate( vCompetingMathTask3, "Math7", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 6 ] ), uxPriority, NULL );\r
+       xTaskCreate( vCompetingMathTask4, "Math8", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 7 ] ), uxPriority, NULL );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask1, pvParameters )\r
+{\r
+volatile portDOUBLE d1, d2, d3, d4;\r
+volatile unsigned long *pulTaskCheckVariable;\r
+volatile portDOUBLE dAnswer;\r
+short sError = pdFALSE;\r
+\r
+\r
+       /* Must be called before any hardware floating point operations are\r
+       performed to let the RTOS portable layer know that this task requires\r
+       a floating point context. */\r
+       portTASK_USES_FLOATING_POINT();\r
+\r
+       d1 = 123.4567;\r
+       d2 = 2345.6789;\r
+       d3 = -918.222;\r
+\r
+       dAnswer = ( d1 + d2 ) * d3;\r
+\r
+       /* The variable this task increments to show it is still running is passed in\r
+       as the parameter. */\r
+       pulTaskCheckVariable = ( unsigned long * ) pvParameters;\r
+    \r
+       /* Keep performing a calculation and checking the result against a constant. */\r
+       for(;;)\r
+       {\r
+               d1 = 123.4567;\r
+               d2 = 2345.6789;\r
+               d3 = -918.222;\r
+\r
+               d4 = ( d1 + d2 ) * d3;\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               /* If the calculation does not match the expected constant, stop the\r
+               increment of the check variable. */\r
+               if( fabs( d4 - dAnswer ) > 0.001 )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check\r
+                       variable so we know this task is still running okay. */\r
+                       ( *pulTaskCheckVariable )++;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )\r
+{\r
+volatile portDOUBLE d1, d2, d3, d4;\r
+volatile unsigned long *pulTaskCheckVariable;\r
+volatile portDOUBLE dAnswer;\r
+short sError = pdFALSE;\r
+\r
+       /* Must be called before any hardware floating point operations are\r
+       performed to let the RTOS portable layer know that this task requires\r
+       a floating point context. */\r
+       portTASK_USES_FLOATING_POINT();\r
+\r
+       d1 = -389.38;\r
+       d2 = 32498.2;\r
+       d3 = -2.0001;\r
+\r
+       dAnswer = ( d1 / d2 ) * d3;\r
+\r
+\r
+       /* The variable this task increments to show it is still running is passed in\r
+       as the parameter. */\r
+       pulTaskCheckVariable = ( unsigned long * ) pvParameters;\r
+\r
+       /* Keep performing a calculation and checking the result against a constant. */\r
+       for( ;; )\r
+       {\r
+               d1 = -389.38;\r
+               d2 = 32498.2;\r
+               d3 = -2.0001;\r
+\r
+               d4 = ( d1 / d2 ) * d3;\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               /* If the calculation does not match the expected constant, stop the\r
+               increment of the check variable. */\r
+               if( fabs( d4 - dAnswer ) > 0.001 )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check\r
+                       variable so we know\r
+                       this task is still running okay. */\r
+                       ( *pulTaskCheckVariable )++;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )\r
+{\r
+volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;\r
+volatile unsigned long *pulTaskCheckVariable;\r
+const size_t xArraySize = 10;\r
+size_t xPosition;\r
+short sError = pdFALSE;\r
+\r
+       /* Must be called before any hardware floating point operations are\r
+       performed to let the RTOS portable layer know that this task requires\r
+       a floating point context. */\r
+       portTASK_USES_FLOATING_POINT();\r
+\r
+       /* The variable this task increments to show it is still running is passed in\r
+       as the parameter. */\r
+       pulTaskCheckVariable = ( unsigned long * ) pvParameters;\r
+\r
+       pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );\r
+\r
+       /* Keep filling an array, keeping a running total of the values placed in the\r
+       array.  Then run through the array adding up all the values.  If the two totals\r
+       do not match, stop the check variable from incrementing. */\r
+       for( ;; )\r
+       {\r
+               dTotal1 = 0.0;\r
+               dTotal2 = 0.0;\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       pdArray[ xPosition ] = ( portDOUBLE ) xPosition + 5.5;\r
+                       dTotal1 += ( portDOUBLE ) xPosition + 5.5;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       dTotal2 += pdArray[ xPosition ];\r
+               }\r
+\r
+               dDifference = dTotal1 - dTotal2;\r
+               if( fabs( dDifference ) > 0.001 )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check\r
+                       variable so we know     this task is still running okay. */\r
+                       ( *pulTaskCheckVariable )++;\r
+               }\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask4, pvParameters )\r
+{\r
+volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;\r
+volatile unsigned long *pulTaskCheckVariable;\r
+const size_t xArraySize = 10;\r
+size_t xPosition;\r
+short sError = pdFALSE;\r
+\r
+       /* Must be called before any hardware floating point operations are\r
+       performed to let the RTOS portable layer know that this task requires\r
+       a floating point context. */\r
+       portTASK_USES_FLOATING_POINT();\r
+\r
+       /* The variable this task increments to show it is still running is passed in\r
+       as the parameter. */\r
+       pulTaskCheckVariable = ( unsigned long * ) pvParameters;\r
+\r
+       pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );\r
+\r
+       /* Keep filling an array, keeping a running total of the values placed in the\r
+       array.  Then run through the array adding up all the values.  If the two totals\r
+       do not match, stop the check variable from incrementing. */\r
+       for( ;; )\r
+       {\r
+               dTotal1 = 0.0;\r
+               dTotal2 = 0.0;\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       pdArray[ xPosition ] = ( portDOUBLE ) xPosition * 12.123;\r
+                       dTotal1 += ( portDOUBLE ) xPosition * 12.123;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       dTotal2 += pdArray[ xPosition ];\r
+               }\r
+\r
+               dDifference = dTotal1 - dTotal2;\r
+               if( fabs( dDifference ) > 0.001 )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check\r
+                       variable so we know     this task is still running okay. */\r
+                       ( *pulTaskCheckVariable )++;\r
+               }\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* This is called to check that all the created tasks are still running. */\r
+portBASE_TYPE xAreMathsTaskStillRunning( void )\r
+{\r
+/* Keep a history of the check variables so we know if they have been incremented\r
+since the last call. */\r
+static unsigned long ulLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 };\r
+portBASE_TYPE xReturn = pdTRUE, xTask;\r
+\r
+       /* Check the maths tasks are still running by ensuring their check variables\r
+       are still incrementing. */\r
+       for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )\r
+       {\r
+               if( ulTaskCheck[ xTask ] == ulLastTaskCheck[ xTask ] )\r
+               {\r
+                       /* The check has not incremented so an error exists. */\r
+                       xReturn = pdFALSE;\r
+               }\r
+\r
+               ulLastTaskCheck[ xTask ] = ulTaskCheck[ xTask ];\r
+       }\r
+\r
+       return xReturn;\r
+}\r
+\r
+\r
+\r
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h b/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h
new file mode 100644 (file)
index 0000000..aaeefdc
--- /dev/null
@@ -0,0 +1,78 @@
+/*\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
+#ifndef FLOP_TASKS_H\r
+#define FLOP_TASKS_H\r
+\r
+void vStartMathTasks( unsigned portBASE_TYPE uxPriority );\r
+portBASE_TYPE xAreMathsTaskStillRunning( void );\r
+\r
+#endif\r
+\r
+\r
index 64ca067532b7cde62fadbae09d421b9fe379713c..4d0fb8b19db43643824b3274730620dfead8bbc4 100644 (file)
 #include "ConfigPerformance.h"\r
 \r
 /* Core configuration fuse settings */\r
-#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF\r
-#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC\r
-#pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF\r
-#pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL\r
-#pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31\r
-#pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC\r
-#pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ, UPLLEN = OFF\r
-#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED\r
-#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON\r
-#pragma config CP = OFF\r
-#pragma config_alt FWDTEN=OFF\r
-#pragma config_alt USERID = 0x1234u\r
+#if defined(__32MZ2048ECM144) || defined(__32MZ2048ECH144)\r
+       #pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF\r
+       #pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC\r
+       #pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF\r
+       #pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL\r
+       #pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31\r
+       #pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC\r
+       #pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ, UPLLEN = OFF\r
+       #pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED\r
+       #pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON\r
+       #pragma config CP = OFF\r
+       #pragma config_alt FWDTEN=OFF\r
+       #pragma config_alt USERID = 0x1234u\r
+#elif defined(__32MZ2048EFM144) || defined(__32MZ2048EFH144)\r
+       #pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF\r
+       #pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC\r
+       #pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF\r
+       #pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL\r
+       #pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31\r
+       #pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC\r
+       #pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ\r
+       #pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED\r
+       #pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON\r
+       #pragma config CP = OFF\r
+#endif\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -274,27 +287,44 @@ static enum {
        EXCEP_CpU,              /* coprocessor unusable */\r
        EXCEP_Overflow, /* arithmetic overflow */\r
        EXCEP_Trap,     /* trap (possible divide by zero) */\r
+       EXCEP_FPE = 15, /* floating point exception */\r
        EXCEP_IS1 = 16, /* implementation specfic 1 */\r
        EXCEP_CEU,              /* CorExtend Unuseable */\r
-       EXCEP_C2E               /* coprocessor 2 */\r
+       EXCEP_C2E,              /* coprocessor 2 */\r
+       EXCEP_DSPDis = 26   /* DSP module disabled */\r
 } _excep_code;\r
 \r
 static unsigned long _epc_code;\r
 static unsigned long _excep_addr;\r
 \r
-    asm volatile( "mfc0 %0,$13" : "=r" (_epc_code) );\r
-    asm volatile( "mfc0 %0,$14" : "=r" (_excep_addr) );\r
+       asm volatile( "mfc0 %0,$13" : "=r" (_epc_code) );\r
+       asm volatile( "mfc0 %0,$14" : "=r" (_excep_addr) );\r
 \r
-    _excep_code = ( _epc_code & 0x0000007C ) >> 2;\r
+       _excep_code = ( _epc_code & 0x0000007C ) >> 2;\r
 \r
     for( ;; )\r
        {\r
+               /* prevent compiler warning */\r
+               (void) _excep_code;\r
+\r
                /* Examine _excep_code to identify the type of exception.  Examine\r
                _excep_addr to find the address that caused the exception */\r
                LATHSET = 0x0007;\r
                Nop();\r
                Nop();\r
                Nop();\r
-    }\r
+       }\r
 }\r
+/*-----------------------------------------------------------*/\r
 \r
+void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )\r
+{\r
+       ( void ) pcTaskName;\r
+       ( void ) pxTask;\r
+\r
+       /* Run time stack overflow checking is performed if\r
+       configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook\r
+       function is called if a stack overflow is detected. */\r
+       taskDISABLE_INTERRUPTS();\r
+       for( ;; );\r
+}\r
index 384807eda870340a5b47bd0de3862e2803ec552c..9d378654dd900ce57e9688fcfda69dd1c31fc58a 100644 (file)
 #include "QueueSet.h"\r
 #include "recmutex.h"\r
 #include "EventGroupsDemo.h"\r
+#include "flop_mz.h"\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -160,9 +161,10 @@ in ticks using the portTICK_PERIOD_MS constant. */
 #define mainSEM_TEST_PRIORITY                          ( tskIDLE_PRIORITY + 1 )\r
 #define mainBLOCK_Q_PRIORITY                           ( tskIDLE_PRIORITY + 2 )\r
 #define mainCOM_TEST_PRIORITY                          ( tskIDLE_PRIORITY + 2 )\r
-#define mainINTEGER_TASK_PRIORITY           ( tskIDLE_PRIORITY )\r
+#define mainINTEGER_TASK_PRIORITY                      ( tskIDLE_PRIORITY )\r
 #define mainGEN_QUEUE_TASK_PRIORITY                    ( tskIDLE_PRIORITY )\r
 #define mainQUEUE_OVERWRITE_TASK_PRIORITY      ( tskIDLE_PRIORITY )\r
+#define mainFLOP_TASK_PRIORITY                         ( tskIDLE_PRIORITY )\r
 \r
 /* The LED controlled by the 'check' software timer. */\r
 #define mainCHECK_LED                                          ( 2 )\r
@@ -242,6 +244,7 @@ TimerHandle_t xTimer = NULL;
        vStartQueueSetTasks();\r
        vStartRecursiveMutexTasks();\r
        vStartEventGroupTasks();\r
+       vStartMathTasks( mainFLOP_TASK_PRIORITY );\r
 \r
        /* Create the tasks defined within this file. */\r
        xTaskCreate( prvRegTestTask1,                   /* The function that implements the task. */\r
@@ -294,6 +297,11 @@ extern void vRegTest1( volatile unsigned long * );
        /* Avoid compiler warnings. */\r
        ( void ) pvParameters;\r
 \r
+       /* Must be called before any hardware floating point operations are\r
+       performed to let the RTOS portable layer know that this task requires\r
+       a floating point context. */\r
+       portTASK_USES_FLOATING_POINT();\r
+\r
        /* Pass the address of the RegTest1 loop counter into the test function,\r
        which is necessarily implemented in assembler. */\r
        vRegTest1( &ulRegTest1Cycles );\r
@@ -310,6 +318,11 @@ extern void vRegTest2( volatile unsigned long * );
        /* Avoid compiler warnings. */\r
        ( void ) pvParameters;\r
 \r
+       /* Must be called before any hardware floating point operations are\r
+       performed to let the RTOS portable layer know that this task requires\r
+       a floating point context. */\r
+       portTASK_USES_FLOATING_POINT();\r
+\r
        /* Pass the address of the RegTest2 loop counter into the test function,\r
        which is necessarily implemented in assembler. */\r
        vRegTest2( &ulRegTest2Cycles );\r
@@ -393,6 +406,10 @@ extern unsigned long ulHighFrequencyTimerInterrupts;
        {\r
                ulErrorOccurred |= ( 0x01UL << 13UL );\r
        }\r
+       else if( xAreMathsTaskStillRunning() != pdTRUE )\r
+       {\r
+               ulErrorOccurred |= ( 0x01UL << 15UL );\r
+       }\r
 \r
        /* Ensure the expected number of high frequency interrupts have occurred. */\r
        if( ulLastHighFrequencyTimerInterrupts != 0 )\r
index 87fe5e99fc79446831cc70fca466479222ee51c6..992b5fceca00de9f026d2cb2c63e68bb577e5d9b 100644 (file)
@@ -2,15 +2,15 @@
 * 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
+* 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
+* 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
@@ -38,7 +38,7 @@ Pragma directive
  * 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
+ * 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
@@ -111,7 +111,7 @@ void r_sci1_transmit_interrupt(void)
         gp_sci1_tx_address++;\r
         g_sci1_tx_count--;\r
     }\r
-    else \r
+    else\r
     {\r
         SCI1.SCR.BIT.TIE = 0U;\r
         SCI1.SCR.BIT.TEIE = 1U;\r
@@ -181,20 +181,20 @@ void r_sci1_receiveerror_interrupt(void)
 void r_sci1_callback_transmitend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
 \r
-       /* The sci1_txdone flag is used by the auto generated API only. */\r
-       sci1_txdone = TRUE;\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
+    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
+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+    }\r
     /* End user code. Do not edit comment generated here */\r
 }\r
 /***********************************************************************************************************************\r
@@ -206,23 +206,23 @@ void r_sci1_callback_transmitend(void)
 void r_sci1_callback_receiveend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\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
+    /* 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
@@ -280,30 +280,30 @@ MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
 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
+    ( 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
+    /* 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
+    /* 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
@@ -312,53 +312,53 @@ void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString
 {\r
 const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );\r
 \r
-       /* Only one port is supported. */\r
-       ( void ) pxPort;\r
+    /* Only one port is supported. */\r
+    ( void ) pxPort;\r
 \r
-       /* Clear the flag before initiating a new transmission */\r
-       sci1_txdone = FALSE;\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
+    /* Don't send the string unless the previous string has been sent. */\r
+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )\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
+        /* 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
+        /* 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
+        /* 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
+    /* 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
+    /* 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
+    /* 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
+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );\r
+    return pdPASS;\r
 }\r
 \r
 /* End user code. Do not edit comment generated here */\r
index ca57a95639e80895036cd87c506b84eed4cf1132..207b2c853e3f1b408bb1ee2452a9bb57d5ff8e3a 100644 (file)
@@ -2,15 +2,15 @@
 * 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
+* 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
+* 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
@@ -110,7 +110,7 @@ __interrupt static void r_sci1_transmit_interrupt(void)
         gp_sci1_tx_address++;\r
         g_sci1_tx_count--;\r
     }\r
-    else \r
+    else\r
     {\r
         SCI1.SCR.BIT.TIE = 0U;\r
         SCI1.SCR.BIT.TEIE = 1U;\r
@@ -192,20 +192,20 @@ __interrupt static void r_sci1_receiveerror_interrupt(void)
 void r_sci1_callback_transmitend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
 \r
-       /* The sci1_txdone flag is used by the auto generated API only. */\r
-       sci1_txdone = TRUE;\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
+    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
+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+    }\r
     /* End user code. Do not edit comment generated here */\r
 }\r
 /***********************************************************************************************************************\r
@@ -217,23 +217,23 @@ void r_sci1_callback_transmitend(void)
 void r_sci1_callback_receiveend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\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
+    /* 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
@@ -291,30 +291,30 @@ MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
 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
+    ( 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
+    /* 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
+    /* 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
@@ -323,53 +323,53 @@ void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString
 {\r
 const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );\r
 \r
-       /* Only one port is supported. */\r
-       ( void ) pxPort;\r
+    /* Only one port is supported. */\r
+    ( void ) pxPort;\r
 \r
-       /* Clear the flag before initiating a new transmission */\r
-       sci1_txdone = FALSE;\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
+    /* Don't send the string unless the previous string has been sent. */\r
+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )\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
+        /* 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
+        /* 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
+        /* 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
+    /* 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
+    /* 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
+    /* 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
+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );\r
+    return pdPASS;\r
 }\r
 \r
 /* End user code. Do not edit comment generated here */\r
index 08fa2ce1e30a9e04a3d407b51205c4559eb3201b..7f6aaf93749ea084cb53e897397561a41dc8148a 100644 (file)
@@ -2,15 +2,15 @@
 * 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
+* 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
+* 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
@@ -110,7 +110,7 @@ static void r_sci1_transmit_interrupt(void)
         gp_sci1_tx_address++;\r
         g_sci1_tx_count--;\r
     }\r
-    else \r
+    else\r
     {\r
         SCI1.SCR.BIT.TIE = 0U;\r
         SCI1.SCR.BIT.TEIE = 1U;\r
@@ -192,20 +192,20 @@ static void r_sci1_receiveerror_interrupt(void)
 void r_sci1_callback_transmitend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
 \r
-       /* The sci1_txdone flag is used by the auto generated API only. */\r
-       sci1_txdone = TRUE;\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
+    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
+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+    }\r
     /* End user code. Do not edit comment generated here */\r
 }\r
 /***********************************************************************************************************************\r
@@ -217,23 +217,23 @@ void r_sci1_callback_transmitend(void)
 void r_sci1_callback_receiveend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-       BaseType_t xHigherPriorityTaskWoken = pdFALSE;\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
+    /* 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
@@ -291,30 +291,30 @@ MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
 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
+    ( 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
+    /* 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
+    /* 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
@@ -323,53 +323,53 @@ void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString
 {\r
 const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );\r
 \r
-       /* Only one port is supported. */\r
-       ( void ) pxPort;\r
+    /* Only one port is supported. */\r
+    ( void ) pxPort;\r
 \r
-       /* Clear the flag before initiating a new transmission */\r
-       sci1_txdone = FALSE;\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
+    /* Don't send the string unless the previous string has been sent. */\r
+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )\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
+        /* 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
+        /* 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
+        /* 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
+    /* 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
+    /* 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
+    /* 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
+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );\r
+    return pdPASS;\r
 }\r
 \r
 /* End user code. Do not edit comment generated here */\r
index 592b8164c2ee44232593b06df8a043d6f1550c22..d10a5590dc95e8127b0996c120ee00839ac7df14 100644 (file)
@@ -46,6 +46,7 @@
                                                                <option id="com.renesas.cdt.core.Compiler.option.deviceShortName.339321196" name="DeviceShortName" superClass="com.renesas.cdt.core.Compiler.option.deviceShortName" value="R5F571MLCxFC" valueType="string"/>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.core.Compiler.option.includeFileDir.1486703917" 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/Full_Demo/Standard_Demo_Tasks/include}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/cg_src}&quot;"/>\r
                                                </toolChain>\r
                                        </folderInfo>\r
                                        <sourceEntries>\r
-                                               <entry excluding="cg_src/r_cg_sci_user_iar.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>\r
+                                               <entry excluding="cg_src/r_cg_intprg_gcc.c|cg_src/r_cg_intprg_iar.c|cg_src/r_cg_sci_user_iar.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>\r
                                        </sourceEntries>\r
                                </configuration>\r
                        </storageModule>\r
index d82dcb065806c343430b84b60228ad752545d32a..838b25b97993d0e87f67e02495d4d8809b80d0f3 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>1442924121510</id>\r
+                       <id>1444769735116</id>\r
                        <name></name>\r
                        <type>10</type>\r
                        <matcher>\r
                                <arguments>1.0-name-matches-false-false-RTOSDemo</arguments>\r
                        </matcher>\r
                </filter>\r
+               <filter>\r
+                       <id>1444769735116</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>1444769735126</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.ewd</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444769735126</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.ewp</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444769735126</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.ewt</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444769735136</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.eww</arguments>\r
+                       </matcher>\r
+               </filter>\r
+               <filter>\r
+                       <id>1444769735136</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>1444769735146</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-settings</arguments>\r
+                       </matcher>\r
+               </filter>\r
                <filter>\r
                        <id>1442756186478</id>\r
                        <name>src/FreeRTOS_Source</name>\r
index 809fddcfc352b7a9af6411779455f95cdd67d384..5ec2264a6f1ae20e018bcc11e97898f56ac1692c 100644 (file)
@@ -3,7 +3,7 @@
        <configuration id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.363159113" 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="-1148160698755661085" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="1142094570" 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="-117486239217196327" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="1142094570" 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 fbea6b47524275af800b5f7b6aab9a2063177662..5594e10057c21a258510ed4043d3745cd803c6cf 100644 (file)
@@ -9,7 +9,7 @@
 <stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>\r
 <intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>\r
 <stringAttribute key="com.renesas.cdt.core.runCommands" value=""/>\r
-<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1  -t R5F571ML  -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 27.0000 -uAllowClockSourceInternal= 1 -uUseFine= 0 -uJTagClockFreq= 16.5 -w 0 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 0 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -b -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0 -uPTimerClock= 120000000 -uhookWorkRamAddr= 0x1000 -uhookWorkRamSize= 0x230"/>\r
+<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1  -t R5F571ML  -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 27.0000 -uAllowClockSourceInternal= 1 -uUseFine= 0 -uJTagClockFreq= 16.5 -w 1 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 0 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -b -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0 -uPTimerClock= 120000000 -uhookWorkRamAddr= 0x1000 -uhookWorkRamSize= 0x230"/>\r
 <booleanAttribute key="com.renesas.cdt.core.setResume" value="true"/>\r
 <booleanAttribute key="com.renesas.cdt.core.setStopAt" value="true"/>\r
 <booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>\r
@@ -29,7 +29,7 @@
 <booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>\r
 <intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>\r
 <stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" value="0"/>\r
-<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="false"/>\r
+<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="true"/>\r
 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable.hot.plug" value="false"/>\r
 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/>\r
 <booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" value="false"/>\r
@@ -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\RX700_RX71M_GCC_e2studio\HardwareDebug\RTOSDemo.x"/>\r
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_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\RX700_RX71M_GCC_e2studio\HardwareDebug\RTOSDemo.x"/>\r
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_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 3ef1570c0a6b7823932bbbb0a55087a42dd15795..ef652c88043a2d69dd145bce68fca85504495400 100644 (file)
@@ -29,7 +29,7 @@
         </option>\r
         <option>\r
           <name>CRunToEnable</name>\r
-          <state>0</state>\r
+          <state>1</state>\r
         </option>\r
         <option>\r
           <name>CRunToName</name>\r
index 9ea5290e2a8f85b50b4a2a5ef1e466ed317878a5..5fbc3f00e75af02f160e990fa397cc9e9ad9f8b3 100644 (file)
         <option>\r
           <name>GenLibInFormatter</name>\r
           <version>1</version>\r
-          <state>1</state>\r
+          <state>0</state>\r
         </option>\r
         <option>\r
           <name>GenLibInFormatterDescription</name>\r
-          <state>Full formatting.</state>\r
+          <state>Automatic choice of formatter.</state>\r
         </option>\r
         <option>\r
           <name>GenLibOutFormatter</name>\r
           <version>1</version>\r
-          <state>1</state>\r
+          <state>0</state>\r
         </option>\r
         <option>\r
           <name>GenLibOutFormatterDescription</name>\r
-          <state>Full formatting.</state>\r
+          <state>Automatic choice of formatter.</state>\r
         </option>\r
         <option>\r
           <name>GeneralEnableMisra</name>\r
         </option>\r
         <option>\r
           <name>CCDefines</name>\r
-          <state></state>\r
+          <state>__RX</state>\r
         </option>\r
         <option>\r
           <name>CCPreprocFile</name>\r
           <state>$PROJ_DIR$\..\..\Source\portable\IAR\RXv2</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
   </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$\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
   <file>\r
     <name>$PROJ_DIR$\src\main.c</name>\r
   </file>\r
+  <file>\r
+    <name>$PROJ_DIR$\src\cg_src\r_cg_intprg_iar.c</name>\r
+  </file>\r
   <file>\r
     <name>$PROJ_DIR$\src\rskrx71mdef.h</name>\r
   </file>\r
index 4f7e51010fb6b699944a098d1687b6bd8aee34b5..5e0066fdd6a4928a9df4c74a0125a67e6e2c70af 100644 (file)
@@ -4,9 +4,9 @@
   <Desktop>\r
     <Static>\r
       <Debug-Log>\r
-        <ColumnWidth0>20</ColumnWidth0>\r
-        <ColumnWidth1>1622</ColumnWidth1>\r
-      </Debug-Log>\r
+        \r
+        \r
+      <ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>\r
       <Build>\r
         <ColumnWidth0>20</ColumnWidth0>\r
         <ColumnWidth1>1216</ColumnWidth1>\r
       </Build>\r
       <Workspace>\r
         <ColumnWidths>\r
-          <Column0>255</Column0>\r
-          <Column1>27</Column1>\r
-          <Column2>27</Column2>\r
-          <Column3>27</Column3>\r
-        </ColumnWidths>\r
+          \r
+          \r
+          \r
+          \r
+        <Column0>255</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>\r
       </Workspace>\r
       <Disassembly>\r
         <col-names>\r
-          <item>Disassembly</item>\r
-          <item>_I0</item>\r
-        </col-names>\r
+          \r
+          \r
+        <item>Disassembly</item><item>_I0</item></col-names>\r
         <col-widths>\r
-          <item>500</item>\r
-          <item>20</item>\r
-        </col-widths>\r
+          \r
+          \r
+        <item>500</item><item>20</item></col-widths>\r
         <DisasmHistory/>\r
         <PreferedWindows>\r
-          <Position>2</Position>\r
-          <ScreenPosX>0</ScreenPosX>\r
-          <ScreenPosY>0</ScreenPosY>\r
-          <Windows/>\r
-        </PreferedWindows>\r
-        <ShowCodeCoverage>1</ShowCodeCoverage>\r
-        <ShowInstrProfiling>1</ShowInstrProfiling>\r
-      </Disassembly>\r
+          \r
+          \r
+          \r
+          \r
+        <Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>\r
+        \r
+        \r
+      <ShowCodeCoverage>1</ShowCodeCoverage><ShowInstrProfiling>1</ShowInstrProfiling></Disassembly>\r
       <Register>\r
         <PreferedWindows>\r
           <Position>2</Position>\r
           <Windows/>\r
         </PreferedWindows>\r
       </Register>\r
-    </Static>\r
+    <Find-in-Files><ColumnWidth0>497</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>746</ColumnWidth2><ColumnWidth3>331</ColumnWidth3></Find-in-Files><CallStack><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><col-names><item>Frame</item><item>_I0</item></col-names><col-widths><item>3500</item><item>20</item></col-widths></CallStack><WATCH_1><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><expressions><item/></expressions><col-names><item>Expression</item><item>Location</item><item>Type</item><item>Value</item></col-names><col-widths><item>100</item><item>150</item><item>100</item><item>100</item></col-widths></WATCH_1></Static>\r
     <Windows>\r
-      <Wnd1>\r
+      \r
+      \r
+    <Wnd3>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-6594-3339</Identity>\r
             <Factory>Build</Factory>\r
             <Session/>\r
           </Tab>\r
-        </Tabs>\r
-        <SelectedTab>0</SelectedTab>\r
-      </Wnd1>\r
-      <Wnd4>\r
+        <Tab><Identity>TabID-19467-29965</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>\r
+        \r
+      <SelectedTab>0</SelectedTab></Wnd3><Wnd4>\r
         <Tabs>\r
           <Tab>\r
             <Identity>TabID-17343-3342</Identity>\r
             <TabName>Workspace</TabName>\r
             <Factory>Workspace</Factory>\r
             <Session>\r
-              <NodeDict>\r
-                <ExpandedNode>RTOSDemo</ExpandedNode>\r
-              </NodeDict>\r
-            </Session>\r
+              \r
+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>\r
           </Tab>\r
         </Tabs>\r
-        <SelectedTab>0</SelectedTab>\r
-      </Wnd4>\r
-    </Windows>\r
+        \r
+      <SelectedTab>0</SelectedTab></Wnd4><Wnd5><Tabs><Tab><Identity>TabID-15169-30612</Identity><TabName>Disassembly</TabName><Factory>Disassembly</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd5></Windows>\r
     <Editor>\r
-      <Pane>\r
-        <Tab>\r
-          <Factory>TextEditor</Factory>\r
-          <Filename>$WS_DIR$\src\main.c</Filename>\r
-          <XPos>0</XPos>\r
-          <YPos>0</YPos>\r
-          <SelStart>0</SelStart>\r
-          <SelEnd>0</SelEnd>\r
-          <XPos2>0</XPos2>\r
-          <YPos2>66</YPos2>\r
-          <SelStart2>5312</SelStart2>\r
-          <SelEnd2>5312</SelEnd2>\r
-        </Tab>\r
-        <Tab>\r
-          <Factory>TextEditor</Factory>\r
-          <Filename>$WS_DIR$\src\Full_Demo\RegTest_IAR.s</Filename>\r
-          <XPos>0</XPos>\r
-          <YPos>0</YPos>\r
-          <SelStart>0</SelStart>\r
-          <SelEnd>0</SelEnd>\r
-          <XPos2>0</XPos2>\r
-          <YPos2>144</YPos2>\r
-          <SelStart2>5881</SelStart2>\r
-          <SelEnd2>5881</SelEnd2>\r
-        </Tab>\r
-        <Tab>\r
-          <Factory>TextEditor</Factory>\r
-          <Filename>$WS_DIR$\..\Common\Minimal\flop.c</Filename>\r
-          <XPos>0</XPos>\r
-          <YPos>0</YPos>\r
-          <SelStart>0</SelStart>\r
-          <SelEnd>0</SelEnd>\r
-          <XPos2>0</XPos2>\r
-          <YPos2>126</YPos2>\r
-          <SelStart2>6956</SelStart2>\r
-          <SelEnd2>6956</SelEnd2>\r
-        </Tab>\r
-        <Tab>\r
-          <Factory>TextEditor</Factory>\r
-          <Filename>$WS_DIR$\..\Common\Minimal\TimerDemo.c</Filename>\r
-          <XPos>0</XPos>\r
-          <YPos>0</YPos>\r
-          <SelStart>0</SelStart>\r
-          <SelEnd>0</SelEnd>\r
-          <XPos2>0</XPos2>\r
-          <YPos2>242</YPos2>\r
-          <SelStart2>12612</SelStart2>\r
-          <SelEnd2>12612</SelEnd2>\r
-        </Tab>\r
-        <Tab>\r
-          <Factory>TextEditor</Factory>\r
-          <Filename>$WS_DIR$\..\Common\Minimal\IntQueue.c</Filename>\r
-          <XPos>0</XPos>\r
-          <YPos>0</YPos>\r
-          <SelStart>0</SelStart>\r
-          <SelEnd>0</SelEnd>\r
-          <XPos2>0</XPos2>\r
-          <YPos2>381</YPos2>\r
-          <SelStart2>0</SelStart2>\r
-          <SelEnd2>0</SelEnd2>\r
-        </Tab>\r
-        <Tab>\r
-          <Factory>TextEditor</Factory>\r
-          <Filename>$WS_DIR$\src\Full_Demo\IntQueueTimer.c</Filename>\r
-          <XPos>0</XPos>\r
-          <YPos>0</YPos>\r
-          <SelStart>0</SelStart>\r
-          <SelEnd>0</SelEnd>\r
-          <XPos2>0</XPos2>\r
-          <YPos2>154</YPos2>\r
-          <SelStart2>7349</SelStart2>\r
-          <SelEnd2>7349</SelEnd2>\r
-        </Tab>\r
-        <ActiveTab>5</ActiveTab>\r
-      </Pane>\r
-      <ActivePane>0</ActivePane>\r
-      <Sizes>\r
-        <Pane>\r
-          <X>1000000</X>\r
-          <Y>1000000</Y>\r
-        </Pane>\r
-      </Sizes>\r
-      <SplitMode>1</SplitMode>\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>112</YPos2><SelStart2>6366</SelStart2><SelEnd2>6366</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>61</YPos2><SelStart2>4905</SelStart2><SelEnd2>4905</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\cg_src\r_cg_sci_user_iar.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>309</YPos2><SelStart2>14485</SelStart2><SelEnd2>14485</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\cg_src\r_cg_sci.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>163</YPos2><SelStart2>8761</SelStart2><SelEnd2>8761</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>1670</YPos2><SelStart2>60105</SelStart2><SelEnd2>60105</SelEnd2></Tab><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>390</YPos2><SelStart2>16934</SelStart2><SelEnd2>16934</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\Sample-CLI-commands.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>401</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\UARTCommandConsole.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>187</YPos2><SelStart2>8728</SelStart2><SelEnd2>8728</SelEnd2></Tab><ActiveTab>7</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>\r
     <Positions>\r
-      <Top>\r
-        <Row0>\r
-          <Sizes>\r
-            <Toolbar-026E7B08>\r
-              <key>iaridepm.enu1</key>\r
-            </Toolbar-026E7B08>\r
-          </Sizes>\r
-        </Row0>\r
-        <Row1>\r
-          <Sizes>\r
-            <Toolbar-1DFB9BD8>\r
-              <key>debuggergui.enu1</key>\r
-            </Toolbar-1DFB9BD8>\r
-          </Sizes>\r
-        </Row1>\r
-      </Top>\r
-      <Left>\r
-        <Row0>\r
-          <Sizes>\r
-            <Wnd4>\r
-              <Rect>\r
-                <Top>-2</Top>\r
-                <Left>-2</Left>\r
-                <Bottom>718</Bottom>\r
-                <Right>329</Right>\r
-                <x>-2</x>\r
-                <y>-2</y>\r
-                <xscreen>200</xscreen>\r
-                <yscreen>200</yscreen>\r
-                <sizeHorzCX>119048</sizeHorzCX>\r
-                <sizeHorzCY>203252</sizeHorzCY>\r
-                <sizeVertCX>197024</sizeVertCX>\r
-                <sizeVertCY>731707</sizeVertCY>\r
-              </Rect>\r
-            </Wnd4>\r
-          </Sizes>\r
-        </Row0>\r
-      </Left>\r
-      <Right>\r
-        <Row0>\r
-          <Sizes/>\r
-        </Row0>\r
-      </Right>\r
-      <Bottom>\r
-        <Row0>\r
-          <Sizes>\r
-            <Wnd1>\r
-              <Rect>\r
-                <Top>-2</Top>\r
-                <Left>-2</Left>\r
-                <Bottom>198</Bottom>\r
-                <Right>1682</Right>\r
-                <x>-2</x>\r
-                <y>-2</y>\r
-                <xscreen>1684</xscreen>\r
-                <yscreen>200</yscreen>\r
-                <sizeHorzCX>1002381</sizeHorzCX>\r
-                <sizeHorzCY>203252</sizeHorzCY>\r
-                <sizeVertCX>119048</sizeVertCX>\r
-                <sizeVertCY>203252</sizeVertCY>\r
-              </Rect>\r
-            </Wnd1>\r
-          </Sizes>\r
-        </Row0>\r
-      </Bottom>\r
-      <Float>\r
-        <Sizes/>\r
-      </Float>\r
-    </Positions>\r
+      \r
+      \r
+      \r
+      \r
+      \r
+    <Top><Row0><Sizes><Toolbar-026C81F0><key>iaridepm.enu1</key></Toolbar-026C81F0></Sizes></Row0><Row1><Sizes><Toolbar-1B927300><key>debuggergui.enu1</key></Toolbar-1B927300></Sizes></Row1><Row2><Sizes/></Row2></Top><Left><Row0><Sizes><Wnd4><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></Wnd4></Sizes></Row0></Left><Right><Row0><Sizes><Wnd5><Rect><Top>-2</Top><Left>-2</Left><Bottom>718</Bottom><Right>198</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>731707</sizeVertCY></Rect></Wnd5></Sizes></Row0></Right><Bottom><Row0><Sizes><Wnd3><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></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
   </Desktop>\r
 </Project>\r
 \r
index 9d63d239fa652b6705fc4d53f3e644d204ffc0f3..ce577824cef70e6917f86d59bf07e32529e4bdc3 100644 (file)
@@ -1,5 +1,5 @@
 [DebugChecksum]\r
-Checksum=-126027898\r
+Checksum=-1340739960\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=25.000000\r
 ICLK=240.000000\r
 AllowClkSrcChange=0\r
index 429531515d13f77346320653b28c5d452fc36627..8fdc6d88ceb4e796bd0dbac594fea8297cf43cb8 100644 (file)
@@ -12,7 +12,7 @@
           \r
           \r
           \r
-        <Column0>310</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>\r
+        <Column0>326</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>\r
       </Workspace>\r
       <Build>\r
         \r
@@ -25,7 +25,7 @@
         <ColumnWidth0>20</ColumnWidth0>\r
         <ColumnWidth1>1622</ColumnWidth1>\r
       </Debug-Log>\r
-    </Static>\r
+    <Find-in-Files><ColumnWidth0>497</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>746</ColumnWidth2><ColumnWidth3>331</ColumnWidth3></Find-in-Files></Static>\r
     <Windows>\r
       \r
       \r
@@ -37,7 +37,7 @@
             <Factory>Workspace</Factory>\r
             <Session>\r
               \r
-            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Blinky_Demo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source/portable</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo/Standard_Demo_Tasks</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>\r
+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo/FreeRTOS+CLI</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>\r
           </Tab>\r
         </Tabs>\r
         \r
@@ -55,7 +55,7 @@
             <Factory>Debug-Log</Factory>\r
             <Session/>\r
           </Tab>\r
-        </Tabs>\r
+        <Tab><Identity>TabID-17690-32046</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>\r
         \r
       <SelectedTab>0</SelectedTab></Wnd3></Windows>\r
     <Editor>\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>66</YPos2><SelStart2>5312</SelStart2><SelEnd2>5312</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Full_Demo\RegTest_IAR.s</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>144</YPos2><SelStart2>5881</SelStart2><SelEnd2>5881</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\flop.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>126</YPos2><SelStart2>6956</SelStart2><SelEnd2>6956</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\TimerDemo.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>242</YPos2><SelStart2>12612</SelStart2><SelEnd2>12612</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>381</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Full_Demo\IntQueueTimer.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>142</YPos2><SelStart2>7349</SelStart2><SelEnd2>7349</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\RXv2\port.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>61</YPos2><SelStart2>4241</SelStart2><SelEnd2>4241</SelEnd2></Tab><ActiveTab>6</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>67</YPos2><SelStart2>0</SelStart2><SelEnd2>0</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-00887B08><key>iaridepm.enu1</key></Toolbar-00887B08></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>742</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>756098</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><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></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
+    <Top><Row0><Sizes><Toolbar-0106A4B8><key>iaridepm.enu1</key></Toolbar-0106A4B8></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>741</Bottom><Right>400</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>201</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>204268</sizeHorzCY><sizeVertCX>239286</sizeVertCX><sizeVertCY>755081</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>199</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>201</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>204268</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>204268</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>\r
   </Desktop>\r
 </Workspace>\r
 \r
index ecdc2c482a7c3a5052fa34998e198f4f69907cd5..58fc39bac7fae2557f9030730ab26d7585d18d36 100644 (file)
@@ -1,2 +1,2 @@
 [MainWindow]\r
-WindowPlacement=_ 519 0 1619 872 3\r
+WindowPlacement=_ 250 0 1350 872 3\r
index dab3ec04d8d986a55f70ceeeb66c7bbd0e2b9e18..afe12f00c85abd7afd385d95a54f9c57d87e1f02 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 5faf0cea9f16b3a52eee1bd5896ecb42333ace33..a545a79b0dede88fa2b381964e834426f11e776e 100644 (file)
 #define configUSE_PREEMPTION                   1\r
 #define configUSE_IDLE_HOOK                            1\r
 #define configUSE_TICK_HOOK                            1\r
-#define configCPU_CLOCK_HZ                             ( 120000000UL ) /*_RB_ guess*/\r
-#define configPERIPHERAL_CLOCK_HZ              ( 60000000UL ) /*_RB_ guess*/\r
+#define configCPU_CLOCK_HZ                             ( 120000000UL )\r
+#define configPERIPHERAL_CLOCK_HZ              ( 60000000UL )\r
 #define configTICK_RATE_HZ                             ( ( TickType_t ) 1000 )\r
-#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 140 )\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 40 * 1024 ) )\r
+#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 120 )\r
+#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 50 * 1024 ) )\r
 #define configMAX_TASK_NAME_LEN                        ( 12 )\r
 #define configUSE_TRACE_FACILITY               1\r
 #define configUSE_16_BIT_TICKS                 0\r
 #define configMAX_PRIORITIES                   ( 7 )\r
 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
 \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              ( configMAX_PRIORITIES - 1 )\r
@@ -152,9 +158,14 @@ to exclude the API function. */
 #define INCLUDE_eTaskGetState                          1\r
 #define INCLUDE_xTimerPendFunctionCall         1\r
 \r
-void vAssertCalled( void );\r
 #define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); 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
 /* Override some of the priorities set in the common demo tasks.  This is\r
 required to ensure flase positive timing errors are not reported. */\r
 #define bktPRIMARY_PRIORITY            ( configMAX_PRIORITIES - 3 )\r
@@ -162,28 +173,4 @@ required to ensure flase positive timing errors are not reported. */
 #define intqHIGHER_PRIORITY            ( configMAX_PRIORITIES - 3 )\r
 \r
 \r
-/*-----------------------------------------------------------\r
- * Ethernet configuration.\r
- *-----------------------------------------------------------*/\r
-\r
-/* MAC address configuration. */\r
-#define configMAC_ADDR0        0x00\r
-#define configMAC_ADDR1        0x12\r
-#define configMAC_ADDR2        0x13\r
-#define configMAC_ADDR3        0x10\r
-#define configMAC_ADDR4        0x15\r
-#define configMAC_ADDR5        0x11\r
-\r
-/* IP address configuration. */\r
-#define configIP_ADDR0         192\r
-#define configIP_ADDR1         168\r
-#define configIP_ADDR2         0\r
-#define configIP_ADDR3         200\r
-\r
-/* Netmask configuration. */\r
-#define configNET_MASK0                255\r
-#define configNET_MASK1                255\r
-#define configNET_MASK2                255\r
-#define configNET_MASK3                0\r
-\r
 #endif /* FREERTOS_CONFIG_H */\r
index fcf9f8c1fe4f8def65a56ccd4e5d474e7242dc6e..a26068ccbf83e73f0963d5b268ed530ce8ce7ddc 100644 (file)
@@ -71,8 +71,8 @@
 #define INT_QUEUE_TIMER_H\r
 \r
 void vInitialiseTimerForIntQueueTest( void );\r
-portBASE_TYPE xTimer0Handler( void );\r
-portBASE_TYPE xTimer1Handler( void );\r
+BaseType_t xTimer0Handler( void );\r
+BaseType_t xTimer1Handler( void );\r
 \r
 #endif\r
 \r
index e4edba2ae325beb83a7c5654ff00b5ebf600710f..4a0b7aa9adf0794d8834452497495de75d6b6879 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 <rskrx71mdef.h>\r
 #include <stdio.h>\r
 \r
 /* Kernel includes. */\r
 #include "IntSemTest.h"\r
 \r
 /* Renesas includes. */\r
+#include <rskrx71mdef.h>\r
 #include "r_cg_macrodriver.h"\r
 #include "r_cg_userdefine.h"\r
 \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
-\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 +213,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 +232,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
@@ -250,7 +259,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
@@ -404,7 +420,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
@@ -412,7 +427,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
index 8505c608468845148a128b07b1f9a48bab2d3fe3..a52504cdb3733f2763255eadb52715bf4c4e92e2 100644 (file)
@@ -16,6 +16,7 @@
 /*    Date Generated: 18/12/2014                                        */\r
 /************************************************************************/\r
 #include "interrupt_handlers.h"\r
+#include "iodefine.h"\r
 \r
 // Exception(Supervisor Instruction)\r
 void INT_Excep_SuperVisorInst(void){/* brk(); */}\r
@@ -328,7 +329,20 @@ void INT_Excep_ICU_GROUPBE0(void){ }
 //;0x01B4 Reserved \r
 \r
 //;0x01B8 GROUPBL0\r
-void INT_Excep_ICU_GROUPBL0(void){ }\r
+void INT_Excep_ICU_GROUPBL0(void)\r
+{\r
+extern void r_sci7_transmitend_interrupt( void );\r
+extern void r_sci7_receiveerror_interrupt( void );\r
+\r
+    if (ICU.GRPBL0.BIT.IS14 == 1U)\r
+    {\r
+        r_sci7_transmitend_interrupt();\r
+    }\r
+    if (ICU.GRPBL0.BIT.IS15 == 1U)\r
+    {\r
+        r_sci7_receiveerror_interrupt();\r
+    }\r
+}\r
 \r
 //;0x01BC GROUPBL1\r
 void INT_Excep_ICU_GROUPBL1(void){ }\r
index 2c6ff85733afa931784855ec4864a0dfea1c0599..486f4f1abf2f8bda090a405c000454d0d440e05e 100644 (file)
@@ -25,6 +25,8 @@ extern void vTickISR( void );
 extern void vSoftwareInterruptISR( void );\r
 extern void vIntQTimerISR0( void );\r
 extern void vIntQTimerISR1( void );\r
+void r_sci7_transmit_interrupt(void);\r
+void r_sci7_receive_interrupt(void);\r
 \r
 #define EXVECT_SECT    __attribute__ ((section (".exvectors")))\r
 \r
@@ -365,10 +367,10 @@ const fp RelocatableVectors[] RVECT_SECT  = {
     (fp)INT_Excep_PDC_PCDFI,\r
 \r
 //;0x0188 RXI7\r
-    (fp)INT_Excep_SCI7_RXI7,\r
+    (fp)r_sci7_receive_interrupt,\r
 \r
 //;0x018C TXI7\r
-    (fp)INT_Excep_SCI7_TXI7,\r
+    (fp)r_sci7_transmit_interrupt,\r
 \r
 //;0x0190 RXIF8\r
     (fp)INT_Excep_SCIFA8_RXIF8,\r
diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_intprg_iar.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_intprg_iar.c
new file mode 100644 (file)
index 0000000..60f3a75
--- /dev/null
@@ -0,0 +1,127 @@
+/* Adapted for use with IAR Embedded Workbench */\r
+/***********************************************************************************************************************\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) 2013, 2014 Renesas Electronics Corporation. All rights reserved.\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+* File Name    : r_cg_intprg.c\r
+* Version      : Code Generator for RX64M V1.00.01.01 [09 May 2014]\r
+* Device(s)    : R5F571MLCxFC\r
+* Tool-Chain   : IAR Embedded Workbench\r
+* Description  : Setting of B.\r
+* Creation Date: 30/06/2014\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 <machine.h>\r
+#include "r_cg_userdefine.h"\r
+\r
+/***********************************************************************************************************************\r
+Global variables and functions\r
+***********************************************************************************************************************/\r
+\r
+\r
+// fixedint.c in $TOOLKIT$/rx/src/lib/src\r
+/* Undefined exceptions for supervisor instruction, undefined instruction and floating point exceptions */\r
+__interrupt void __undefined_handler (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
+/* NMI */\r
+__interrupt void __NMI_handler (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
+\r
+/* BRK */\r
+#pragma vector=0\r
+__interrupt void r_brk_exception(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
+/* ICU GROUPBE0 */\r
+#pragma vector=VECT(ICU,GROUPBE0)\r
+__interrupt void r_icu_group_be0_interrupt(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
+\r
+/* ICU GROUPBL0 */\r
+#pragma vector=VECT(ICU,GROUPBL0)\r
+__interrupt void r_icu_group_bl0_interrupt(void)\r
+{\r
+    if (ICU.GRPBL0.BIT.IS14 == 1U)\r
+    {\r
+        r_sci7_transmitend_interrupt();\r
+    }\r
+    if (ICU.GRPBL0.BIT.IS15 == 1U)\r
+    {\r
+        r_sci7_receiveerror_interrupt();\r
+    }\r
+    /* Start user code. Do not edit comment generated here */\r
+    /* End user code. Do not edit comment generated here */\r
+}\r
+\r
+/* ICU GROUPBL1 */\r
+#pragma vector=VECT(ICU,GROUPBL1)\r
+__interrupt void r_icu_group_bl1_interrupt(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
+/* ICU GROUPAL0 */\r
+#pragma vector=VECT(ICU,GROUPAL0)\r
+__interrupt void r_icu_group_al0_interrupt(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
+/* ICU GROUPAL1 */\r
+#pragma vector=VECT(ICU,GROUPAL1)\r
+__interrupt void r_icu_group_al1_interrupt(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
+/* End user code. Do not edit comment generated here */\r
index a099d50ffe15d3c318d82dc933b16d251723e904..c3def9c18bf20326da288199e5d9328f6ed4c7da 100644 (file)
@@ -33,6 +33,7 @@ Includes
 #ifdef __ICCRX__\r
        #include <iorx71m.h>\r
        #include <machine.h>\r
+       #include <stdint.h>\r
 #endif\r
 \r
 #ifdef __GNUC__\r
diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user.c
deleted file mode 100644 (file)
index 6f4c8bc..0000000
+++ /dev/null
@@ -1,232 +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 RX71M V1.00.02.02 [28 May 2015]\r
-* Device(s)    : R5F571MLCxFC\r
-* Tool-Chain   : CCRX\r
-* Description  : This file implements device driver for SCI module.\r
-* Creation Date: 20/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
-/* 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_sci7_tx_address;                /* SCI7 send buffer address */\r
-extern uint16_t  g_sci7_tx_count;                   /* SCI7 send data number */\r
-extern uint8_t * gp_sci7_rx_address;                /* SCI7 receive buffer address */\r
-extern uint16_t  g_sci7_rx_count;                   /* SCI7 receive data number */\r
-extern uint16_t  g_sci7_rx_length;                  /* SCI7 receive data length */\r
-/* Start user code for global. Do not edit comment generated here */\r
-/* Flag used locally to detect transmission complete */\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 sci6_txdone;\r
-static volatile uint8_t sci7_txdone;\r
-\r
-/* End user code. Do not edit comment generated here */\r
-\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci7_transmit_interrupt\r
-* Description  : None\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-#if FAST_INTERRUPT_VECTOR == VECT_SCI7_TXI7\r
-#pragma interrupt r_sci7_transmit_interrupt(vect=VECT(SCI7,TXI7),fint)\r
-#else\r
-#pragma interrupt r_sci7_transmit_interrupt(vect=VECT(SCI7,TXI7))\r
-#endif\r
-static void r_sci7_transmit_interrupt(void)\r
-{\r
-    if (0U < g_sci7_tx_count)\r
-    {\r
-        SCI7.TDR = *gp_sci7_tx_address;\r
-        gp_sci7_tx_address++;\r
-        g_sci7_tx_count--;\r
-    }\r
-    else\r
-    {\r
-        SCI7.SCR.BIT.TIE = 0U;\r
-        SCI7.SCR.BIT.TEIE = 1U;\r
-    }\r
-}\r
-\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci7_transmitend_interrupt\r
-* Description  : This function is TEI7 interrupt service routine.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-void r_sci7_transmitend_interrupt(void)\r
-{\r
-    /* Set TXD7 pin */\r
-    PORT9.PMR.BYTE &= 0xFEU;\r
-    SCI7.SCR.BIT.TIE = 0U;\r
-    SCI7.SCR.BIT.TE = 0U;\r
-    SCI7.SCR.BIT.TEIE = 0U;\r
-\r
-    r_sci7_callback_transmitend();\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci7_receive_interrupt\r
-* Description  : None\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-#if FAST_INTERRUPT_VECTOR == VECT_SCI7_RXI7\r
-#pragma interrupt r_sci7_receive_interrupt(vect=VECT(SCI7,RXI7),fint)\r
-#else\r
-#pragma interrupt r_sci7_receive_interrupt(vect=VECT(SCI7,RXI7))\r
-#endif\r
-static void r_sci7_receive_interrupt(void)\r
-{\r
-    if (g_sci7_rx_length > g_sci7_rx_count)\r
-    {\r
-        *gp_sci7_rx_address = SCI7.RDR;\r
-        gp_sci7_rx_address++;\r
-        g_sci7_rx_count++;\r
-\r
-        if (g_sci7_rx_length <= g_sci7_rx_count)\r
-        {\r
-            r_sci7_callback_receiveend();\r
-        }\r
-    }\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci7_receiveerror_interrupt\r
-* Description  : This function is ERI7 interrupt service routine.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-void r_sci7_receiveerror_interrupt(void)\r
-{\r
-    uint8_t err_type;\r
-\r
-    r_sci7_callback_receiveerror();\r
-\r
-    /* Clear overrun, framing and parity error flags */\r
-    err_type = SCI7.SSR.BYTE;\r
-    err_type &= 0xC7U;\r
-    err_type |= 0xC0U;\r
-    SCI7.SSR.BYTE = err_type;\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci7_callback_transmitend\r
-* Description  : This function is a callback function when SCI7 finishes transmission.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-static void r_sci7_callback_transmitend(void)\r
-{\r
-    /* Start user code. Do not edit comment generated here */\r
-    sci7_txdone = TRUE;\r
-\r
-    /* End user code. Do not edit comment generated here */\r
-}\r
-/***********************************************************************************************************************\r
-* Function Name: r_sci7_callback_receiveend\r
-* Description  : This function is a callback function when SCI7 finishes reception.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-static void r_sci7_callback_receiveend(void)\r
-{\r
-    /* Start user code. Do not edit comment generated here */\r
-    /* Check the contents of g_rx_char */\r
-    if (('c' == g_rx_char) || ('C' == g_rx_char))\r
-    {\r
-//_RB_        g_adc_trigger = TRUE;\r
-    }\r
-\r
-    /* Set up SCI7 receive buffer and callback function again */\r
-    R_SCI7_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_sci7_callback_receiveerror\r
-* Description  : This function is a callback function when SCI7 reception encounters error.\r
-* Arguments    : None\r
-* Return Value : None\r
-***********************************************************************************************************************/\r
-static void r_sci7_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
-/*******************************************************************************\r
-* Function Name: R_SCI7_AsyncTransmit\r
-* Description  : This function sends SCI7 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_SCI7_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
-    sci7_txdone = FALSE;\r
-\r
-    /* Send the data using the API */\r
-    status = R_SCI7_Serial_Send(tx_buf, tx_num);\r
-\r
-    /* Wait for the transmit end flag */\r
-    while (FALSE == sci7_txdone)\r
-    {\r
-        /* Wait */\r
-    }\r
-    return (status);\r
-}\r
-\r
-/*******************************************************************************\r
-* End of function R_SCI7_AsyncTransmit\r
-*******************************************************************************/\r
-\r
-\r
-/* End user code. Do not edit comment generated here */\r
diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_gcc.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_gcc.c
new file mode 100644 (file)
index 0000000..d51f9c3
--- /dev/null
@@ -0,0 +1,368 @@
+/*Adapted for IAR Embedded Workbench*/\r
+/***********************************************************************************************************************\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) 2013, 2014 Renesas Electronics Corporation. All rights reserved.\r
+***********************************************************************************************************************/\r
+\r
+/***********************************************************************************************************************\r
+* File Name    : r_cg_sci_user.c\r
+* Version      : Code Generator for RX64M V1.00.01.01 [09 May 2014]\r
+* Device(s)    : R5F571MLCxFC\r
+* Tool-Chain   : IAR Embedded Workbench\r
+* Description  : This file implements device driver for SCI module.\r
+* Creation Date: 30/06/2014\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 "rskrx71mdef.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_sci7_tx_address;                /* SCI7 send buffer address */\r
+extern uint16_t  g_sci7_tx_count;                   /* SCI7 send data number */\r
+extern uint8_t * gp_sci7_rx_address;                /* SCI7 receive buffer address */\r
+extern uint16_t  g_sci7_rx_count;                   /* SCI7 receive data number */\r
+extern uint16_t  g_sci7_rx_length;                  /* SCI7 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 sci7_txdone;\r
+\r
+/* End user code. Do not edit comment generated here */\r
+\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci7_transmit_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci7_transmit_interrupt(void) __attribute__((interrupt));\r
+void r_sci7_transmit_interrupt(void)\r
+{\r
+    if (g_sci7_tx_count > 0U)\r
+    {\r
+        SCI7.TDR = *gp_sci7_tx_address;\r
+        gp_sci7_tx_address++;\r
+        g_sci7_tx_count--;\r
+    }\r
+    else\r
+    {\r
+        SCI7.SCR.BIT.TIE = 0U;\r
+        SCI7.SCR.BIT.TEIE = 1U;\r
+    }\r
+}\r
+\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci7_transmitend_interrupt\r
+* Description  : This function is TEI7 interrupt service routine.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci7_transmitend_interrupt(void)\r
+{\r
+    MPC.P90PFS.BYTE = 0x00U;\r
+    PORT9.PMR.BYTE &= 0xFEU;\r
+    SCI7.SCR.BIT.TIE = 0U;\r
+    SCI7.SCR.BIT.TE = 0U;\r
+    SCI7.SCR.BIT.TEIE = 0U;\r
+\r
+    r_sci7_callback_transmitend();\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci7_receive_interrupt\r
+* Description  : None\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci7_receive_interrupt(void) __attribute__((interrupt));\r
+void r_sci7_receive_interrupt(void)\r
+{\r
+    if (g_sci7_rx_length > g_sci7_rx_count)\r
+    {\r
+        *gp_sci7_rx_address = SCI7.RDR;\r
+        gp_sci7_rx_address++;\r
+        g_sci7_rx_count++;\r
+\r
+        if (g_sci7_rx_length <= g_sci7_rx_count)\r
+        {\r
+            r_sci7_callback_receiveend();\r
+        }\r
+    }\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci7_receiveerror_interrupt\r
+* Description  : This function is ERI7 interrupt service routine.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+void r_sci7_receiveerror_interrupt(void)\r
+{\r
+    uint8_t err_type;\r
+\r
+    r_sci7_callback_receiveerror();\r
+\r
+    /* Clear overrun, framing and parity error flags */\r
+    err_type = SCI7.SSR.BYTE;\r
+    err_type &= 0xC7U;\r
+    err_type |= 0xC0U;\r
+    SCI7.SSR.BYTE = err_type;\r
+}\r
+/***********************************************************************************************************************\r
+* Function Name: r_sci7_callback_transmitend\r
+* Description  : This function is a callback function when SCI7 finishes transmission.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+static void r_sci7_callback_transmitend(void)\r
+{\r
+    /* Start user code. Do not edit comment generated here */\r
+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+    /* The sci7_txdone flag is used by the auto generated API only. */\r
+    sci7_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_sci7_callback_receiveend\r
+* Description  : This function is a callback function when SCI7 finishes reception.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+static void r_sci7_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( sci7_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 SCI7 receive buffer again */\r
+    R_SCI7_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_sci7_callback_receiveerror\r
+* Description  : This function is a callback function when SCI7 reception encounters error.\r
+* Arguments    : None\r
+* Return Value : None\r
+***********************************************************************************************************************/\r
+static void r_sci7_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
+/***********************************************************************************************************************\r
+* Function Name: R_SCI7_AsyncTransmit\r
+* Description  : This function sends SCI7 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_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)\r
+{\r
+    MD_STATUS status = MD_OK;\r
+taskDISABLE_INTERRUPTS();\r
+while( 1 );\r
+    /* clear the flag before initiating a new transmission */\r
+    sci7_txdone = FALSE;\r
+\r
+    /* Send the data using the API */\r
+    status = R_SCI7_Serial_Send(tx_buf, tx_num);\r
+\r
+    /* Wait for the transmit end flag */\r
+    while (FALSE == sci7_txdone)\r
+    {\r
+        /* Wait */\r
+    }\r
+    return (status);\r
+}\r
+/***********************************************************************************************************************\r
+* End of function R_SCI7_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_SCI7_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(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+    IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+    IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+\r
+    /* Enable SCI1 operations */\r
+    R_SCI7_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
+    sci7_txdone = FALSE;\r
+\r
+    /* Don't send the string unless the previous string has been sent. */\r
+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )\r
+    {\r
+        /* Ensure the calling task's notification state is not already\r
+        pending. */\r
+        vTaskNotifyStateClear( 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_SCI7_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 56dbc223aeeaf5840f623e68cdedfd39e5378bf5..f00961d5419a9eba2f866f05dc28feeb22d1f1d9 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
@@ -45,7 +55,10 @@ Includes
 #include "r_cg_sci.h"\r
 /* Start user code for include. Do not edit comment generated here */\r
 #include "rskrx71mdef.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
@@ -65,7 +78,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 sci7_txdone;\r
 \r
 /* End user code. Do not edit comment generated here */\r
@@ -156,7 +183,20 @@ void r_sci7_receiveerror_interrupt(void)
 static void r_sci7_callback_transmitend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+    /* The sci7_txdone flag is used by the auto generated API only. */\r
     sci7_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
@@ -168,31 +208,31 @@ static void r_sci7_callback_transmitend(void)
 static void r_sci7_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
-//        R_CMT1_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_CMT1_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
+    /* 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( sci7_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 SCI7 receive buffer again */\r
     R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);\r
-   /* End user code. Do not edit comment generated here */\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_sci7_callback_receiveerror\r
@@ -237,5 +277,91 @@ MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
 * End of function R_SCI7_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_SCI7_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(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+    IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+    IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+\r
+    /* Enable SCI1 operations */\r
+    R_SCI7_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
+    sci7_txdone = FALSE;\r
+\r
+    /* Don't send the string unless the previous string has been sent. */\r
+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )\r
+    {\r
+        /* Ensure the calling task's notification state is not already\r
+        pending. */\r
+        vTaskNotifyStateClear( 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_SCI7_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 75cfe547dc0dca5a999b28343b9d1a8ebcb5d6d0..3aa8f76f60e6a45fa1ce0bac39b1a5eb1991c862 100644 (file)
@@ -144,6 +144,7 @@ int main( void )
        }\r
        #endif\r
 \r
+       /* Should never get reached. */\r
        return 0;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -205,6 +206,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
@@ -216,7 +218,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 36e3679ffb7f301b616f19d466dda2babab74db3..da7884b7fa63415f396641bd767e7b76a6b9bc34 100644 (file)
@@ -41,6 +41,7 @@
                                                                <option id="com.renesas.cdt.renesas.Compiler.option.deviceShortName.2099068857" name="DeviceShortName" superClass="com.renesas.cdt.renesas.Compiler.option.deviceShortName" value="R5F571MLCxFC" valueType="string"/>\r
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.renesas.Compiler.option.incFileDirectories.1186627023" 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/FreeRTOS_Source/include}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/Renesas/RX600v2}&quot;"/>\r
index 6861ae509dbe7f66e80526ffc13fc3b55e02655c..eaaa266433871a15f5b3cbe7f6d750a642a62bfa 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
index e46ec1f5c13d6842069335a2da678aa8b2baebdb..196a30f469053f96513a1aa33664e8fbc9288af5 100644 (file)
@@ -8,7 +8,7 @@
 <stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>\r
 <intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>\r
 <stringAttribute key="com.renesas.cdt.core.runCommands" value=""/>\r
-<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1  -t R5F571ML  -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 27.0 -uAllowClockSourceInternal= 1 -uUseFine= 0 -uJTagClockFreq= 16.5 -w 0 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 0 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -b -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0 -uPTimerClock= 120000000 -uhookWorkRamAddr= 0x1000 -uhookWorkRamSize= 0x230"/>\r
+<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1  -t R5F571ML  -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 27.0 -uAllowClockSourceInternal= 1 -uUseFine= 0 -uJTagClockFreq= 16.5 -w 1 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 0 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -b -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0 -uPTimerClock= 120000000 -uhookWorkRamAddr= 0x1000 -uhookWorkRamSize= 0x230"/>\r
 <booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>\r
 <stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F571ML"/>\r
 <booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/>\r
@@ -25,7 +25,7 @@
 <booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>\r
 <intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>\r
 <stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" value="0"/>\r
-<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="false"/>\r
+<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="true"/>\r
 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable.hot.plug" value="false"/>\r
 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/>\r
 <booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" value="false"/>\r
@@ -84,7 +84,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\RX700_RX71M_Renesas_e2studio\HardwareDebug\RTOSDemo.x"/>\r
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_RSK_Renesas_e2studio\HardwareDebug\RTOSDemo.x"/>\r
 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value="0"/>\r
 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>\r
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>\r
@@ -95,7 +95,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\RX700_RX71M_Renesas_e2studio\HardwareDebug\RTOSDemo.x"/>\r
+<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_RSK_Renesas_e2studio\HardwareDebug\RTOSDemo.x"/>\r
 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value="0"/>\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 dab3ec04d8d986a55f70ceeeb66c7bbd0e2b9e18..afe12f00c85abd7afd385d95a54f9c57d87e1f02 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 e7bad4fc4b5625bbaf93f4157fb79831f0f15d69..d885f18fb23b6945ff768a26ff522c9695181056 100644 (file)
 #define configUSE_PREEMPTION                   1\r
 #define configUSE_IDLE_HOOK                            1\r
 #define configUSE_TICK_HOOK                            1\r
-#define configCPU_CLOCK_HZ                             ( 120000000UL ) /*_RB_ guess cg shows 240 and 120*/\r
-#define configPERIPHERAL_CLOCK_HZ              ( 60000000UL ) /*_RB_ guess*/\r
+#define configCPU_CLOCK_HZ                             ( 120000000UL )\r
+#define configPERIPHERAL_CLOCK_HZ              ( 60000000UL )\r
 #define configTICK_RATE_HZ                             ( ( TickType_t ) 1000 )\r
-#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 140 )\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 40 * 1024 ) )\r
+#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 120 )\r
+#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 50 * 1024 ) )\r
 #define configMAX_TASK_NAME_LEN                        ( 12 )\r
 #define configUSE_TRACE_FACILITY               1\r
 #define configUSE_16_BIT_TICKS                 0\r
 #define configMAX_PRIORITIES                   ( 7 )\r
 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
 \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              ( configMAX_PRIORITIES - 1 )\r
@@ -148,6 +154,12 @@ to exclude the API function. */
 void vAssertCalled( void );\r
 #define configASSERT( x ) if( ( x ) == 0 ) { brk(); taskDISABLE_INTERRUPTS(); 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
 /* Override some of the priorities set in the common demo tasks.  This is\r
 required to ensure flase positive timing errors are not reported. */\r
 #define bktPRIMARY_PRIORITY            ( configMAX_PRIORITIES - 3 )\r
@@ -155,28 +167,4 @@ required to ensure flase positive timing errors are not reported. */
 #define intqHIGHER_PRIORITY            ( configMAX_PRIORITIES - 3 )\r
 \r
 \r
-/*-----------------------------------------------------------\r
- * Ethernet configuration.\r
- *-----------------------------------------------------------*/\r
-\r
-/* MAC address configuration. */\r
-#define configMAC_ADDR0        0x00\r
-#define configMAC_ADDR1        0x12\r
-#define configMAC_ADDR2        0x13\r
-#define configMAC_ADDR3        0x10\r
-#define configMAC_ADDR4        0x15\r
-#define configMAC_ADDR5        0x11\r
-\r
-/* IP address configuration. */\r
-#define configIP_ADDR0         192\r
-#define configIP_ADDR1         168\r
-#define configIP_ADDR2         0\r
-#define configIP_ADDR3         200\r
-\r
-/* Netmask configuration. */\r
-#define configNET_MASK0                255\r
-#define configNET_MASK1                255\r
-#define configNET_MASK2                255\r
-#define configNET_MASK3                0\r
-\r
 #endif /* FREERTOS_CONFIG_H */\r
index cb9e576915aded04618bb0c985bb47b2a4a7b685..7de0f9d1756d468b264e092bc8cede07b4b4a3eb 100644 (file)
@@ -68,9 +68,9 @@
 */\r
 \r
 /*\r
- * 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
+ * This file contains the non-portable and therefore RX specific parts of the\r
+ * IntQueue standard demo task - namely the configuration of the timers that\r
+ * generate the interrupts and the interrupt entry points.\r
  */\r
 \r
 /* Scheduler includes. */\r
@@ -92,6 +92,7 @@ void vInitialiseTimerForIntQueueTest( void )
        /* Ensure interrupts do not start until full configuration is complete. */\r
        portENTER_CRITICAL();\r
        {\r
+               /* Give write access. */\r
                SYSTEM.PRCR.WORD = 0xa502;\r
 \r
                /* Cascade two 8bit timer channels to generate the interrupts. \r
@@ -130,11 +131,9 @@ void vInitialiseTimerForIntQueueTest( void )
                TMR0.TCR.BIT.CMIEA = 1;\r
                TMR2.TCR.BIT.CMIEA = 1;\r
 \r
-               /* Map TMR0 CMIA0 interrupt to vector slot B number 128 and set\r
-               priority above the kernel's priority, but below the max syscall\r
-               priority. */\r
-           ICU.SLIBXR128.BYTE = 3; /* Three is TMR0 compare match A. */\r
-           IPR( PERIB, INTB128 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+               /* Set priority and enable interrupt. */\r
+               ICU.SLIBXR128.BYTE = 3; /* Three is TMR0 compare match A. */\r
+               IPR( PERIB, INTB128 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
                IEN( PERIB, INTB128 ) = 1;\r
 \r
                /* Ensure that the flag is set to 0, otherwise the interrupt will not be\r
@@ -142,8 +141,8 @@ void vInitialiseTimerForIntQueueTest( void )
                IR( PERIB, INTB128 ) = 0;\r
 \r
                /* Do the same for TMR2, but to vector 129. */\r
-           ICU.SLIBXR129.BYTE = 9; /* Nine is TMR2 compare match A. */\r
-           IPR( PERIB, INTB129 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 2;\r
+               ICU.SLIBXR129.BYTE = 9; /* Nine is TMR2 compare match A. */\r
+               IPR( PERIB, INTB129 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 2;\r
                IEN( PERIB, INTB129 ) = 1;\r
                IR( PERIB, INTB129 ) = 0;\r
        }\r
index fcf9f8c1fe4f8def65a56ccd4e5d474e7242dc6e..a26068ccbf83e73f0963d5b268ed530ce8ce7ddc 100644 (file)
@@ -71,8 +71,8 @@
 #define INT_QUEUE_TIMER_H\r
 \r
 void vInitialiseTimerForIntQueueTest( void );\r
-portBASE_TYPE xTimer0Handler( void );\r
-portBASE_TYPE xTimer1Handler( void );\r
+BaseType_t xTimer0Handler( void );\r
+BaseType_t xTimer1Handler( void );\r
 \r
 #endif\r
 \r
index 50d2cc81c904ec3c1ed61e914751efcbdc407342..5ba7f681b59b892c3a24e68c5a4a08c36a7c95ed 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 <rskrx71mdef.h>\r
 #include <stdio.h>\r
 \r
 /* Kernel includes. */\r
 #include "IntSemTest.h"\r
 \r
 /* Renesas includes. */\r
+#include <rskrx71mdef.h>\r
 #include "r_cg_macrodriver.h"\r
 #include "r_cg_userdefine.h"\r
 \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
-\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 +213,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
@@ -220,9 +232,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
@@ -250,7 +259,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
@@ -404,7 +420,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
@@ -412,7 +427,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
index 6f4c8bca65f4a70ee31e84fc49e8456bddb077f2..e163cc5420821a99fd13ffeb44dfd6d770d36269 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
@@ -38,6 +48,11 @@ Includes
 #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 "rskrx71mdef.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
@@ -50,7 +65,6 @@ extern uint8_t * gp_sci7_rx_address;                /* SCI7 receive buffer addre
 extern uint16_t  g_sci7_rx_count;                   /* SCI7 receive data number */\r
 extern uint16_t  g_sci7_rx_length;                  /* SCI7 receive data length */\r
 /* Start user code for global. Do not edit comment generated here */\r
-/* Flag used locally to detect transmission complete */\r
 \r
 /* Global used to receive a character from the PC terminal */\r
 uint8_t g_rx_char;\r
@@ -58,8 +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
-static volatile uint8_t sci6_txdone;\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 sci7_txdone;\r
 \r
 /* End user code. Do not edit comment generated here */\r
@@ -98,7 +125,7 @@ static void r_sci7_transmit_interrupt(void)
 ***********************************************************************************************************************/\r
 void r_sci7_transmitend_interrupt(void)\r
 {\r
-    /* Set TXD7 pin */\r
+    MPC.P90PFS.BYTE = 0x00U;\r
     PORT9.PMR.BYTE &= 0xFEU;\r
     SCI7.SCR.BIT.TIE = 0U;\r
     SCI7.SCR.BIT.TE = 0U;\r
@@ -158,8 +185,20 @@ void r_sci7_receiveerror_interrupt(void)
 static void r_sci7_callback_transmitend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+    /* The sci7_txdone flag is used by the auto generated API only. */\r
     sci7_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
@@ -171,15 +210,30 @@ static void r_sci7_callback_transmitend(void)
 static void r_sci7_callback_receiveend(void)\r
 {\r
     /* Start user code. Do not edit comment generated here */\r
-    /* Check the contents of g_rx_char */\r
-    if (('c' == g_rx_char) || ('C' == g_rx_char))\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( sci7_txdone == TRUE )\r
     {\r
-//_RB_        g_adc_trigger = TRUE;\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 SCI7 receive buffer and callback function again */\r
+    /* Set up SCI7 receive buffer again */\r
     R_SCI7_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
@@ -228,5 +282,91 @@ MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
 * End of function R_SCI7_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_SCI7_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(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+    IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+    IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;\r
+\r
+    /* Enable SCI1 operations */\r
+    R_SCI7_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
+    sci7_txdone = FALSE;\r
+\r
+    /* Don't send the string unless the previous string has been sent. */\r
+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )\r
+    {\r
+        /* Ensure the calling task's notification state is not already\r
+        pending. */\r
+        vTaskNotifyStateClear( 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_SCI7_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 9cb47b35f22bdd081c87703e4916487855f6eb4a..c2f2855632c59772e4087636a71034ed1f823465 100644 (file)
@@ -96,7 +96,7 @@
 \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
@@ -141,6 +141,7 @@ int main( void )
        }\r
        #endif\r
 \r
+       /* Should never get reached. */\r
        return 0;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -202,6 +203,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
@@ -213,7 +215,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 d8f969d9fc08f1ec7a23c8c3b2cb16d0a49f2eb6..37e38bcf7fb50be0a010ab642a651fdc677b5e2a 100644 (file)
@@ -819,6 +819,14 @@ V8 if desired. */
        #define xList List_t\r
 #endif /* configENABLE_BACKWARD_COMPATIBILITY */\r
 \r
+/* Set configUSE_TASK_FPU_SUPPORT to 0 to omit floating point support even\r
+if floating point hardware is otherwise supported by the FreeRTOS port in use.\r
+This constant is not supported by all FreeRTOS ports that include floating \r
+point support. */\r
+#ifndef configUSE_TASK_FPU_SUPPORT\r
+    #define configUSE_TASK_FPU_SUPPORT 1\r
+#endif\r
+    \r
 #ifdef __cplusplus\r
 }\r
 #endif\r
index 915fe209bd4e16ad682981115d0aa4fd119798e1..32b28e683fc94771ea27d0f7f7075695f917956a 100644 (file)
 \r
 /*-----------------------------------------------------------*/\r
 \r
-#if( configCHECK_FOR_STACK_OVERFLOW == 0 )\r
-\r
-       /* FreeRTOSConfig.h is not set to check for stack overflows. */\r
-       #define taskFIRST_CHECK_FOR_STACK_OVERFLOW()\r
-       #define taskSECOND_CHECK_FOR_STACK_OVERFLOW()\r
-\r
-#endif /* configCHECK_FOR_STACK_OVERFLOW == 0 */\r
-/*-----------------------------------------------------------*/\r
-\r
-#if( configCHECK_FOR_STACK_OVERFLOW == 1 )\r
-\r
-       /* FreeRTOSConfig.h is only set to use the first method of\r
-       overflow checking. */\r
-       #define taskSECOND_CHECK_FOR_STACK_OVERFLOW()\r
-\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if( ( configCHECK_FOR_STACK_OVERFLOW > 0 ) && ( portSTACK_GROWTH < 0 ) )\r
+#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) )\r
 \r
        /* Only the current stack state is to be checked. */\r
-       #define taskFIRST_CHECK_FOR_STACK_OVERFLOW()                                                                                                            \\r
+       #define taskCHECK_FOR_STACK_OVERFLOW()                                                                                                                          \\r
        {                                                                                                                                                                                                       \\r
                /* Is the currently saved stack pointer within the stack limit? */                                                              \\r
                if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack )                                                                               \\r
                }                                                                                                                                                                                               \\r
        }\r
 \r
-#endif /* configCHECK_FOR_STACK_OVERFLOW > 0 */\r
+#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */\r
 /*-----------------------------------------------------------*/\r
 \r
-#if( ( configCHECK_FOR_STACK_OVERFLOW > 0 ) && ( portSTACK_GROWTH > 0 ) )\r
+#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) )\r
 \r
        /* Only the current stack state is to be checked. */\r
-       #define taskFIRST_CHECK_FOR_STACK_OVERFLOW()                                                                                                            \\r
+       #define taskCHECK_FOR_STACK_OVERFLOW()                                                                                                                          \\r
        {                                                                                                                                                                                                       \\r
                                                                                                                                                                                                                \\r
                /* Is the currently saved stack pointer within the stack limit? */                                                              \\r
 \r
 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) )\r
 \r
-       #define taskSECOND_CHECK_FOR_STACK_OVERFLOW()                                                                                                                                                                           \\r
-       {                                                                                                                                                                                                                                                                       \\r
-       static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,         \\r
-                                                                                                       tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,         \\r
-                                                                                                       tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,         \\r
-                                                                                                       tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,         \\r
-                                                                                                       tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE };       \\r
-                                                                                                                                                                                                                                                                               \\r
-                                                                                                                                                                                                                                                                               \\r
-               /* Has the extremity of the task stack ever been written over? */                                                                                                                               \\r
-               if( memcmp( ( const void * ) pxCurrentTCB->pxStack, ( const void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 )                      \\r
-               {                                                                                                                                                                                                                                                               \\r
-                       vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );                                                                       \\r
-               }                                                                                                                                                                                                                                                               \\r
+       #define taskCHECK_FOR_STACK_OVERFLOW()                                                                                                                          \\r
+       {                                                                                                                                                                                                       \\r
+               const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack;                                                 \\r
+               const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5;                                                                                  \\r
+                                                                                                                                                                                                               \\r
+               if( ( pulStack[ 0 ] != ulCheckValue ) ||                                                                                                \\r
+                       ( pulStack[ 1 ] != ulCheckValue ) ||                                                                                            \\r
+                       ( pulStack[ 2 ] != ulCheckValue ) ||                                                                                            \\r
+                       ( pulStack[ 3 ] != ulCheckValue ) )                                                                                             \\r
+               {                                                                                                                                                                                               \\r
+                       vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );       \\r
+               }                                                                                                                                                                                               \\r
        }\r
 \r
 #endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */\r
 \r
 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) )\r
 \r
-       #define taskSECOND_CHECK_FOR_STACK_OVERFLOW()                                                                                                                                                                           \\r
+       #define taskCHECK_FOR_STACK_OVERFLOW()                                                                                                                                                                                          \\r
        {                                                                                                                                                                                                                                                                       \\r
        int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack;                                                                                                                                         \\r
        static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,         \\r
 #endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */\r
 /*-----------------------------------------------------------*/\r
 \r
+/* Remove stack overflow macro if not being used. */\r
+#ifndef taskCHECK_FOR_STACK_OVERFLOW\r
+       #define taskCHECK_FOR_STACK_OVERFLOW()\r
+#endif\r
+\r
+\r
+\r
 #endif /* STACK_MACROS_H */\r
 \r
index deda89492cf0a31a146e0f049758fc3f7ad11f28..5ecd9afb7fb4e4723f594df0fd1a57124fb1ca53 100644 (file)
@@ -1812,6 +1812,18 @@ void vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPri
  */\r
 uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\r
 \r
+/**\r
+ * task. h\r
+ * <PRE>void vTaskNotifyClear( TaskHandle_t xTask );</pre>\r
+ *\r
+ * Clear the notification state of the task referenced by the handle xTask.  The\r
+ * task's notification value is not altered.  Set xTask to NULL to clear the\r
+ * notification state of the calling task.\r
+ * \defgroup vTaskNotifyClear vTaskNotifyClear\r
+ * \ingroup TaskNotifications\r
+ */\r
+void vTaskNotifyStateClear( TaskHandle_t xTask );\r
+\r
 /*-----------------------------------------------------------\r
  * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES\r
  *----------------------------------------------------------*/\r
index 1ba4c92c551f60eaffb39fe2959616bae217e9a5..4d5306d8d8365cfa613fb86125cfdd37e3beaff3 100644 (file)
@@ -79,7 +79,6 @@
 #include "string.h"\r
 \r
 /* Hardware specifics. */\r
-#warning RX600v1 port included chip specific header file here.\r
 #include <machine.h>\r
 \r
 /*-----------------------------------------------------------*/\r
index a5b0fd4a00025b92c05e27886f673d20ac8a58d8..612705445686b2f20f46656450d2d4b876bf420c 100644 (file)
 \r
 #include "FreeRTOSConfig.h"\r
 \r
-#define portCONTEXT_SIZE 160\r
-#define portEPC_STACK_LOCATION 152\r
-#define portSTATUS_STACK_LOCATION 156\r
+#define portCONTEXT_SIZE                160\r
+#define portEPC_STACK_LOCATION          152\r
+#define portSTATUS_STACK_LOCATION       156\r
+#define portFPCSR_STACK_LOCATION        0\r
+#define portTASK_HAS_FPU_STACK_LOCATION     0\r
+#define portFPU_CONTEXT_SIZE            264\r
+\r
+/******************************************************************/\r
+.macro  portSAVE_FPU_REGS    offset, base\r
+    /* Macro to assist with saving just the FPU registers to the\r
+     * specified address and base offset,\r
+     * offset is a constant, base is the base pointer register  */\r
+\r
+       sdc1            $f31, \offset + 248(\base)\r
+       sdc1            $f30, \offset + 240(\base)\r
+       sdc1            $f29, \offset + 232(\base)\r
+       sdc1            $f28, \offset + 224(\base)\r
+       sdc1            $f27, \offset + 216(\base)\r
+       sdc1            $f26, \offset + 208(\base)\r
+       sdc1            $f25, \offset + 200(\base)\r
+       sdc1            $f24, \offset + 192(\base)\r
+       sdc1            $f23, \offset + 184(\base)\r
+       sdc1            $f22, \offset + 176(\base)\r
+       sdc1            $f21, \offset + 168(\base)\r
+       sdc1            $f20, \offset + 160(\base)\r
+       sdc1            $f19, \offset + 152(\base)\r
+       sdc1            $f18, \offset + 144(\base)\r
+       sdc1            $f17, \offset + 136(\base)\r
+       sdc1            $f16, \offset + 128(\base)\r
+       sdc1            $f15, \offset + 120(\base)\r
+       sdc1            $f14, \offset + 112(\base)\r
+       sdc1            $f13, \offset + 104(\base)\r
+       sdc1            $f12, \offset + 96(\base)\r
+       sdc1            $f11, \offset + 88(\base)\r
+       sdc1            $f10, \offset + 80(\base)\r
+       sdc1            $f9, \offset + 72(\base)\r
+       sdc1            $f8, \offset + 64(\base)\r
+       sdc1            $f7, \offset + 56(\base)\r
+       sdc1            $f6, \offset + 48(\base)\r
+       sdc1            $f5, \offset + 40(\base)\r
+       sdc1            $f4, \offset + 32(\base)\r
+       sdc1            $f3, \offset + 24(\base)\r
+       sdc1            $f2, \offset + 16(\base)\r
+       sdc1            $f1, \offset + 8(\base)\r
+       sdc1            $f0, \offset + 0(\base)\r
+\r
+    .endm\r
+\r
+/******************************************************************/\r
+.macro  portLOAD_FPU_REGS    offset, base\r
+    /* Macro to assist with loading just the FPU registers from the\r
+     * specified address and base offset, offset is a constant,\r
+     * base is the base pointer register  */\r
+\r
+       ldc1            $f0, \offset + 0(\base)\r
+       ldc1            $f1, \offset + 8(\base)\r
+       ldc1            $f2, \offset + 16(\base)\r
+       ldc1            $f3, \offset + 24(\base)\r
+       ldc1            $f4, \offset + 32(\base)\r
+       ldc1            $f5, \offset + 40(\base)\r
+       ldc1            $f6, \offset + 48(\base)\r
+       ldc1            $f7, \offset + 56(\base)\r
+       ldc1            $f8, \offset + 64(\base)\r
+       ldc1            $f9, \offset + 72(\base)\r
+       ldc1            $f10, \offset + 80(\base)\r
+       ldc1            $f11, \offset + 88(\base)\r
+       ldc1            $f12, \offset + 96(\base)\r
+       ldc1            $f13, \offset + 104(\base)\r
+       ldc1            $f14, \offset + 112(\base)\r
+       ldc1            $f15, \offset + 120(\base)\r
+       ldc1            $f16, \offset + 128(\base)\r
+       ldc1            $f17, \offset + 136(\base)\r
+       ldc1            $f18, \offset + 144(\base)\r
+       ldc1            $f19, \offset + 152(\base)\r
+       ldc1            $f20, \offset + 160(\base)\r
+       ldc1            $f21, \offset + 168(\base)\r
+       ldc1            $f22, \offset + 176(\base)\r
+       ldc1            $f23, \offset + 184(\base)\r
+       ldc1            $f24, \offset + 192(\base)\r
+       ldc1            $f25, \offset + 200(\base)\r
+       ldc1            $f26, \offset + 208(\base)\r
+       ldc1            $f27, \offset + 216(\base)\r
+       ldc1            $f28, \offset + 224(\base)\r
+       ldc1            $f29, \offset + 232(\base)\r
+       ldc1            $f30, \offset + 240(\base)\r
+       ldc1            $f31, \offset + 248(\base)\r
+\r
+    .endm\r
 \r
 /******************************************************************/\r
 .macro portSAVE_CONTEXT\r
        captured. */\r
        mfc0            k0, _CP0_CAUSE\r
        addiu           sp, sp, -portCONTEXT_SIZE\r
+\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+               /* Test if we are already using the system stack. Only tasks may use the\r
+               FPU so if we are already in a nested interrupt then the FPU context does\r
+               not require saving. */\r
+               la                      k1, uxInterruptNesting\r
+               lw                      k1, 0(k1)\r
+               bne                     k1, zero, 2f\r
+               nop\r
+\r
+               /* Test if the current task needs the FPU context saving. */\r
+               la                      k1, ulTaskHasFPUContext\r
+               lw                      k1, 0(k1)\r
+               beq                     k1, zero, 1f\r
+               nop\r
+\r
+               /* Adjust the stack to account for the additional FPU context.*/\r
+               addiu           sp, sp, -portFPU_CONTEXT_SIZE\r
+\r
+       1:\r
+               /* Save the ulTaskHasFPUContext flag. */\r
+               sw                      k1, portTASK_HAS_FPU_STACK_LOCATION(sp)\r
+\r
+       2:\r
+       #endif\r
+\r
        mfc0            k1, _CP0_STATUS\r
 \r
-       /* Also save s6 and s5 so they can be used.  Any nesting interrupts should\r
-       maintain the values of these registers across the ISR. */\r
+       /* Also save s7, s6 and s5 so they can be used.  Any nesting interrupts\r
+       should maintain the values of these registers across the ISR. */\r
+       sw                      s7, 48(sp)\r
        sw                      s6, 44(sp)\r
        sw                      s5, 40(sp)\r
        sw                      k1, portSTATUS_STACK_LOCATION(sp)\r
        mflo            s6, $ac0\r
        sw                      s6, 8(s5)\r
 \r
+       /* Save the FPU context if the nesting count was zero. */\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+               la                      s6, uxInterruptNesting\r
+               lw                      s6, 0(s6)\r
+               addiu           s6, s6, -1\r
+               bne                     s6, zero, 1f\r
+               nop\r
+\r
+               /* Test if the current task needs the FPU context saving. */\r
+               lw                      s6, portTASK_HAS_FPU_STACK_LOCATION(s5)\r
+               beq                     s6, zero, 1f\r
+               nop\r
+\r
+               /* Save the FPU registers. */\r
+               portSAVE_FPU_REGS ( portCONTEXT_SIZE + 8 ), s5\r
+\r
+               /* Save the FPU status register */\r
+               cfc1            s6, $f31\r
+               sw                      s6, (portCONTEXT_SIZE + portFPCSR_STACK_LOCATION)(s5)\r
+\r
+               1:\r
+       #endif\r
+\r
        /* Update the task stack pointer value if nesting is zero. */\r
        la                      s6, uxInterruptNesting\r
        lw                      s6, (s6)\r
        la                      s6, uxSavedTaskStackPointer\r
        lw                      s5, (s6)\r
 \r
+    #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+               /* Restore the FPU context if required. */\r
+               lw                      s6, portTASK_HAS_FPU_STACK_LOCATION(s5)\r
+               beq                     s6, zero, 1f\r
+               nop\r
+\r
+               /* Restore the FPU registers. */\r
+               portLOAD_FPU_REGS   ( portCONTEXT_SIZE + 8 ), s5\r
+\r
+               /* Restore the FPU status register. */\r
+               lw                      s6, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)\r
+               ctc1            s6, $f31\r
+       #endif\r
+\r
+1:\r
+\r
        /* Restore the context. */\r
-1:     lw                      s6, 128(s5)\r
+       lw                      s6, 128(s5)\r
        mthi            s6, $ac1\r
        lw                      s6, 124(s5)\r
        mtlo            s6, $ac1\r
        lw                      s6, 144(s5)\r
        mthi            s6, $ac3\r
        lw                      s6, 140(s5)\r
-       mtlo                    s6, $ac3\r
+       mtlo            s6, $ac3\r
 \r
        /* Restore DSPControl. */\r
        lw                      s6, 148(s5)\r
 \r
        /* s6 is loaded as it was used as a scratch register and therefore saved\r
        as part of the interrupt context. */\r
+       lw                      s7, 48(s5)\r
        lw                      s6, 44(s5)\r
        lw                      v0, 52(s5)\r
        lw                      v1, 56(s5)\r
        addiu           k1, k1, -1\r
        sw                      k1, 0(k0)\r
 \r
-       lw                      k0, portSTATUS_STACK_LOCATION(s5)\r
-       lw                      k1, portEPC_STACK_LOCATION(s5)\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+               /* If the nesting count is now zero then the FPU context may be restored. */\r
+               bne                     k1, zero, 1f\r
+               nop\r
+\r
+               /* Restore the value of ulTaskHasFPUContext */\r
+               la                      k0, ulTaskHasFPUContext\r
+               lw                      k1, 0(s5)\r
+               sw                      k1, 0(k0)\r
+\r
+               /* If the task does not have an FPU context then adjust the stack normally. */\r
+               beq                     k1, zero, 1f\r
+               nop\r
+\r
+               /* Restore the STATUS and EPC registers */\r
+               lw                      k0, portSTATUS_STACK_LOCATION(s5)\r
+               lw                      k1, portEPC_STACK_LOCATION(s5)\r
+\r
+               /* Leave the stack in its original state.  First load sp from s5, then\r
+               restore s5 from the stack. */\r
+               add                     sp, zero, s5\r
+               lw                      s5, 40(sp)\r
+\r
+               /* Adjust the stack pointer to remove the FPU context */\r
+               addiu           sp, sp, portFPU_CONTEXT_SIZE\r
+               beq                     zero, zero, 2f\r
+               nop\r
+\r
+               1:  /* Restore the STATUS and EPC registers */\r
+               lw                      k0, portSTATUS_STACK_LOCATION(s5)\r
+               lw                      k1, portEPC_STACK_LOCATION(s5)\r
+\r
+               /* Leave the stack in its original state.  First load sp from s5, then\r
+               restore s5 from the stack. */\r
+               add                     sp, zero, s5\r
+               lw                      s5, 40(sp)\r
+\r
+               2:  /* Adjust the stack pointer */\r
+               addiu           sp, sp, portCONTEXT_SIZE\r
+\r
+       #else\r
+\r
+               /* Restore the frame when there is no hardware FP support. */\r
+               lw                      k0, portSTATUS_STACK_LOCATION(s5)\r
+               lw                      k1, portEPC_STACK_LOCATION(s5)\r
+\r
+               /* Leave the stack in its original state.  First load sp from s5, then\r
+               restore s5 from the stack. */\r
+               add                     sp, zero, s5\r
+               lw                      s5, 40(sp)\r
+\r
+               addiu           sp, sp, portCONTEXT_SIZE\r
 \r
-       /* Leave the stack in its original state.  First load sp from s5, then\r
-       restore s5 from the stack. */\r
-       add                     sp, zero, s5\r
-       lw                      s5, 40(sp)\r
-       addiu           sp, sp, portCONTEXT_SIZE\r
+       #endif // ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
 \r
        mtc0            k0, _CP0_STATUS\r
        mtc0            k1, _CP0_EPC\r
index db168673100f12dc8bfeab99d2cf081e94ee378a..26d7e857a5b0658a1ab94130128dbfe2e41d1bd8 100644 (file)
@@ -93,6 +93,8 @@
 #define portIE_BIT                                     ( 0x00000001 )\r
 #define portEXL_BIT                                    ( 0x00000002 )\r
 #define portMX_BIT                                     ( 0x01000000 ) /* Allow access to DSP instructions. */\r
+#define portCU1_BIT                                    ( 0x20000000 ) /* enable CP1 for parts with hardware. */\r
+#define portFR_BIT                                     ( 0x04000000 ) /* Enable 64 bit floating point registers. */\r
 \r
 /* Bits within the CAUSE register. */\r
 #define portCORE_SW_0                          ( 0x00000100 )\r
 \r
 /* The EXL bit is set to ensure interrupts do not occur while the context of\r
 the first task is being restored. */\r
-#define portINITIAL_SR                         ( portIE_BIT | portEXL_BIT | portMX_BIT )\r
+#if ( __mips_hard_float == 1 )\r
+    #define portINITIAL_SR                     ( portIE_BIT | portEXL_BIT | portMX_BIT | portFR_BIT | portCU1_BIT )\r
+#else\r
+    #define portINITIAL_SR                     ( portIE_BIT | portEXL_BIT | portMX_BIT )\r
+#endif\r
+\r
+/* The initial value to store into the FPU status and control register. This is\r
+ only used on parts that support a hardware FPU. */\r
+#define portINITIAL_FPSCR                      (0x1000000) /* High perf on denormal ops */\r
+\r
 \r
 /*\r
 By default port.c generates its tick interrupt from TIMER1.  The user can\r
@@ -184,6 +195,12 @@ StackType_t xISRStack[ configISR_STACK_SIZE ] = { 0 };
 the callers stack, as some functions seem to want to do this. */\r
 const StackType_t * const xISRStackTop = &( xISRStack[ configISR_STACK_SIZE - 7 ] );\r
 \r
+/* Saved as part of the task context. Set to pdFALSE if the task does not\r
+ require an FPU context. */\r
+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+       uint32_t ulTaskHasFPUContext = 0;\r
+#endif\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /*\r
@@ -191,7 +208,8 @@ const StackType_t * const xISRStackTop = &( xISRStack[ configISR_STACK_SIZE - 7
  */\r
 StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )\r
 {\r
-       /* Ensure byte alignment is maintained when leaving this function. */\r
+       /* Ensure 8 byte alignment is maintained when leaving this function. */\r
+       pxTopOfStack--;\r
        pxTopOfStack--;\r
 \r
        *pxTopOfStack = (StackType_t) 0xDEADBEEF;\r
@@ -207,10 +225,10 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
        pxTopOfStack--;\r
 \r
        *pxTopOfStack = (StackType_t) pxCode;           /* CP0_EPC */\r
-       pxTopOfStack -= 7;                                                      /* Includes space for AC1 - AC3. */\r
-\r
-       *pxTopOfStack = (StackType_t) 0x00000000;       /* DSPControl */\r
        pxTopOfStack--;\r
+    \r
+       *pxTopOfStack = (StackType_t) 0x00000000;       /* DSPControl */    \r
+       pxTopOfStack -= 7;                                              /* Includes space for AC1 - AC3. */\r
 \r
        *pxTopOfStack = (StackType_t) portTASK_RETURN_ADDRESS;  /* ra */\r
        pxTopOfStack -= 15;\r
@@ -218,6 +236,8 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
        *pxTopOfStack = (StackType_t) pvParameters; /* Parameters to pass in. */\r
        pxTopOfStack -= 15;\r
 \r
+       *pxTopOfStack = (StackType_t) pdFALSE; /*by default disable FPU context save on parts with FPU */\r
+    \r
        return pxTopOfStack;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -361,6 +381,27 @@ void vPortClearInterruptMaskFromISR( UBaseType_t uxSavedStatusRegister )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+\r
+       void vPortTaskUsesFPU(void)\r
+       {\r
+       extern void vPortInitialiseFPSCR( uint32_t uxFPSCRInit );\r
+\r
+               portENTER_CRITICAL();\r
+    \r
+               /* Initialise the floating point status register. */\r
+               vPortInitialiseFPSCR(portINITIAL_FPSCR);  \r
+    \r
+               /* A task is registering the fact that it needs a FPU context. Set the\r
+               FPU flag (saved as part of the task context). */\r
+               ulTaskHasFPUContext = pdTRUE;\r
+    \r
+               portEXIT_CRITICAL();\r
+       }\r
+\r
+#endif /* __mips_hard_float == 1 */\r
+\r
+/*-----------------------------------------------------------*/\r
 \r
 \r
 \r
index 05da9974c509784c222b1b7f91c81c0770ca9f0c..c6bf4a3269aec0f51c82cca0888b7427211e43f5 100644 (file)
        .extern vTaskSwitchContext\r
        .extern vPortIncrementTick\r
        .extern xISRStackTop\r
+       .extern ulTaskHasFPUContext\r
 \r
        .global vPortStartFirstTask\r
        .global vPortYieldISR\r
        .global vPortTickInterruptHandler\r
+       .global vPortInitialiseFPSCR\r
 \r
 \r
 /******************************************************************/\r
@@ -189,228 +191,621 @@ vPortStartFirstTask:
        .ent  vPortYieldISR\r
 vPortYieldISR:\r
 \r
-       /* Make room for the context. First save the current status so it can be\r
-       manipulated, and the cause and EPC registers so thier original values are\r
-       captured. */\r
-       addiu           sp, sp, -portCONTEXT_SIZE\r
-       mfc0            k1, _CP0_STATUS\r
-\r
-       /* Also save s6 and s5 so they can be used.  Any nesting interrupts should\r
-       maintain the values of these registers across the ISR. */\r
-       sw                      s6, 44(sp)\r
-       sw                      s5, 40(sp)\r
-       sw                      k1, portSTATUS_STACK_LOCATION(sp)\r
-\r
-       /* Prepare to re-enabled interrupts above the kernel priority. */\r
-       ins             k1, zero, 10, 7         /* Clear IPL bits 0:6. */\r
-    ins                k1, zero, 18, 1         /* Clear IPL bit 7.  It would be an error here if this bit were set anyway. */\r
-       ori                     k1, k1, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 )\r
-    ins                        k1, zero, 1, 4          /* Clear EXL, ERL and UM. */\r
-\r
-       /* s5 is used as the frame pointer. */\r
-       add                     s5, zero, sp\r
-\r
-       /* Swap to the system stack.  This is not conditional on the nesting\r
-       count as this interrupt is always the lowest priority and therefore\r
-       the nesting is always 0. */\r
-       la                      sp, xISRStackTop\r
-       lw                      sp, (sp)\r
-\r
-       /* Set the nesting count. */\r
-       la                      k0, uxInterruptNesting\r
-       addiu           s6, zero, 1\r
-       sw                      s6, 0(k0)\r
-\r
-       /* s6 holds the EPC value, this is saved with the rest of the context\r
-       after interrupts are enabled. */\r
-       mfc0            s6, _CP0_EPC\r
-\r
-       /* Re-enable interrupts above configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
-       mtc0            k1, _CP0_STATUS\r
-\r
-       /* Save the context into the space just created.  s6 is saved again\r
-       here as it now contains the EPC value. */\r
-       sw                      ra, 120(s5)\r
-       sw                      s8, 116(s5)\r
-       sw                      t9, 112(s5)\r
-       sw                      t8, 108(s5)\r
-       sw                      t7, 104(s5)\r
-       sw                      t6, 100(s5)\r
-       sw                      t5, 96(s5)\r
-       sw                      t4, 92(s5)\r
-       sw                      t3, 88(s5)\r
-       sw                      t2, 84(s5)\r
-       sw                      t1, 80(s5)\r
-       sw                      t0, 76(s5)\r
-       sw                      a3, 72(s5)\r
-       sw                      a2, 68(s5)\r
-       sw                      a1, 64(s5)\r
-       sw                      a0, 60(s5)\r
-       sw                      v1, 56(s5)\r
-       sw                      v0, 52(s5)\r
-       sw                      s7, 48(s5)\r
-       sw                      s6, portEPC_STACK_LOCATION(s5)\r
-       /* s5 and s6 has already been saved. */\r
-       sw                      s4,     36(s5)\r
-       sw                      s3, 32(s5)\r
-       sw                      s2, 28(s5)\r
-       sw                      s1, 24(s5)\r
-       sw                      s0, 20(s5)\r
-       sw                      $1, 16(s5)\r
-\r
-       /* s7 is used as a scratch register as this should always be saved across\r
-       nesting interrupts. */\r
-\r
-       /* Save the AC0, AC1, AC2 and AC3. */\r
-       mfhi            s7, $ac1\r
-       sw                      s7, 128(s5)\r
-       mflo            s7, $ac1\r
-       sw                      s7, 124(s5)\r
-\r
-       mfhi            s7, $ac2\r
-       sw                      s7, 136(s5)\r
-       mflo            s7, $ac2\r
-       sw                      s7, 132(s5)\r
-\r
-       mfhi            s7, $ac3\r
-       sw                      s7, 144(s5)\r
-       mflo            s7, $ac3\r
-       sw                      s7, 140(s5)\r
-\r
-       rddsp           s7\r
-       sw                      s7, 148(s5)\r
-\r
-       mfhi            s7, $ac0\r
-       sw                      s7, 12(s5)\r
-       mflo            s7, $ac0\r
-       sw                      s7, 8(s5)\r
-\r
-       /* Save the stack pointer to the task. */\r
-       la                      s7, pxCurrentTCB\r
-       lw                      s7, (s7)\r
-       sw                      s5, (s7)\r
-\r
-       /* Set the interrupt mask to the max priority that can use the API.  The\r
-       yield handler will only be called at configKERNEL_INTERRUPT_PRIORITY which\r
-       is below configMAX_SYSCALL_INTERRUPT_PRIORITY - so this can only ever\r
-       raise the IPL value and never lower it. */\r
-       di\r
-       ehb\r
-       mfc0            s7, _CP0_STATUS\r
-       ins             s7, zero, 10, 7\r
-    ins                s7, zero, 18, 1\r
-       ori                     s6, s7, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 ) | 1\r
-\r
-       /* This mtc0 re-enables interrupts, but only above\r
-       configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
-       mtc0            s6, _CP0_STATUS\r
-       ehb\r
+       #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+               /* Code sequence for FPU support, the context save requires advance\r
+               knowledge of the stack frame size and if the current task actually uses the \r
+               FPU. */\r
+\r
+               /* Make room for the context. First save the current status so it can be\r
+               manipulated, and the cause and EPC registers so their original values are\r
+               captured. */\r
+               la              k0, ulTaskHasFPUContext\r
+               lw              k0, 0(k0)\r
+               beq             k0, zero, 1f\r
+               addiu   sp, sp, -portCONTEXT_SIZE       /* always reserve space for the context. */\r
+               addiu   sp, sp, -portFPU_CONTEXT_SIZE   /* reserve additional space for the FPU context. */\r
+       1:\r
+               mfc0    k1, _CP0_STATUS\r
+\r
+               /* Also save s6 and s5 so they can be used.  Any nesting interrupts should\r
+               maintain the values of these registers across the ISR. */\r
+               sw              s6, 44(sp)\r
+               sw              s5, 40(sp)\r
+               sw              k1, portSTATUS_STACK_LOCATION(sp)\r
+               sw              k0, portTASK_HAS_FPU_STACK_LOCATION(sp)\r
+\r
+               /* Prepare to re-enabled interrupts above the kernel priority. */\r
+               ins     k1, zero, 10, 7         /* Clear IPL bits 0:6. */\r
+               ins     k1, zero, 18, 1         /* Clear IPL bit 7.  It would be an error here if this bit were set anyway. */\r
+               ori             k1, k1, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 )\r
+               ins             k1, zero, 1, 4          /* Clear EXL, ERL and UM. */\r
+\r
+               /* s5 is used as the frame pointer. */\r
+               add             s5, zero, sp\r
+\r
+               /* Swap to the system stack.  This is not conditional on the nesting\r
+               count as this interrupt is always the lowest priority and therefore\r
+               the nesting is always 0. */\r
+               la              sp, xISRStackTop\r
+               lw              sp, (sp)\r
+\r
+               /* Set the nesting count. */\r
+               la              k0, uxInterruptNesting\r
+               addiu   s6, zero, 1\r
+               sw              s6, 0(k0)\r
+\r
+               /* s6 holds the EPC value, this is saved with the rest of the context\r
+               after interrupts are enabled. */\r
+               mfc0    s6, _CP0_EPC\r
+\r
+               /* Re-enable interrupts above configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
+               mtc0    k1, _CP0_STATUS\r
+\r
+               /* Save the context into the space just created.  s6 is saved again\r
+               here as it now contains the EPC value. */\r
+               sw              ra, 120(s5)\r
+               sw              s8, 116(s5)\r
+               sw              t9, 112(s5)\r
+               sw              t8, 108(s5)\r
+               sw              t7, 104(s5)\r
+               sw              t6, 100(s5)\r
+               sw              t5, 96(s5)\r
+               sw              t4, 92(s5)\r
+               sw              t3, 88(s5)\r
+               sw              t2, 84(s5)\r
+               sw              t1, 80(s5)\r
+               sw              t0, 76(s5)\r
+               sw              a3, 72(s5)\r
+               sw              a2, 68(s5)\r
+               sw              a1, 64(s5)\r
+               sw              a0, 60(s5)\r
+               sw              v1, 56(s5)\r
+               sw              v0, 52(s5)\r
+               sw              s7, 48(s5)\r
+               sw              s6, portEPC_STACK_LOCATION(s5)\r
+               /* s5 and s6 has already been saved. */\r
+               sw              s4, 36(s5)\r
+               sw              s3, 32(s5)\r
+               sw              s2, 28(s5)\r
+               sw              s1, 24(s5)\r
+               sw              s0, 20(s5)\r
+               sw              $1, 16(s5)\r
+\r
+               /* s7 is used as a scratch register as this should always be saved across\r
+               nesting interrupts. */\r
+\r
+               /* Save the AC0, AC1, AC2 and AC3. */\r
+               mfhi    s7, $ac1\r
+               sw              s7, 128(s5)\r
+               mflo    s7, $ac1\r
+               sw              s7, 124(s5)\r
+\r
+               mfhi    s7, $ac2\r
+               sw              s7, 136(s5)\r
+               mflo    s7, $ac2\r
+               sw              s7, 132(s5)\r
+\r
+               mfhi    s7, $ac3\r
+               sw              s7, 144(s5)\r
+               mflo    s7, $ac3\r
+               sw              s7, 140(s5)\r
+\r
+               rddsp   s7\r
+               sw              s7, 148(s5)\r
+\r
+               mfhi    s7, $ac0\r
+               sw              s7, 12(s5)\r
+               mflo    s7, $ac0\r
+               sw              s7, 8(s5)\r
+\r
+               /* Test if FPU context save is required. */\r
+               lw              s7, portTASK_HAS_FPU_STACK_LOCATION(s5)\r
+               beq             s7, zero, 1f\r
+               nop\r
+\r
+               /* Save the FPU registers above the normal context. */\r
+               portSAVE_FPU_REGS   (portCONTEXT_SIZE + 8), s5\r
+\r
+               /* Save the FPU status register */\r
+               cfc1    s7, $f31\r
+               sw              s7, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)\r
+\r
+       1:\r
+               /* Save the stack pointer to the task. */\r
+               la              s7, pxCurrentTCB\r
+               lw              s7, (s7)\r
+               sw              s5, (s7)\r
+\r
+               /* Set the interrupt mask to the max priority that can use the API.  The\r
+               yield handler will only be called at configKERNEL_INTERRUPT_PRIORITY which\r
+               is below configMAX_SYSCALL_INTERRUPT_PRIORITY - so this can only ever\r
+               raise the IPL value and never lower it. */\r
+               di\r
+               ehb\r
+               mfc0    s7, _CP0_STATUS\r
+               ins     s7, zero, 10, 7\r
+               ins     s7, zero, 18, 1\r
+               ori             s6, s7, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 ) | 1\r
+\r
+               /* This mtc0 re-enables interrupts, but only above\r
+               configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
+               mtc0    s6, _CP0_STATUS\r
+               ehb\r
+\r
+               /* Clear the software interrupt in the core. */\r
+               mfc0    s6, _CP0_CAUSE\r
+               ins             s6, zero, 8, 1\r
+               mtc0    s6, _CP0_CAUSE\r
+               ehb\r
+\r
+               /* Clear the interrupt in the interrupt controller. */\r
+               la              s6, IFS0CLR\r
+               addiu   s4, zero, 2\r
+               sw              s4, (s6)\r
+\r
+               jal             vTaskSwitchContext\r
+               nop\r
+\r
+               /* Clear the interrupt mask again.  The saved status value is still in s7. */\r
+               mtc0    s7, _CP0_STATUS\r
+               ehb\r
+\r
+               /* Restore the stack pointer from the TCB. */\r
+               la              s0, pxCurrentTCB\r
+               lw              s0, (s0)\r
+               lw              s5, (s0)\r
+\r
+               /* Test if the FPU context needs restoring. */\r
+               lw              s0, portTASK_HAS_FPU_STACK_LOCATION(s5)\r
+               beq             s0, zero, 1f\r
+               nop\r
+\r
+               /* Restore the FPU status register. */\r
+               lw              s0, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)\r
+               ctc1    s0, $f31\r
+\r
+               /* Restore the FPU registers. */\r
+               portLOAD_FPU_REGS   ( portCONTEXT_SIZE + 8 ), s5\r
+\r
+       1:\r
+               /* Restore the rest of the context. */\r
+               lw              s0, 128(s5)\r
+               mthi    s0, $ac1\r
+               lw              s0, 124(s5)\r
+               mtlo            s0, $ac1\r
+\r
+               lw              s0, 136(s5)\r
+               mthi    s0, $ac2\r
+               lw              s0, 132(s5)\r
+               mtlo    s0, $ac2\r
+\r
+               lw              s0, 144(s5)\r
+               mthi    s0, $ac3\r
+               lw              s0, 140(s5)\r
+               mtlo    s0, $ac3\r
+\r
+               lw              s0, 148(s5)\r
+               wrdsp   s0\r
+\r
+               lw              s0, 8(s5)\r
+               mtlo    s0, $ac0\r
+               lw              s0, 12(s5)\r
+               mthi    s0, $ac0\r
+\r
+               lw              $1, 16(s5)\r
+               lw              s0, 20(s5)\r
+               lw              s1, 24(s5)\r
+               lw              s2, 28(s5)\r
+               lw              s3, 32(s5)\r
+               lw              s4, 36(s5)\r
+\r
+               /* s5 is loaded later. */\r
+               lw              s6, 44(s5)\r
+               lw              s7, 48(s5)\r
+               lw              v0, 52(s5)\r
+               lw              v1, 56(s5)\r
+               lw              a0, 60(s5)\r
+               lw              a1, 64(s5)\r
+               lw              a2, 68(s5)\r
+               lw              a3, 72(s5)\r
+               lw              t0, 76(s5)\r
+               lw              t1, 80(s5)\r
+               lw              t2, 84(s5)\r
+               lw              t3, 88(s5)\r
+               lw              t4, 92(s5)\r
+               lw              t5, 96(s5)\r
+               lw              t6, 100(s5)\r
+               lw              t7, 104(s5)\r
+               lw              t8, 108(s5)\r
+               lw              t9, 112(s5)\r
+               lw              s8, 116(s5)\r
+               lw              ra, 120(s5)\r
+\r
+               /* Protect access to the k registers, and others. */\r
+               di\r
+               ehb\r
+\r
+               /* Set nesting back to zero.  As the lowest priority interrupt this\r
+               interrupt cannot have nested. */\r
+               la              k0, uxInterruptNesting\r
+               sw              zero, 0(k0)\r
+\r
+               /* Switch back to use the real stack pointer. */\r
+               add             sp, zero, s5\r
+\r
+               /* Restore the real s5 value. */\r
+               lw              s5, 40(sp)\r
+\r
+               /* Pop the FPU context value from the stack */\r
+               lw              k0, portTASK_HAS_FPU_STACK_LOCATION(sp)\r
+               la              k1, ulTaskHasFPUContext\r
+               sw              k0, 0(k1)\r
+               beq             k0, zero, 1f\r
+               nop\r
+\r
+               /* task has FPU context so adjust the stack frame after popping the\r
+               status and epc values. */\r
+               lw              k1, portSTATUS_STACK_LOCATION(sp)\r
+               lw              k0, portEPC_STACK_LOCATION(sp)\r
+               addiu   sp, sp, portFPU_CONTEXT_SIZE\r
+               beq             zero, zero, 2f\r
+               nop\r
+\r
+       1:\r
+               /* Pop the status and epc values. */\r
+               lw              k1, portSTATUS_STACK_LOCATION(sp)\r
+               lw              k0, portEPC_STACK_LOCATION(sp)\r
+\r
+       2:\r
+               /* Remove stack frame. */\r
+               addiu   sp, sp, portCONTEXT_SIZE\r
 \r
-       /* Clear the software interrupt in the core. */\r
-       mfc0            s6, _CP0_CAUSE\r
-       ins                     s6, zero, 8, 1\r
-       mtc0            s6, _CP0_CAUSE\r
+       #else\r
+               /* Code sequence for no FPU support, the context save requires advance\r
+               knowledge of the stack frame size when no FPU is being used */\r
+\r
+               /* Make room for the context. First save the current status so it can be\r
+               manipulated, and the cause and EPC registers so thier original values are\r
+               captured. */\r
+               addiu   sp, sp, -portCONTEXT_SIZE\r
+               mfc0    k1, _CP0_STATUS\r
+\r
+               /* Also save s6 and s5 so they can be used.  Any nesting interrupts should\r
+               maintain the values of these registers across the ISR. */\r
+               sw              s6, 44(sp)\r
+               sw              s5, 40(sp)\r
+               sw              k1, portSTATUS_STACK_LOCATION(sp)\r
+\r
+               /* Prepare to re-enabled interrupts above the kernel priority. */\r
+               ins     k1, zero, 10, 7         /* Clear IPL bits 0:6. */\r
+               ins     k1, zero, 18, 1         /* Clear IPL bit 7.  It would be an error here if this bit were set anyway. */\r
+               ori             k1, k1, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 )\r
+               ins             k1, zero, 1, 4          /* Clear EXL, ERL and UM. */\r
+\r
+               /* s5 is used as the frame pointer. */\r
+               add             s5, zero, sp\r
+\r
+               /* Swap to the system stack.  This is not conditional on the nesting\r
+               count as this interrupt is always the lowest priority and therefore\r
+               the nesting is always 0. */\r
+               la              sp, xISRStackTop\r
+               lw              sp, (sp)\r
+\r
+               /* Set the nesting count. */\r
+               la              k0, uxInterruptNesting\r
+               addiu   s6, zero, 1\r
+               sw              s6, 0(k0)\r
+\r
+               /* s6 holds the EPC value, this is saved with the rest of the context\r
+               after interrupts are enabled. */\r
+               mfc0    s6, _CP0_EPC\r
+\r
+               /* Re-enable interrupts above configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
+               mtc0    k1, _CP0_STATUS\r
+\r
+               /* Save the context into the space just created.  s6 is saved again\r
+               here as it now contains the EPC value. */\r
+               sw              ra, 120(s5)\r
+               sw              s8, 116(s5)\r
+               sw              t9, 112(s5)\r
+               sw              t8, 108(s5)\r
+               sw              t7, 104(s5)\r
+               sw              t6, 100(s5)\r
+               sw              t5, 96(s5)\r
+               sw              t4, 92(s5)\r
+               sw              t3, 88(s5)\r
+               sw              t2, 84(s5)\r
+               sw              t1, 80(s5)\r
+               sw              t0, 76(s5)\r
+               sw              a3, 72(s5)\r
+               sw              a2, 68(s5)\r
+               sw              a1, 64(s5)\r
+               sw              a0, 60(s5)\r
+               sw              v1, 56(s5)\r
+               sw              v0, 52(s5)\r
+               sw              s7, 48(s5)\r
+               sw              s6, portEPC_STACK_LOCATION(s5)\r
+               /* s5 and s6 has already been saved. */\r
+               sw              s4, 36(s5)\r
+               sw              s3, 32(s5)\r
+               sw              s2, 28(s5)\r
+               sw              s1, 24(s5)\r
+               sw              s0, 20(s5)\r
+               sw              $1, 16(s5)\r
+\r
+               /* s7 is used as a scratch register as this should always be saved across\r
+               nesting interrupts. */\r
+\r
+               /* Save the AC0, AC1, AC2 and AC3. */\r
+               mfhi    s7, $ac1\r
+               sw              s7, 128(s5)\r
+               mflo    s7, $ac1\r
+               sw              s7, 124(s5)\r
+\r
+               mfhi    s7, $ac2\r
+               sw              s7, 136(s5)\r
+               mflo    s7, $ac2\r
+               sw              s7, 132(s5)\r
+\r
+               mfhi    s7, $ac3\r
+               sw              s7, 144(s5)\r
+               mflo    s7, $ac3\r
+               sw              s7, 140(s5)\r
+\r
+               rddsp   s7\r
+               sw              s7, 148(s5)\r
+\r
+               mfhi    s7, $ac0\r
+               sw              s7, 12(s5)\r
+               mflo    s7, $ac0\r
+               sw              s7, 8(s5)\r
+\r
+               /* Save the stack pointer to the task. */\r
+               la              s7, pxCurrentTCB\r
+               lw              s7, (s7)\r
+               sw              s5, (s7)\r
+\r
+               /* Set the interrupt mask to the max priority that can use the API.  The\r
+               yield handler will only be called at configKERNEL_INTERRUPT_PRIORITY which\r
+               is below configMAX_SYSCALL_INTERRUPT_PRIORITY - so this can only ever\r
+               raise the IPL value and never lower it. */\r
+               di\r
+               ehb\r
+               mfc0    s7, _CP0_STATUS\r
+               ins     s7, zero, 10, 7\r
+               ins     s7, zero, 18, 1\r
+               ori             s6, s7, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 ) | 1\r
+\r
+               /* This mtc0 re-enables interrupts, but only above\r
+               configMAX_SYSCALL_INTERRUPT_PRIORITY. */\r
+               mtc0    s6, _CP0_STATUS\r
+               ehb\r
+\r
+               /* Clear the software interrupt in the core. */\r
+               mfc0    s6, _CP0_CAUSE\r
+               ins             s6, zero, 8, 1\r
+               mtc0    s6, _CP0_CAUSE\r
+               ehb\r
+\r
+               /* Clear the interrupt in the interrupt controller. */\r
+               la              s6, IFS0CLR\r
+               addiu   s4, zero, 2\r
+               sw              s4, (s6)\r
+\r
+               jal             vTaskSwitchContext\r
+               nop\r
+\r
+               /* Clear the interrupt mask again.  The saved status value is still in s7. */\r
+               mtc0    s7, _CP0_STATUS\r
+               ehb\r
+\r
+               /* Restore the stack pointer from the TCB. */\r
+               la              s0, pxCurrentTCB\r
+               lw              s0, (s0)\r
+               lw              s5, (s0)\r
+\r
+               /* Restore the rest of the context. */\r
+               lw              s0, 128(s5)\r
+               mthi    s0, $ac1\r
+               lw              s0, 124(s5)\r
+               mtlo    s0, $ac1\r
+\r
+               lw              s0, 136(s5)\r
+               mthi    s0, $ac2\r
+               lw              s0, 132(s5)\r
+               mtlo    s0, $ac2\r
+\r
+               lw              s0, 144(s5)\r
+               mthi    s0, $ac3\r
+               lw              s0, 140(s5)\r
+               mtlo    s0, $ac3\r
+\r
+               lw              s0, 148(s5)\r
+               wrdsp   s0\r
+\r
+               lw              s0, 8(s5)\r
+               mtlo    s0, $ac0\r
+               lw              s0, 12(s5)\r
+               mthi    s0, $ac0\r
+\r
+               lw              $1, 16(s5)\r
+               lw              s0, 20(s5)\r
+               lw              s1, 24(s5)\r
+               lw              s2, 28(s5)\r
+               lw              s3, 32(s5)\r
+               lw              s4, 36(s5)\r
+\r
+               /* s5 is loaded later. */\r
+               lw              s6, 44(s5)\r
+               lw              s7, 48(s5)\r
+               lw              v0, 52(s5)\r
+               lw              v1, 56(s5)\r
+               lw              a0, 60(s5)\r
+               lw              a1, 64(s5)\r
+               lw              a2, 68(s5)\r
+               lw              a3, 72(s5)\r
+               lw              t0, 76(s5)\r
+               lw              t1, 80(s5)\r
+               lw              t2, 84(s5)\r
+               lw              t3, 88(s5)\r
+               lw              t4, 92(s5)\r
+               lw              t5, 96(s5)\r
+               lw              t6, 100(s5)\r
+               lw              t7, 104(s5)\r
+               lw              t8, 108(s5)\r
+               lw              t9, 112(s5)\r
+               lw              s8, 116(s5)\r
+               lw              ra, 120(s5)\r
+\r
+               /* Protect access to the k registers, and others. */\r
+               di\r
+               ehb\r
+\r
+               /* Set nesting back to zero.  As the lowest priority interrupt this\r
+               interrupt cannot have nested. */\r
+               la              k0, uxInterruptNesting\r
+               sw              zero, 0(k0)\r
+\r
+               /* Switch back to use the real stack pointer. */\r
+               add             sp, zero, s5\r
+\r
+               /* Restore the real s5 value. */\r
+               lw              s5, 40(sp)\r
+\r
+               /* Pop the status and epc values. */\r
+               lw              k1, portSTATUS_STACK_LOCATION(sp)\r
+               lw              k0, portEPC_STACK_LOCATION(sp)\r
+\r
+               /* Remove stack frame. */\r
+               addiu   sp, sp, portCONTEXT_SIZE\r
+\r
+       #endif /* ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 ) */\r
+\r
+       /* Restore the status and EPC registers and return */\r
+       mtc0    k1, _CP0_STATUS\r
+       mtc0    k0, _CP0_EPC\r
        ehb\r
-\r
-       /* Clear the interrupt in the interrupt controller. */\r
-       la                      s6, IFS0CLR\r
-       addiu           s4, zero, 2\r
-       sw                      s4, (s6)\r
-\r
-       jal                     vTaskSwitchContext\r
+       eret\r
        nop\r
 \r
-       /* Clear the interrupt mask again.  The saved status value is still in s7. */\r
-       mtc0            s7, _CP0_STATUS\r
-       ehb\r
+       .end    vPortYieldISR\r
 \r
-       /* Restore the stack pointer from the TCB. */\r
-       la                      s0, pxCurrentTCB\r
-       lw                      s0, (s0)\r
-       lw                      s5, (s0)\r
-\r
-       /* Restore the rest of the context. */\r
-       lw                      s0, 128(s5)\r
-       mthi            s0, $ac1\r
-       lw                      s0, 124(s5)\r
-       mtlo            s0, $ac1\r
-\r
-       lw                      s0, 136(s5)\r
-       mthi            s0, $ac2\r
-       lw                      s0, 132(s5)\r
-       mtlo            s0, $ac2\r
-\r
-       lw                      s0, 144(s5)\r
-       mthi            s0, $ac3\r
-       lw                      s0, 140(s5)\r
-       mtlo            s0, $ac3\r
-\r
-       lw                      s0, 148(s5)\r
-       wrdsp           s0\r
-\r
-       lw                      s0, 8(s5)\r
-       mtlo            s0, $ac0\r
-       lw                      s0, 12(s5)\r
-       mthi            s0, $ac0\r
-\r
-       lw                      $1, 16(s5)\r
-       lw                      s0, 20(s5)\r
-       lw                      s1, 24(s5)\r
-       lw                      s2, 28(s5)\r
-       lw                      s3, 32(s5)\r
-       lw                      s4, 36(s5)\r
-\r
-       /* s5 is loaded later. */\r
-       lw                      s6, 44(s5)\r
-       lw                      s7, 48(s5)\r
-       lw                      v0, 52(s5)\r
-       lw                      v1, 56(s5)\r
-       lw                      a0, 60(s5)\r
-       lw                      a1, 64(s5)\r
-       lw                      a2, 68(s5)\r
-       lw                      a3, 72(s5)\r
-       lw                      t0, 76(s5)\r
-       lw                      t1, 80(s5)\r
-       lw                      t2, 84(s5)\r
-       lw                      t3, 88(s5)\r
-       lw                      t4, 92(s5)\r
-       lw                      t5, 96(s5)\r
-       lw                      t6, 100(s5)\r
-       lw                      t7, 104(s5)\r
-       lw                      t8, 108(s5)\r
-       lw                      t9, 112(s5)\r
-       lw                      s8, 116(s5)\r
-       lw                      ra, 120(s5)\r
-\r
-       /* Protect access to the k registers, and others. */\r
-       di\r
-       ehb\r
+/******************************************************************/\r
 \r
-       /* Set nesting back to zero.  As the lowest priority interrupt this\r
-       interrupt cannot have nested. */\r
-       la                      k0, uxInterruptNesting\r
-       sw                      zero, 0(k0)\r
+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
 \r
-       /* Switch back to use the real stack pointer. */\r
-       add                     sp, zero, s5\r
+       .macro portFPUSetAndInc reg, dest\r
+       mtc1    \reg, \dest\r
+       cvt.d.w \dest, \dest\r
+       addiu   \reg, \reg, 1\r
+       .endm\r
 \r
-       /* Restore the real s5 value. */\r
-       lw                      s5, 40(sp)\r
+       .set    noreorder\r
+       .set    noat\r
+       .section .text, code\r
+       .ent    vPortInitialiseFPSCR\r
+\r
+vPortInitialiseFPSCR:\r
+\r
+       /* Initialize the floating point status register in CP1. The initial\r
+       value is passed in a0. */\r
+       ctc1            a0, $f31\r
+\r
+       /* Clear the FPU registers */\r
+       addiu                   a0, zero, 0x0000\r
+       portFPUSetAndInc        a0, $f0\r
+       portFPUSetAndInc        a0, $f1\r
+       portFPUSetAndInc        a0, $f2\r
+       portFPUSetAndInc        a0, $f3\r
+       portFPUSetAndInc        a0, $f4\r
+       portFPUSetAndInc        a0, $f5\r
+       portFPUSetAndInc        a0, $f6\r
+       portFPUSetAndInc        a0, $f7\r
+       portFPUSetAndInc        a0, $f8\r
+       portFPUSetAndInc        a0, $f9\r
+       portFPUSetAndInc        a0, $f10\r
+       portFPUSetAndInc        a0, $f11\r
+       portFPUSetAndInc        a0, $f12\r
+       portFPUSetAndInc        a0, $f13\r
+       portFPUSetAndInc        a0, $f14\r
+       portFPUSetAndInc        a0, $f15\r
+       portFPUSetAndInc        a0, $f16\r
+       portFPUSetAndInc        a0, $f17\r
+       portFPUSetAndInc        a0, $f18\r
+       portFPUSetAndInc        a0, $f19\r
+       portFPUSetAndInc        a0, $f20\r
+       portFPUSetAndInc        a0, $f21\r
+       portFPUSetAndInc        a0, $f22\r
+       portFPUSetAndInc        a0, $f23\r
+       portFPUSetAndInc        a0, $f24\r
+       portFPUSetAndInc        a0, $f25\r
+       portFPUSetAndInc        a0, $f26\r
+       portFPUSetAndInc        a0, $f27\r
+       portFPUSetAndInc        a0, $f28\r
+       portFPUSetAndInc        a0, $f29\r
+       portFPUSetAndInc        a0, $f30\r
+       portFPUSetAndInc        a0, $f31\r
+\r
+       jr              ra\r
+       nop\r
 \r
-       /* Pop the status and epc values. */\r
-       lw                      k1, portSTATUS_STACK_LOCATION(sp)\r
-       lw                      k0, portEPC_STACK_LOCATION(sp)\r
+       .end vPortInitialiseFPSCR\r
 \r
-       /* Remove stack frame. */\r
-       addiu           sp, sp, portCONTEXT_SIZE\r
+#endif /* ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 ) */\r
+       \r
+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
 \r
-       mtc0            k1, _CP0_STATUS\r
-       mtc0            k0, _CP0_EPC\r
-       ehb\r
-       eret\r
+       /**********************************************************************/\r
+       /* Test read back                                                               */\r
+       /* a0 = address to store registers                              */\r
+\r
+       .set            noreorder\r
+       .set            noat\r
+       .section        .text, code\r
+       .ent            vPortFPUReadback\r
+       .global         vPortFPUReadback\r
+\r
+vPortFPUReadback:\r
+       sdc1            $f0, 0(a0)\r
+       sdc1            $f1, 8(a0)\r
+       sdc1            $f2, 16(a0)\r
+       sdc1            $f3, 24(a0)\r
+       sdc1            $f4, 32(a0)\r
+       sdc1            $f5, 40(a0)\r
+       sdc1            $f6, 48(a0)\r
+       sdc1            $f7, 56(a0)\r
+       sdc1            $f8, 64(a0)\r
+       sdc1            $f9, 72(a0)\r
+       sdc1            $f10, 80(a0)\r
+       sdc1            $f11, 88(a0)\r
+       sdc1            $f12, 96(a0)\r
+       sdc1            $f13, 104(a0)\r
+       sdc1            $f14, 112(a0)\r
+       sdc1            $f15, 120(a0)\r
+       sdc1            $f16, 128(a0)\r
+       sdc1            $f17, 136(a0)\r
+       sdc1            $f18, 144(a0)\r
+       sdc1            $f19, 152(a0)\r
+       sdc1            $f20, 160(a0)\r
+       sdc1            $f21, 168(a0)\r
+       sdc1            $f22, 176(a0)\r
+       sdc1            $f23, 184(a0)\r
+       sdc1            $f24, 192(a0)\r
+       sdc1            $f25, 200(a0)\r
+       sdc1            $f26, 208(a0)\r
+       sdc1            $f27, 216(a0)\r
+       sdc1            $f28, 224(a0)\r
+       sdc1            $f29, 232(a0)\r
+       sdc1            $f30, 240(a0)\r
+       sdc1            $f31, 248(a0)\r
+\r
+       jr              ra\r
        nop\r
 \r
-       .end            vPortYieldISR\r
+       .end vPortFPUReadback\r
+\r
+#endif /* ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 ) */\r
+\r
 \r
 \r
 \r
index 7b5034fbfabcdf6c2b1e000ec6e78471dc024d0d..e400070bce649377ad9a9a07ac6f6895c24068a5 100644 (file)
@@ -183,6 +183,15 @@ extern void vPortClearInterruptMaskFromISR( UBaseType_t );
 #define portSET_INTERRUPT_MASK_FROM_ISR() uxPortSetInterruptMaskFromISR()\r
 #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) vPortClearInterruptMaskFromISR( uxSavedStatusRegister )\r
 \r
+#if ( __mips_hard_float == 0 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+    #error configUSE_TASK_FPU_SUPPORT can only be set to 1 when the part supports a hardware FPU module.\r
+#endif\r
+\r
+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )\r
+    void vPortTaskUsesFPU( void );\r
+       #define portTASK_USES_FLOATING_POINT() vPortTaskUsesFPU()\r
+#endif\r
+\r
 #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION\r
        #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1\r
 #endif\r
index 9ede09f61f5da85b7114ed47024c52301f6c0145..663b60af019709ff836692273026f62badc0a5c7 100644 (file)
@@ -233,7 +233,7 @@ static TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) PRIV
  * If a timer has expired, process it.  Otherwise, block the timer service task\r
  * until either a timer does expire or a command is received.\r
  */\r
-static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, const BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION;\r
+static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION;\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -442,7 +442,7 @@ BaseType_t xListWasEmpty;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, const BaseType_t xListWasEmpty )\r
+static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty )\r
 {\r
 TickType_t xTimeNow;\r
 BaseType_t xTimerListsWereSwitched;\r
@@ -471,6 +471,13 @@ BaseType_t xTimerListsWereSwitched;
                                received - whichever comes first.  The following line cannot\r
                                be reached unless xNextExpireTime > xTimeNow, except in the\r
                                case when the current timer list is empty. */\r
+                               if( xListWasEmpty != pdFALSE )\r
+                               {\r
+                                       /* The current timer list is empty - is the overflow list\r
+                                       also empty? */\r
+                                       xListWasEmpty = listLIST_IS_EMPTY( pxOverflowTimerList );\r
+                               }\r
+\r
                                vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty );\r
 \r
                                if( xTaskResumeAll() == pdFALSE )\r