Preparing for maintenance release -
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.
diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.cproject b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.cproject
index 2a94648..3a0c432 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.cproject
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.cproject
@@ -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"/>

 								<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"/>

 								<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"/>

-								<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"/>

+								<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"/>

 								<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"/>

 								<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"/>

 								<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"/>

diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.project b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.project
index 99c7bb6..1f5593a 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.project
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.project
@@ -58,7 +58,7 @@
 	</linkedResources>

 	<filteredResources>

 		<filter>

-			<id>1427193581265</id>

+			<id>1444926372795</id>

 			<name></name>

 			<type>10</type>

 			<matcher>

@@ -67,7 +67,7 @@
 			</matcher>

 		</filter>

 		<filter>

-			<id>1427193581275</id>

+			<id>1444926372800</id>

 			<name></name>

 			<type>10</type>

 			<matcher>

@@ -76,7 +76,7 @@
 			</matcher>

 		</filter>

 		<filter>

-			<id>1427193581275</id>

+			<id>1444926372806</id>

 			<name></name>

 			<type>10</type>

 			<matcher>

@@ -85,6 +85,69 @@
 			</matcher>

 		</filter>

 		<filter>

+			<id>1444926372810</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.dep</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444926372815</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.ewd</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444926372819</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.ewp</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444926372823</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.ewt</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444926372829</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.eww</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444926372834</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.uvoptx</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444926372841</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.uvprojx</arguments>

+			</matcher>

+		</filter>

+		<filter>

 			<id>1424106057421</id>

 			<name>Full_Demo</name>

 			<type>6</type>

diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.settings/org.eclipse.core.resources.prefs b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.settings/org.eclipse.core.resources.prefs
index 890c0c1..4b6a43c 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.settings/org.eclipse.core.resources.prefs
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/.settings/org.eclipse.core.resources.prefs
@@ -11,8 +11,6 @@
 encoding//Debug/Full_Demo/Standard_Demo_Tasks/subdir_vars.mk=UTF-8

 encoding//Debug/Full_Demo/subdir_rules.mk=UTF-8

 encoding//Debug/Full_Demo/subdir_vars.mk=UTF-8

-encoding//Debug/Objects/subdir_rules.mk=UTF-8

-encoding//Debug/Objects/subdir_vars.mk=UTF-8

 encoding//Debug/SimplyBlinkyDemo/subdir_rules.mk=UTF-8

 encoding//Debug/SimplyBlinkyDemo/subdir_vars.mk=UTF-8

 encoding//Debug/SystemFiles_CCS/subdir_rules.mk=UTF-8

diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/FreeRTOSConfig.h
index e72cfcf..52003a7 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/FreeRTOSConfig.h
@@ -43,15 +43,15 @@
 /* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,

 or 0 to run the more comprehensive test and demo application.

 

-The comprehensive demo uses FreeRTOS+CLI to create a simple command line 

+The comprehensive demo uses FreeRTOS+CLI to create a simple command line

 interface through a UART.

 

 The blinky demo uses FreeRTOS's tickless idle mode to reduce power consumption.

-See the notes on the web page below regarding the difference in power saving 

-that can be achieved between using the generic tickless implementation (as used 

-by the blinky demo) and a tickless implementation that is tailored specifically 

+See the notes on the web page below regarding the difference in power saving

+that can be achieved between using the generic tickless implementation (as used

+by the blinky demo) and a tickless implementation that is tailored specifically

 to the MSP432.

- 

+

 See http://www.FreeRTOS.org/TI_MSP432_Free_RTOS_Demo.html for instructions. */

 #define configCREATE_SIMPLE_TICKLESS_DEMO	0

 

diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/RTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/RTOSDemo.ewd
index a8bc11b..b34f889 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/RTOSDemo.ewd
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/RTOSDemo.ewd
@@ -85,7 +85,7 @@
         </option>

         <option>

           <name>OCDynDriverList</name>

-          <state>JLINK_ID</state>

+          <state>IJET_ID</state>

         </option>

         <option>

           <name>OCLastSavedByProductVersion</name>

@@ -538,7 +538,7 @@
         <option>

           <name>IjetResetList</name>

           <version>1</version>

-          <state>10</state>

+          <state>4</state>

         </option>

         <option>

           <name>IjetHWResetDuration</name>

@@ -603,7 +603,7 @@
         </option>

         <option>

           <name>IjetCpuClockEdit</name>

-          <state>72.0</state>

+          <state></state>

         </option>

         <option>

           <name>IjetSwoPrescalerList</name>

diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dbgdt
index f93bb8a..9342bb4 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dbgdt
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dbgdt
@@ -55,7 +55,7 @@
           </Tab>

         </Tabs>

         

-      <SelectedTab>0</SelectedTab></Wnd1><Wnd4>

+      <SelectedTab>0</SelectedTab></Wnd1><Wnd3>

         <Tabs>

           <Tab>

             <Identity>TabID-2417-20288</Identity>

@@ -67,20 +67,20 @@
           </Tab>

         </Tabs>

         

-      <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>

+      <SelectedTab>0</SelectedTab></Wnd3></Windows>

     <Editor>

       

       

       

       

-    <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>

+    <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>

     <Positions>

       

       

       

       

       

-    <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>

+    <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>

   </Desktop>

 </Project>

 

diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dni b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dni
index 4f6bf46..32d1b18 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dni
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.dni
@@ -9,21 +9,8 @@
 LimitSize=0

 ByteLimit=50

 [PlDriver]

-MemConfigValue=

+MemConfigValue=C:\DevTools\IAR Systems\Embedded Workbench 7.2\arm\CONFIG\debugger\TexasInstruments\MSP432P401R.svd

 FirstRun=0

-[PlCacheRanges]

-CustomRanges0=0 0 536870912 1 0

-CustomRangesText0=Code

-CustomRanges1=0 536870912 33554432 0 0

-CustomRangesText1=SRAM

-CustomRanges2=0 570425344 33554432 0 0

-CustomRangesText2=bit-banding

-CustomRanges3=0 1073741824 33554432 2 0

-CustomRangesText3=Peripheral

-CustomRanges4=0 1107296256 33554432 2 0

-CustomRangesText4=bit-banding

-CustomRanges5=0 3758096384 536870912 2 0

-CustomRangesText5=Private peripheral

 [Jet]

 JetConnSerialNo=73866

 JetConnFoundProbes=

@@ -32,7 +19,7 @@
 OnlineReset=Software

 PrevWtdReset=System

 [DebugChecksum]

-Checksum=701872400

+Checksum=-1201177865

 [Exceptions]

 StopOnUncaught=_ 0

 StopOnThrow=_ 0

@@ -77,6 +64,19 @@
 ITMlogFile=$PROJ_DIR$\ITM.log

 [Breakpoints]

 Count=0

+[PlCacheRanges]

+CustomRanges0=0 0 536870912 1 0

+CustomRangesText0=Code

+CustomRanges1=0 536870912 33554432 0 0

+CustomRangesText1=SRAM

+CustomRanges2=0 570425344 33554432 0 0

+CustomRangesText2=bit-banding

+CustomRanges3=0 1073741824 33554432 2 0

+CustomRangesText3=Peripheral

+CustomRanges4=0 1107296256 33554432 2 0

+CustomRangesText4=bit-banding

+CustomRanges5=0 3758096384 536870912 2 0

+CustomRangesText5=Private peripheral

 [Trace2]

 Enabled=0

 ShowSource=0

@@ -90,36 +90,45 @@
 EventLSU=0

 EventSLEEP=0

 [PowerLog]

+Title_0=I0

+Symbol_0=0 4 1

 LogEnabled=0

 GraphEnabled=0

 ShowTimeLog=1

-ShowTimeSum=0

-Title_0=I0

-Symbol_0=0 4 1

 LiveEnabled=0

 LiveFile=PowerLogLive.log

 [DataLog]

 LogEnabled=0

-SumEnabled=0

 GraphEnabled=0

 ShowTimeLog=1

+SumEnabled=0

 ShowTimeSum=1

 [EventLog]

+Title_0=Ch3

+Symbol_0=0 4 1

+Title_1=Ch2

+Symbol_1=0 4 1

+Title_2=Ch1

+Symbol_2=0 4 1

+Title_3=Ch0

+Symbol_3=0 4 1

 LogEnabled=0

-SumEnabled=0

 GraphEnabled=0

 ShowTimeLog=1

+SumEnabled=0

 ShowTimeSum=1

 SumSortOrder=0

 [InterruptLog]

 LogEnabled=0

-SumEnabled=0

 GraphEnabled=0

 ShowTimeLog=1

+SumEnabled=0

 ShowTimeSum=1

 SumSortOrder=0

 [CallStackLog]

 Enabled=0

+[CallStackStripe]

+ShowTiming=1

 [DriverProfiling]

 Enabled=0

 Mode=3

diff --git a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.wsdt
index 24a90c0..18cc65a 100644
--- a/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.wsdt
+++ b/FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/settings/RTOSDemo.wsdt
@@ -24,7 +24,7 @@
     <Windows>

       

       

-    <Wnd1>

+    <Wnd2>

         <Tabs>

           <Tab>

             <Identity>TabID-2476-27879</Identity>

@@ -32,11 +32,11 @@
             <Factory>Workspace</Factory>

             <Session>

               

-            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode></NodeDict></Session>

+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source/tasks.c</ExpandedNode></NodeDict></Session>

           </Tab>

         </Tabs>

         

-      <SelectedTab>0</SelectedTab></Wnd1><Wnd3>

+      <SelectedTab>0</SelectedTab></Wnd2><Wnd3>

         <Tabs>

           <Tab>

             <Identity>TabID-28448-28006</Identity>

@@ -52,14 +52,14 @@
       

       

       

-    <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>

+    <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>

     <Positions>

       

       

       

       

       

-    <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>

+    <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>

   </Desktop>

 </Workspace>

 

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
index 0000000..c7dc886
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/ReadMe_Instructions.url
@@ -0,0 +1,5 @@
+[{000214A0-0000-0000-C000-000000000046}]

+Prop3=19,2

+[InternetShortcut]

+URL=http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html

+IDList=

diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/Interrupt_Entry_Stubs.asm b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/Interrupt_Entry_Stubs.asm
index 2c85e50..c3819c5 100644
--- a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/Interrupt_Entry_Stubs.asm
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/Interrupt_Entry_Stubs.asm
@@ -67,7 +67,7 @@
     1 tab == 4 spaces!

 */

 	SECTION intvec:CODE:ROOT(2)

-    ARM

+	ARM

 

 	EXTERN pxISRFunction

 	EXTERN FreeRTOS_Tick_Handler

diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/settings/RTOSDemo.wsdt
index 319c4df..e4ce814 100644
--- a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/settings/RTOSDemo.wsdt
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/settings/RTOSDemo.wsdt
@@ -35,7 +35,7 @@
     <Windows>

       

       

-    <Wnd1>

+    <Wnd0>

         <Tabs>

           <Tab>

             <Identity>TabID-31096-4084</Identity>

@@ -47,7 +47,7 @@
           </Tab>

         </Tabs>

         

-      <SelectedTab>0</SelectedTab></Wnd1><Wnd3>

+      <SelectedTab>0</SelectedTab></Wnd0><Wnd2>

         <Tabs>

           <Tab>

             <Identity>TabID-12820-6268</Identity>

@@ -69,20 +69,20 @@
           </Tab>

         <Tab><Identity>TabID-6803-3328</Identity><TabName>Ambiguous Definitions</TabName><Factory>Select-Ambiguous-Definitions</Factory><Session/></Tab></Tabs>

         

-      <SelectedTab>1</SelectedTab></Wnd3></Windows>

+      <SelectedTab>1</SelectedTab></Wnd2></Windows>

     <Editor>

       

       

       

       

-    <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>

+    <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>

     <Positions>

       

       

       

       

       

-    <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>

+    <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>

   </Desktop>

 </Workspace>

 

diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/FreeRTOS_tick_config.c b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/FreeRTOS_tick_config.c
index 4492742..8a4fad7 100644
--- a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/FreeRTOS_tick_config.c
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/FreeRTOS_tick_config.c
@@ -196,12 +196,12 @@
 	$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */

 	static void FreeRTOS_Tick_Handler_Entry( void )

 	{

-		__asm volatile (													 	\

-							"PUSH	{r0-r1}								\t\n"	\

-							"LDR	r0, =pxISRFunction					\t\n"	\

-							"LDR	R1, =FreeRTOS_Tick_Handler			\t\n"	\

-							"STR	R1, [r0]							\t\n"	\

-							"POP	{r0-r1}								\t\n"	\

+		__asm volatile (

+							"PUSH	{r0-r1}								\t\n"

+							"LDR	r0, =pxISRFunction					\t\n"

+							"LDR	R1, =FreeRTOS_Tick_Handler			\t\n"

+							"STR	R1, [r0]							\t\n"

+							"POP	{r0-r1}								\t\n"

 							"B		FreeRTOS_IRQ_Handler					"

 						);

 	}

diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/Full_Demo/IntQueueTimer.c b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/Full_Demo/IntQueueTimer.c
index 5aee68f..63ede63 100644
--- a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/Full_Demo/IntQueueTimer.c
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/Full_Demo/IntQueueTimer.c
@@ -202,18 +202,20 @@
  * interrupt entry (including interrupt nesting), before calling the C function

  * saved in the pxISRFunction variable.  NOTE:  The entry points are naked

  * functions - do not add C code to these functions.

+ *

+ * See http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html

  */

 #ifdef __GNUC__

 	/* The IAR equivalent is implemented in

 	$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */

 	static void vCMT_1_Channel_0_ISR_Entry( void )

 	{

-		__asm volatile (													 	\

-							"PUSH	{r0-r1}								\t\n"	\

-							"LDR	r0, =pxISRFunction					\t\n"	\

-							"LDR	r1, =vCMT_1_Channel_0_ISR			\t\n"	\

-							"STR	r1, [r0]							\t\n"	\

-							"POP	{r0-r1}								\t\n"	\

+		__asm volatile (

+							"PUSH	{r0-r1}								\t\n"

+							"LDR	r0, =pxISRFunction					\t\n"

+							"LDR	r1, =vCMT_1_Channel_0_ISR			\t\n"

+							"STR	r1, [r0]							\t\n"

+							"POP	{r0-r1}								\t\n"

 							"B		FreeRTOS_IRQ_Handler					"

 						);

 	}

@@ -225,12 +227,12 @@
 	$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */

 	static void vCMT_1_Channel_1_ISR_Entry( void )

 	{

-		__asm volatile (													 	\

-							"PUSH	{r0-r1}								\t\n"	\

-							"LDR	r0, =pxISRFunction					\t\n"	\

-							"LDR	r1, =vCMT_1_Channel_1_ISR			\t\n"	\

-							"STR	r1, [r0]							\t\n"	\

-							"POP	{r0-r1}								\t\n"	\

+		__asm volatile (

+							"PUSH	{r0-r1}								\t\n"

+							"LDR	r0, =pxISRFunction					\t\n"

+							"LDR	r1, =vCMT_1_Channel_1_ISR			\t\n"

+							"STR	r1, [r0]							\t\n"

+							"POP	{r0-r1}								\t\n"

 							"B		FreeRTOS_IRQ_Handler					"

 						);

 	}

diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/cg_src/r_cg_scifa_user.c b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/cg_src/r_cg_scifa_user.c
index adde4d6..cd3e2be 100644
--- a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/cg_src/r_cg_scifa_user.c
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/cg_src/r_cg_scifa_user.c
@@ -375,7 +375,7 @@
 	( void ) pxPort;

 

 	/* Don't send the string unless the previous string has been sent. */

-	if( xSendingTask == NULL )

+	if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )

 	{

 		/* Ensure the calling task's notification state is not already

 		pending. */

@@ -433,12 +433,12 @@
 	$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */

 	void r_scifa2_txif2_interrupt_entry( void )

 	{

-		__asm volatile (													 	\

-							"PUSH	{r0-r1}								\t\n"	\

-							"LDR	r0, =pxISRFunction					\t\n"	\

-							"LDR	r1, =r_scifa2_txif2_interrupt		\t\n"	\

-							"STR	r1, [r0]							\t\n"	\

-							"POP	{r0-r1}								\t\n"	\

+		__asm volatile (

+							"PUSH	{r0-r1}								\t\n"

+							"LDR	r0, =pxISRFunction					\t\n"

+							"LDR	r1, =r_scifa2_txif2_interrupt		\t\n"

+							"STR	r1, [r0]							\t\n"

+							"POP	{r0-r1}								\t\n"

 							"B		FreeRTOS_IRQ_Handler					"

 						);

 	}

@@ -450,12 +450,12 @@
 	$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */

 	void r_scifa2_rxif2_interrupt_entry( void )

 	{

-		__asm volatile (													 	\

-							"PUSH	{r0-r1}								\t\n"	\

-							"LDR	r0, =pxISRFunction					\t\n"	\

-							"LDR	r1, =r_scifa2_rxif2_interrupt		\t\n"	\

-							"STR	r1, [r0]							\t\n"	\

-							"POP	{r0-r1}								\t\n"	\

+		__asm volatile (

+							"PUSH	{r0-r1}								\t\n"

+							"LDR	r0, =pxISRFunction					\t\n"

+							"LDR	r1, =r_scifa2_rxif2_interrupt		\t\n"

+							"STR	r1, [r0]							\t\n"

+							"POP	{r0-r1}								\t\n"

 							"B		FreeRTOS_IRQ_Handler					"

 						);

 	}

@@ -467,12 +467,12 @@
 	$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */

 	void r_scifa2_drif2_interrupt_entry( void )

 	{

-		__asm volatile (													 	\

-							"PUSH	{r0-r1}								\t\n"	\

-							"LDR	r0, =pxISRFunction					\t\n"	\

-							"LDR	r1, =r_scifa2_drif2_interrupt		\t\n"	\

-							"STR	r1, [r0]							\t\n"	\

-							"POP	{r0-r1}								\t\n"	\

+		__asm volatile (

+							"PUSH	{r0-r1}								\t\n"

+							"LDR	r0, =pxISRFunction					\t\n"

+							"LDR	r1, =r_scifa2_drif2_interrupt		\t\n"

+							"STR	r1, [r0]							\t\n"

+							"POP	{r0-r1}								\t\n"

 							"B		FreeRTOS_IRQ_Handler					"

 						);

 	}

@@ -484,12 +484,12 @@
 	$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */

 	void r_scifa2_brif2_interrupt_entry( void )

 	{

-		__asm volatile (													 	\

-							"PUSH	{r0-r1}								\t\n"	\

-							"LDR	r0, =pxISRFunction					\t\n"	\

-							"LDR	r1, =r_scifa2_brif2_interrupt		\t\n"	\

-							"STR	r1, [r0]							\t\n"	\

-							"POP	{r0-r1}								\t\n"	\

+		__asm volatile (

+							"PUSH	{r0-r1}								\t\n"

+							"LDR	r0, =pxISRFunction					\t\n"

+							"LDR	r1, =r_scifa2_brif2_interrupt		\t\n"

+							"STR	r1, [r0]							\t\n"

+							"POP	{r0-r1}								\t\n"

 							"B		FreeRTOS_IRQ_Handler					"

 						);

 	}

diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/main.c b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/main.c
index 9200638..fe8491a 100644
--- a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/main.c
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/src/main.c
@@ -83,6 +83,8 @@
  * THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO

  * APPLICATION, AND ITS ASSOCIATE FreeRTOS ARCHITECTURE PORT!

  *

+ * http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html

+ *

  */

 

 /* Standard includes. */

@@ -136,6 +138,7 @@
 

 /*-----------------------------------------------------------*/

 

+/* See http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html */

 int main( void )

 {

 	/* The start up code does not include a routine to clear the BSS segment to

diff --git a/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/.settings/org.eclipse.core.resources.prefs b/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/.settings/org.eclipse.core.resources.prefs
index a3e220f..a9e5b95 100644
--- a/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/.settings/org.eclipse.core.resources.prefs
+++ b/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/.settings/org.eclipse.core.resources.prefs
@@ -22,3 +22,49 @@
 encoding//Debug/sources.mk=UTF-8

 encoding//Debug/subdir_rules.mk=UTF-8

 encoding//Debug/subdir_vars.mk=UTF-8

+encoding//Large_Data/Blinky_Demo/subdir_rules.mk=UTF-8

+encoding//Large_Data/Blinky_Demo/subdir_vars.mk=UTF-8

+encoding//Large_Data/CCS_Only/subdir_rules.mk=UTF-8

+encoding//Large_Data/CCS_Only/subdir_vars.mk=UTF-8

+encoding//Large_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_rules.mk=UTF-8

+encoding//Large_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_vars.mk=UTF-8

+encoding//Large_Data/FreeRTOS_Source/portable/MemMang/subdir_rules.mk=UTF-8

+encoding//Large_Data/FreeRTOS_Source/portable/MemMang/subdir_vars.mk=UTF-8

+encoding//Large_Data/FreeRTOS_Source/subdir_rules.mk=UTF-8

+encoding//Large_Data/FreeRTOS_Source/subdir_vars.mk=UTF-8

+encoding//Large_Data/Full_Demo/FreeRTOS+CLI/subdir_rules.mk=UTF-8

+encoding//Large_Data/Full_Demo/FreeRTOS+CLI/subdir_vars.mk=UTF-8

+encoding//Large_Data/Full_Demo/Standard_Demo_Tasks/subdir_rules.mk=UTF-8

+encoding//Large_Data/Full_Demo/Standard_Demo_Tasks/subdir_vars.mk=UTF-8

+encoding//Large_Data/Full_Demo/subdir_rules.mk=UTF-8

+encoding//Large_Data/Full_Demo/subdir_vars.mk=UTF-8

+encoding//Large_Data/driverlib/MSP430FR5xx_6xx/subdir_rules.mk=UTF-8

+encoding//Large_Data/driverlib/MSP430FR5xx_6xx/subdir_vars.mk=UTF-8

+encoding//Large_Data/makefile=UTF-8

+encoding//Large_Data/objects.mk=UTF-8

+encoding//Large_Data/sources.mk=UTF-8

+encoding//Large_Data/subdir_rules.mk=UTF-8

+encoding//Large_Data/subdir_vars.mk=UTF-8

+encoding//Small_Data/Blinky_Demo/subdir_rules.mk=UTF-8

+encoding//Small_Data/Blinky_Demo/subdir_vars.mk=UTF-8

+encoding//Small_Data/CCS_Only/subdir_rules.mk=UTF-8

+encoding//Small_Data/CCS_Only/subdir_vars.mk=UTF-8

+encoding//Small_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_rules.mk=UTF-8

+encoding//Small_Data/FreeRTOS_Source/portable/CCS/MSP430X/subdir_vars.mk=UTF-8

+encoding//Small_Data/FreeRTOS_Source/portable/MemMang/subdir_rules.mk=UTF-8

+encoding//Small_Data/FreeRTOS_Source/portable/MemMang/subdir_vars.mk=UTF-8

+encoding//Small_Data/FreeRTOS_Source/subdir_rules.mk=UTF-8

+encoding//Small_Data/FreeRTOS_Source/subdir_vars.mk=UTF-8

+encoding//Small_Data/Full_Demo/FreeRTOS+CLI/subdir_rules.mk=UTF-8

+encoding//Small_Data/Full_Demo/FreeRTOS+CLI/subdir_vars.mk=UTF-8

+encoding//Small_Data/Full_Demo/Standard_Demo_Tasks/subdir_rules.mk=UTF-8

+encoding//Small_Data/Full_Demo/Standard_Demo_Tasks/subdir_vars.mk=UTF-8

+encoding//Small_Data/Full_Demo/subdir_rules.mk=UTF-8

+encoding//Small_Data/Full_Demo/subdir_vars.mk=UTF-8

+encoding//Small_Data/driverlib/MSP430FR5xx_6xx/subdir_rules.mk=UTF-8

+encoding//Small_Data/driverlib/MSP430FR5xx_6xx/subdir_vars.mk=UTF-8

+encoding//Small_Data/makefile=UTF-8

+encoding//Small_Data/objects.mk=UTF-8

+encoding//Small_Data/sources.mk=UTF-8

+encoding//Small_Data/subdir_rules.mk=UTF-8

+encoding//Small_Data/subdir_vars.mk=UTF-8

diff --git a/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/FreeRTOSConfig.h b/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/FreeRTOSConfig.h
index 2fedcc4..795cfd6 100644
--- a/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/FreeRTOSConfig.h
@@ -198,7 +198,7 @@
 #else

 	/* Using the CCS pre-processor constants. */

 	#ifdef __LARGE_DATA_MODEL__

-		#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 80 )

+		#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 85 )

 	#else

 		#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 140 )

 	#endif

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/FreeRTOSConfig.h b/FreeRTOS/Demo/PIC24_MPLAB/FreeRTOSConfig.h
index b67f777..c210f77 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/PIC24_MPLAB/FreeRTOSConfig.h
@@ -96,6 +96,7 @@
 #define configUSE_TRACE_FACILITY		0

 #define configUSE_16_BIT_TICKS			1

 #define configIDLE_SHOULD_YIELD			1

+#define configCHECK_FOR_STACK_OVERFLOW  2

 

 /* Co-routine definitions. */

 #define configUSE_CO_ROUTINES 		1

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/main.c b/FreeRTOS/Demo/PIC24_MPLAB/main.c
index 8fdd1c8..faf9cd5 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/main.c
+++ b/FreeRTOS/Demo/PIC24_MPLAB/main.c
@@ -165,6 +165,10 @@
  */

 static void prvSetupHardware( void );

 

+/* Prototypes for the standard FreeRTOS callback/hook functions implemented

+within this file. */

+void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );

+

 /*-----------------------------------------------------------*/

 

 /* The queue used to send messages to the LCD task. */

@@ -290,3 +294,15 @@
 }

 /*-----------------------------------------------------------*/

 

+void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )

+{

+	( void ) pcTaskName;

+	( void ) pxTask;

+

+	/* Run time stack overflow checking is performed if

+	configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook

+	function is called if a stack overflow is detected. */

+	taskDISABLE_INTERRUPTS();

+	for( ;; );

+}

+

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-default.mk b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-default.mk
index 9dd5632..60fba52 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-default.mk
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-default.mk
@@ -44,6 +44,9 @@
 # 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 @@
 # 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 @@
 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 @@
 # 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 @@
 # 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 @@
 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
 
diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties
index 0a71547..e2c8284 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties
@@ -1,8 +1,9 @@
 #

-#Sat Jun 08 17:32:26 BST 2013

-default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=654ec2e9d4aec452652bf33d59c2beac

-default.languagetoolchain.dir=C\:\\devtools\\Microchip\\xc16\\v1.11\\bin

-com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=8fe1589514540343a5279c082104bce0

-default.languagetoolchain.version=1.11

+#Thu Oct 15 21:03:35 BST 2015

+default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=7b5555b9f3fac10bdeeaa71fff22c072

+default.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc16\\v1.25\\bin

+configurations-xml=e1668378027c43cfe57bea932c980e61

+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=17a71d03e7d3823160f3e8681fc226e8

+default.languagetoolchain.version=1.25

 host.platform=windows

 conf.ids=default

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-local-default.mk b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-local-default.mk
index a4936b4..bde41e5 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-local-default.mk
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-local-default.mk
@@ -15,23 +15,23 @@
 # $ 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
diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/configurations.xml b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/configurations.xml
index fa5f3dd..88bc67c 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/configurations.xml
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/configurations.xml
@@ -63,9 +63,9 @@
         <targetDevice>PIC24FJ128GA010</targetDevice>

         <targetHeader></targetHeader>

         <targetPluginBoard></targetPluginBoard>

-        <platformTool>ICD3PlatformTool</platformTool>

+        <platformTool>Simulator</platformTool>

         <languageToolchain>XC16</languageToolchain>

-        <languageToolchainVersion>1.11</languageToolchainVersion>

+        <languageToolchainVersion>1.25</languageToolchainVersion>

         <platform>3</platform>

       </toolsSet>

       <compileType>

@@ -73,8 +73,11 @@
           <linkerLibItems>

           </linkerLibItems>

         </linkerTool>

+        <archiverTool>

+        </archiverTool>

         <loading>

           <useAlternateLoadableFile>false</useAlternateLoadableFile>

+          <parseOnProdLoad>false</parseOnProdLoad>

           <alternateLoadableFile></alternateLoadableFile>

         </loading>

       </compileType>

@@ -91,6 +94,7 @@
         <property key="code-model" value="default"/>

         <property key="const-model" value="default"/>

         <property key="data-model" value="default"/>

+        <property key="disable-instruction-scheduling" value="false"/>

         <property key="enable-all-warnings" value="true"/>

         <property key="enable-ansi-std" value="false"/>

         <property key="enable-ansi-warnings" value="false"/>

@@ -124,16 +128,350 @@
         <property key="preprocessor-macros" value=""/>

         <property key="scalar-model" value="default"/>

         <property key="use-cci" value="false"/>

+        <property key="use-iar" value="false"/>

         <appendMe value="-I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra"/>

       </C30>

+      <C30-AR>

+        <property key="additional-options-chop-files" value="false"/>

+      </C30-AR>

       <C30-AS>

+        <property key="assembler-symbols" value=""/>

+        <property key="expand-macros" value="false"/>

+        <property key="extra-include-directories-for-assembler" value=""/>

+        <property key="extra-include-directories-for-preprocessor" value=""/>

+        <property key="false-conditionals" value="false"/>

+        <property key="keep-locals" value="false"/>

+        <property key="list-assembly" value="false"/>

+        <property key="list-section-info" value="false"/>

+        <property key="list-source" value="false"/>

+        <property key="list-symbols" value="false"/>

+        <property key="oXC16asm-extra-opts" value=""/>

+        <property key="oXC16asm-list-to-file" value="false"/>

+        <property key="omit-debug-dirs" value="false"/>

+        <property key="omit-forms" value="false"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="relax" value="false"/>

+        <property key="warning-level" value="emit-warnings"/>

       </C30-AS>

       <C30-LD>

+        <property key="additional-options-use-response-files" value="false"/>

+        <property key="boot-eeprom" value="no_eeprom"/>

+        <property key="boot-flash" value="no_flash"/>

+        <property key="boot-ram" value="no_ram"/>

+        <property key="boot-write-protect" value="no_write_protect"/>

+        <property key="enable-check-sections" value="false"/>

+        <property key="enable-data-init" value="true"/>

+        <property key="enable-default-isr" value="true"/>

+        <property key="enable-handles" value="true"/>

+        <property key="enable-pack-data" value="true"/>

+        <property key="extra-lib-directories" value=""/>

+        <property key="fill-flash-options-addr" value=""/>

+        <property key="fill-flash-options-const" value=""/>

+        <property key="fill-flash-options-how" value="0"/>

+        <property key="fill-flash-options-inc-const" value="1"/>

+        <property key="fill-flash-options-increment" value=""/>

+        <property key="fill-flash-options-seq" value=""/>

+        <property key="fill-flash-options-what" value="0"/>

+        <property key="general-code-protect" value="no_code_protect"/>

+        <property key="general-write-protect" value="no_write_protect"/>

+        <property key="generate-cross-reference-file" value="false"/>

+        <property key="heap-size" value=""/>

+        <property key="input-libraries" value=""/>

+        <property key="linker-stack" value="true"/>

+        <property key="linker-symbols" value=""/>

+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>

+        <property key="oXC16ld-extra-opts" value=""/>

+        <property key="oXC16ld-fill-upper" value="0"/>

+        <property key="oXC16ld-force-link" value="false"/>

+        <property key="oXC16ld-no-smart-io" value="false"/>

+        <property key="oXC16ld-nostdlib" value="false"/>

+        <property key="oXC16ld-stackguard" value="16"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="remove-unused-sections" value="false"/>

+        <property key="report-memory-usage" value="true"/>

+        <property key="secure-eeprom" value="no_eeprom"/>

+        <property key="secure-flash" value="no_flash"/>

+        <property key="secure-ram" value="no_ram"/>

+        <property key="secure-write-protect" value="no_write_protect"/>

+        <property key="stack-size" value="16"/>

+        <property key="symbol-stripping" value=""/>

+        <property key="trace-symbols" value=""/>

+        <property key="warn-section-align" value="false"/>

       </C30-LD>

       <C30Global>

+        <property key="common-include-directories" value=""/>

+        <property key="dual-boot-partition" value="0"/>

+        <property key="fast-math" value="false"/>

+        <property key="generic-16-bit" value="false"/>

+        <property key="legacy-libc" value="false"/>

+        <property key="oXC16glb-macros" value=""/>

+        <property key="output-file-format" value="elf"/>

+        <property key="relaxed-math" value="false"/>

+        <property key="save-temps" value="false"/>

       </C30Global>

       <ICD3PlatformTool>

+        <property key="ADC 1" value="true"/>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="CRC" value="true"/>

+        <property key="Freeze All Other Peripherals" value="true"/>

+        <property key="I2C1" value="true"/>

+        <property key="I2C2" value="true"/>

+        <property key="INPUT CAPTURE 1" value="true"/>

+        <property key="INPUT CAPTURE 2" value="true"/>

+        <property key="INPUT CAPTURE 3" value="true"/>

+        <property key="INPUT CAPTURE 4" value="true"/>

+        <property key="INPUT CAPTURE 5" value="true"/>

+        <property key="OUTPUT COMPARE 1" value="true"/>

+        <property key="OUTPUT COMPARE 2" value="true"/>

+        <property key="OUTPUT COMPARE 3" value="true"/>

+        <property key="OUTPUT COMPARE 4" value="true"/>

+        <property key="OUTPUT COMPARE 5" value="true"/>

+        <property key="SPI 1" value="true"/>

+        <property key="SPI 2" value="true"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="TIMER1" value="true"/>

+        <property key="TIMER2" value="true"/>

+        <property key="TIMER3" value="true"/>

+        <property key="TIMER4" value="true"/>

+        <property key="TIMER5" value="true"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="UART 1" value="true"/>

+        <property key="UART 2" value="true"/>

+        <property key="debugoptions.useswbreakpoints" value="false"/>

+        <property key="hwtoolclock.frcindebug" value="false"/>

+        <property key="memories.aux" value="false"/>

+        <property key="memories.bootflash" value="false"/>

+        <property key="memories.configurationmemory" value="true"/>

+        <property key="memories.configurationmemory2" value="true"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="true"/>

+        <property key="memories.flashdata" value="true"/>

+        <property key="memories.id" value="true"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x157fb"/>

+        <property key="memories.programmemory.partition2" value="true"/>

+        <property key="memories.programmemory.partition2.end"

+                  value="${memories.programmemory.partition2.end.value}"/>

+        <property key="memories.programmemory.partition2.start"

+                  value="${memories.programmemory.partition2.start.value}"/>

+        <property key="memories.programmemory.start" value="0x0"/>

+        <property key="poweroptions.powerenable" value="false"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x157fb"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x0"/>

+        <property key="programoptions.preserveuserid" value="false"/>

+        <property key="programoptions.programcalmem" value="false"/>

+        <property key="programoptions.programuserotp" value="false"/>

+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+        <property key="voltagevalue" value="3.25"/>

       </ICD3PlatformTool>

+      <Simulator>

+        <property key="codecoverage.enabled" value="Disable"/>

+        <property key="codecoverage.enableoutputtofile" value="false"/>

+        <property key="codecoverage.outputfile" value=""/>

+        <property key="oscillator.auxfrequency" value="120"/>

+        <property key="oscillator.auxfrequencyunit" value="Mega"/>

+        <property key="oscillator.frequency" value="1"/>

+        <property key="oscillator.frequencyunit" value="Mega"/>

+        <property key="oscillator.rcfrequency" value="250"/>

+        <property key="oscillator.rcfrequencyunit" value="Kilo"/>

+        <property key="performancedata.show" value="false"/>

+        <property key="periphADC1.altscl" value="false"/>

+        <property key="periphADC1.minTacq" value=""/>

+        <property key="periphADC1.tacqunits" value="microseconds"/>

+        <property key="periphADC2.altscl" value="false"/>

+        <property key="periphADC2.minTacq" value=""/>

+        <property key="periphADC2.tacqunits" value="microseconds"/>

+        <property key="periphComp1.gte" value="gt"/>

+        <property key="periphComp2.gte" value="gt"/>

+        <property key="periphComp3.gte" value="gt"/>

+        <property key="periphComp4.gte" value="gt"/>

+        <property key="periphComp5.gte" value="gt"/>

+        <property key="periphComp6.gte" value="gt"/>

+        <property key="uart10io.output" value="window"/>

+        <property key="uart10io.outputfile" value=""/>

+        <property key="uart10io.uartioenabled" value="false"/>

+        <property key="uart1io.output" value="window"/>

+        <property key="uart1io.outputfile" value=""/>

+        <property key="uart1io.uartioenabled" value="false"/>

+        <property key="uart2io.output" value="window"/>

+        <property key="uart2io.outputfile" value=""/>

+        <property key="uart2io.uartioenabled" value="false"/>

+        <property key="uart3io.output" value="window"/>

+        <property key="uart3io.outputfile" value=""/>

+        <property key="uart3io.uartioenabled" value="false"/>

+        <property key="uart4io.output" value="window"/>

+        <property key="uart4io.outputfile" value=""/>

+        <property key="uart4io.uartioenabled" value="false"/>

+        <property key="uart5io.output" value="window"/>

+        <property key="uart5io.outputfile" value=""/>

+        <property key="uart5io.uartioenabled" value="false"/>

+        <property key="uart6io.output" value="window"/>

+        <property key="uart6io.outputfile" value=""/>

+        <property key="uart6io.uartioenabled" value="false"/>

+        <property key="uart7io.output" value="window"/>

+        <property key="uart7io.outputfile" value=""/>

+        <property key="uart7io.uartioenabled" value="false"/>

+        <property key="uart8io.output" value="window"/>

+        <property key="uart8io.outputfile" value=""/>

+        <property key="uart8io.uartioenabled" value="false"/>

+        <property key="uart9io.output" value="window"/>

+        <property key="uart9io.outputfile" value=""/>

+        <property key="uart9io.uartioenabled" value="false"/>

+        <property key="warningmessagebreakoptions.W0001_CORE_BITREV_MODULO_EN"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0002_CORE_SECURE_MEMORYACCESS"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0003_CORE_SW_RESET" value="report"/>

+        <property key="warningmessagebreakoptions.W0004_CORE_WDT_RESET" value="report"/>

+        <property key="warningmessagebreakoptions.W0005_CORE_IOPUW_RESET"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0006_CORE_CODE_GUARD_PFC_RESET"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0007_CORE_DO_LOOP_STACK_UNDERFLOW"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0008_CORE_DO_LOOP_STACK_OVERFLOW"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0009_CORE_NESTED_DO_LOOP_RANGE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0010_CORE_SIM32_ODD_WORDACCESS"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0011_CORE_SIM32_UNIMPLEMENTED_RAMACCESS"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0012_CORE_STACK_OVERFLOW_RESET"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0013_CORE_STACK_UNDERFLOW_RESET"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0101_SIM_UPDATE_FAILED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0102_SIM_PERIPH_MISSING"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0103_SIM_PERIPH_FAILED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0104_SIM_FAILED_TO_INIT_TOOL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0105_SIM_INVALID_FIELD"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0201_ADC_NO_STIMULUS_FILE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0202_ADC_GO_DONE_BIT" value="report"/>

+        <property key="warningmessagebreakoptions.W0203_ADC_MINIMUM_2_TAD"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0204_ADC_TAD_TOO_SMALL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0205_ADC_UNEXPECTED_TRANSITION"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0206_ADC_SAMP_TIME_TOO_SHORT"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0207_ADC_NO_PINS_SCANNED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0208_ADC_UNSUPPORTED_CLOCK_SOURCE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0209_ADC_ANALOG_CHANNEL_DIGITAL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0210_ADC_ANALOG_CHANNEL_OUTPUT"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0211_ADC_PIN_INVALID_CHANNEL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0212_ADC_BAND_GAP_NOT_SUPPORTED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0213_ADC_RESERVED_SSRC"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0214_ADC_POSITIVE_INPUT_DIGITAL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0215_ADC_POSITIVE_INPUT_OUTPUT"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0216_ADC_NEGATIVE_INPUT_DIGITAL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0217_ADC_NEGATIVE_INPUT_OUTPUT"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0218_ADC_REFERENCE_HIGH_DIGITAL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0219_ADC_REFERENCE_HIGH_OUTPUT"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0220_ADC_REFERENCE_LOW_DIGITAL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0221_ADC_REFERENCE_LOW_OUTPUT"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0222_ADC_OVERFLOW" value="report"/>

+        <property key="warningmessagebreakoptions.W0223_ADC_UNDERFLOW" value="report"/>

+        <property key="warningmessagebreakoptions.W0224_ADC_CTMU_NOT_SUPPORTED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0225_ADC_INVALID_CH0S"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0226_ADC_VBAT_NOT_SUPPORTED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0227_ADC_INVALID_ADCS"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0228_ADC_INVALID_ADCS"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W0229_ADC_INVALID_ADCS"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W1201_DATAFLASH_MEM_OUTSIDE_RANGE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W1202_DATAFLASH_ERASE_WHILE_LOCKED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W1203_DATAFLASH_WRITE_WHILE_LOCKED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W1401_DMA_PERIPH_NOT_AVAIL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W1402_DMA_INVALID_IRQ" value="report"/>

+        <property key="warningmessagebreakoptions.W1403_DMA_INVALID_SFR" value="report"/>

+        <property key="warningmessagebreakoptions.W1404_DMA_INVALID_DMA_ADDR"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W1405_DMA_IRQ_DIR_MISMATCH"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W2001_INPUTCAPTURE_TMR3_UNAVAILABLE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W2002_INPUTCAPTURE_CAPTURE_EMPTY"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W2003_INPUTCAPTURE_SYNCSEL_NOT_AVIALABLE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W2004_INPUTCAPTURE_BAD_SYNC_SOURCE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W2501_OUTPUTCOMPARE_SYNCSEL_NOT_AVIALABLE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W2502_OUTPUTCOMPARE_BAD_SYNC_SOURCE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W2503_OUTPUTCOMPARE_BAD_TRIGGER_SOURCE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9001_TMR_GATE_AND_EXTCLOCK_ENABLED"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9002_TMR_NO_PIN_AVAILABLE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9003_TMR_INVALID_CLOCK_SOURCE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9201_UART_TX_OVERFLOW"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9202_UART_TX_CAPTUREFILE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9203_UART_TX_INVALIDINTERRUPTMODE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9204_UART_RX_EMPTY_QUEUE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9205_UART_TX_BADFILE" value="report"/>

+        <property key="warningmessagebreakoptions.W9801_SCL_BAD_SUBTYPE_INDICATION"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9802_SCL_FILE_NOT_FOUND"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9803_SCL_FAILED_TO_READ_FILE"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9804_SCL_UNRECOGNIZED_LABEL"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.W9805_SCL_UNRECOGNIZED_VAR"

+                  value="report"/>

+        <property key="warningmessagebreakoptions.displaywarningmessagesoption"

+                  value=""/>

+        <property key="warningmessagebreakoptions.warningmessages" value="holdstate"/>

+      </Simulator>

     </conf>

   </confs>

 </configurationDescriptor>

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/configurations.xml b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/configurations.xml
index a3d6ca8..8d3f9b9 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/configurations.xml
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/configurations.xml
@@ -5,7 +5,7 @@
   <confs>

     <conf name="default" type="2">

       <platformToolSN></platformToolSN>

-      <languageToolchainDir>C:\devtools\Microchip\xc16\v1.11\bin</languageToolchainDir>

+      <languageToolchainDir>C:\DevTools\Microchip\xc16\v1.25\bin</languageToolchainDir>

       <mdbdebugger version="1">

         <placeholder1>place holder 1</placeholder1>

         <placeholder2>place holder 2</placeholder2>

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/private.xml b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/private.xml
index 778e32b..8b05f08 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/private.xml
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/private/private.xml
@@ -1,3 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><project-private xmlns="http://www.netbeans.org/ns/project-private/1">

+<?xml version="1.0" encoding="UTF-8"?>

+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">

     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>

+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>

+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">

+        <group name="Masters19024">

+            <file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC24_MPLAB/main.c</file>

+        </group>

+    </open-files>

 </project-private>

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/project.xml b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/project.xml
index 5e4d477..d23b9e3 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/project.xml
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/project.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://www.netbeans.org/ns/project/1">

+<?xml version="1.0" encoding="UTF-8"?>

+<project xmlns="http://www.netbeans.org/ns/project/1">

     <type>com.microchip.mplab.nbide.embedded.makeproject</type>

     <configuration>

         <data xmlns="http://www.netbeans.org/ns/make-project/1">

@@ -9,6 +10,7 @@
             <cpp-extensions/>

             <header-extensions>h</header-extensions>

             <sourceEncoding>ISO-8859-1</sourceEncoding>

+            <asminc-extensions/>

             <make-dep-projects/>

         </data>

     </configuration>

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h b/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h
index 894321b..d0e403b 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h
@@ -94,14 +94,14 @@
 #define configPERIPHERAL_CLOCK_HZ				( 40000000UL )

 #define configMAX_PRIORITIES					( 5UL )

 #define configMINIMAL_STACK_SIZE				( 190 )

-#define configISR_STACK_SIZE					( 300 )

-#define configTOTAL_HEAP_SIZE					( ( size_t ) 56000 )

+#define configISR_STACK_SIZE					( 400 )

+#define configTOTAL_HEAP_SIZE					( ( size_t ) 60000 )

 #define configMAX_TASK_NAME_LEN					( 8 )

 #define configUSE_TRACE_FACILITY				0

 #define configUSE_16_BIT_TICKS					0

 #define configIDLE_SHOULD_YIELD					1

 #define configUSE_MUTEXES						1

-#define configCHECK_FOR_STACK_OVERFLOW			3

+#define configCHECK_FOR_STACK_OVERFLOW			3 /* Three also checks the system/interrupt stack. */

 #define configQUEUE_REGISTRY_SIZE				0

 #define configUSE_RECURSIVE_MUTEXES				1

 #define configUSE_MALLOC_FAILED_HOOK			1

@@ -109,6 +109,13 @@
 #define configUSE_COUNTING_SEMAPHORES			1

 #define configGENERATE_RUN_TIME_STATS			0

 

+/* Enable support for Task based FPU operations. This will enable support for

+FPU context saving during switches only on architectures with hardware FPU.

+

+NOTE: This constant is defined in the project options as configurations are 

+provided that both enable and disable floating point support. 

+#define configUSE_TASK_FPU_SUPPORT				0 */

+

 /* Co-routine definitions. */

 #define configUSE_CO_ROUTINES					0

 #define configMAX_CO_ROUTINE_PRIORITIES			( 2 )

@@ -147,5 +154,5 @@
 	extern void vAssertCalled( const char * pcFile, unsigned long ulLine );

 	#define configASSERT( x ) if( ( x ) == 0  ) vAssertCalled( __FILE__, __LINE__ )

 #endif

-

+    

 #endif /* FREERTOS_CONFIG_H */

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk
index 44af099..6f00e67 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk
@@ -45,17 +45,17 @@
 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 @@
 	@${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 @@
 	@${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 @@
 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
 
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties
index e13ccd1..f03ec51 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties
@@ -1,9 +1,15 @@
 #

-#Wed Jun 24 18:51:30 BST 2015

-PIC32MZ2048_SK.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.34\\bin

-PIC32MZ2048_SK.languagetoolchain.version=1.34

-configurations-xml=68562b6839a3ad04af65579a10c3115b

-com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=47805b5596804b87cda41e61096929be

+#Thu Oct 15 18:30:50 BST 2015

+PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b

+PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin

+conf.ids=PIC32MZ2048_SK,PIC32MZ2048EF_SK_SOFT_FLOAT,PIC32MZ2048EF_SK_HARD_FLOAT

+configurations-xml=b89c82494ccd01c641a679d02e4a20c2

+PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin

+PIC32MZ2048EF_SK_SOFT_FLOAT.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b

+PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.version=1.40

+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=17a71d03e7d3823160f3e8681fc226e8

+PIC32MZ2048_SK.languagetoolchain.version=1.40

+PIC32MZ2048_SK.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin

+PIC32MZ2048EF_SK_HARD_FLOAT.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b

+PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.version=1.40

 host.platform=windows

-conf.ids=PIC32MZ2048_SK

-PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a29d9df60dd9a7849837c8f5ca17a004

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk
index da02e68..37740d5 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk
@@ -27,11 +27,11 @@
 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 @@
 # 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
 
 
 
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-local-PIC32MZ2048_SK.mk b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-local-PIC32MZ2048_SK.mk
index 82bb366..3a71c0b 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-local-PIC32MZ2048_SK.mk
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-local-PIC32MZ2048_SK.mk
@@ -15,23 +15,23 @@
 # $ 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
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-variables.mk b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-variables.mk
index 571e551..b0f26fb 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-variables.mk
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-variables.mk
@@ -11,3 +11,17 @@
 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
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml
index 011383d..43fc1c1 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml
@@ -63,6 +63,7 @@
       <itemPath>../timertest_isr.S</itemPath>

       <itemPath>../ISRTriggeredTask.c</itemPath>

       <itemPath>../ISRTriggeredTask_isr.S</itemPath>

+      <itemPath>../flop_mz.c</itemPath>

     </logicalFolder>

     <logicalFolder name="ExternalFiles"

                    displayName="Important Files"

@@ -74,6 +75,9 @@
     <Elem>../</Elem>

     <Elem>../../Common/Minimal</Elem>

     <Elem>../../../Source</Elem>

+    <Elem>../../Common/Full</Elem>

+    <Elem>../../../../FreeRTOS-MPLAB_X-PIC32MZ/GenericRecorderLibSrc</Elem>

+    <Elem>../../FreeRTOS-Plus-Trace</Elem>

   </sourceRootList>

   <projectmakefile>Makefile</projectmakefile>

   <confs>

@@ -85,7 +89,7 @@
         <targetPluginBoard></targetPluginBoard>

         <platformTool>PKOBSKDEPlatformTool</platformTool>

         <languageToolchain>XC32</languageToolchain>

-        <languageToolchainVersion>1.34</languageToolchainVersion>

+        <languageToolchainVersion>1.40</languageToolchainVersion>

         <platform>3</platform>

       </toolsSet>

       <compileType>

@@ -236,7 +240,6 @@
         <property key="memories.programmemory.end" value="0x1d1fffff"/>

         <property key="memories.programmemory.start" value="0x1d000000"/>

         <property key="memories.userotp" value="true"/>

-        <property key="poweroptions.powerenable" value="false"/>

         <property key="programoptions.donoteraseauxmem" value="false"/>

         <property key="programoptions.eraseb4program" value="true"/>

         <property key="programoptions.preservedataflash" value="false"/>

@@ -246,8 +249,903 @@
         <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

         <property key="programoptions.usehighvoltageonmclr" value="false"/>

         <property key="programoptions.uselvpprogramming" value="false"/>

-        <property key="voltagevalue" value="3.25"/>

       </PKOBSKDEPlatformTool>

+      <RealICEPlatformTool>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="CAN1" value="true"/>

+        <property key="CAN2" value="true"/>

+        <property key="CHANGE NOTICE A" value="true"/>

+        <property key="CHANGE NOTICE B" value="true"/>

+        <property key="CHANGE NOTICE C" value="true"/>

+        <property key="CHANGE NOTICE D" value="true"/>

+        <property key="CHANGE NOTICE E" value="true"/>

+        <property key="CHANGE NOTICE F" value="true"/>

+        <property key="CHANGE NOTICE G" value="true"/>

+        <property key="CHANGE NOTICE H" value="true"/>

+        <property key="CHANGE NOTICE J" value="true"/>

+        <property key="CHANGE NOTICE K" value="true"/>

+        <property key="COMPARATOR" value="true"/>

+        <property key="DMA" value="true"/>

+        <property key="ETHERNET CONTROLLER" value="true"/>

+        <property key="INPUT CAPTURE 1" value="true"/>

+        <property key="INPUT CAPTURE 2" value="true"/>

+        <property key="INPUT CAPTURE 3" value="true"/>

+        <property key="INPUT CAPTURE 4" value="true"/>

+        <property key="INPUT CAPTURE 5" value="true"/>

+        <property key="INPUT CAPTURE 6" value="true"/>

+        <property key="INPUT CAPTURE 7" value="true"/>

+        <property key="INPUT CAPTURE 8" value="true"/>

+        <property key="INPUT CAPTURE 9" value="true"/>

+        <property key="INTERRUPT CONTROL" value="true"/>

+        <property key="OUTPUT COMPARE 1" value="true"/>

+        <property key="OUTPUT COMPARE 2" value="true"/>

+        <property key="OUTPUT COMPARE 3" value="true"/>

+        <property key="OUTPUT COMPARE 4" value="true"/>

+        <property key="OUTPUT COMPARE 5" value="true"/>

+        <property key="OUTPUT COMPARE 6" value="true"/>

+        <property key="OUTPUT COMPARE 7" value="true"/>

+        <property key="OUTPUT COMPARE 8" value="true"/>

+        <property key="OUTPUT COMPARE 9" value="true"/>

+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>

+        <property key="REAL TIME CLOCK" value="true"/>

+        <property key="REFERENCE CLOCK1" value="true"/>

+        <property key="REFERENCE CLOCK2" value="true"/>

+        <property key="REFERENCE CLOCK3" value="true"/>

+        <property key="REFERENCE CLOCK4" value="true"/>

+        <property key="RIExTrigs.Five" value="OFF"/>

+        <property key="RIExTrigs.Four" value="OFF"/>

+        <property key="RIExTrigs.One" value="OFF"/>

+        <property key="RIExTrigs.Seven" value="OFF"/>

+        <property key="RIExTrigs.Six" value="OFF"/>

+        <property key="RIExTrigs.Three" value="OFF"/>

+        <property key="RIExTrigs.Two" value="OFF"/>

+        <property key="RIExTrigs.Zero" value="OFF"/>

+        <property key="SPI/I2S 1" value="true"/>

+        <property key="SPI/I2S 2" value="true"/>

+        <property key="SPI/I2S 3" value="true"/>

+        <property key="SPI/I2S 4" value="true"/>

+        <property key="SPI/I2S 5" value="true"/>

+        <property key="SPI/I2S 6" value="true"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="TIMER1" value="true"/>

+        <property key="TIMER2" value="true"/>

+        <property key="TIMER3" value="true"/>

+        <property key="TIMER4" value="true"/>

+        <property key="TIMER5" value="true"/>

+        <property key="TIMER6" value="true"/>

+        <property key="TIMER7" value="true"/>

+        <property key="TIMER8" value="true"/>

+        <property key="TIMER9" value="true"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="UART1" value="true"/>

+        <property key="UART2" value="true"/>

+        <property key="UART3" value="true"/>

+        <property key="UART4" value="true"/>

+        <property key="UART5" value="true"/>

+        <property key="UART6" value="true"/>

+        <property key="debugoptions.useswbreakpoints" value="false"/>

+        <property key="hwtoolclock.frcindebug" value="false"/>

+        <property key="hwtoolclock.instructionspeed" value="4"/>

+        <property key="hwtoolclock.units" value="mips"/>

+        <property key="memories.aux" value="false"/>

+        <property key="memories.bootflash" value="true"/>

+        <property key="memories.configurationmemory" value="true"/>

+        <property key="memories.configurationmemory2" value="true"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="true"/>

+        <property key="memories.flashdata" value="true"/>

+        <property key="memories.id" value="true"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x1d1fffff"/>

+        <property key="memories.programmemory.partition2" value="true"/>

+        <property key="memories.programmemory.partition2.end"

+                  value="${memories.programmemory.partition2.end.value}"/>

+        <property key="memories.programmemory.partition2.start"

+                  value="${memories.programmemory.partition2.start.value}"/>

+        <property key="memories.programmemory.start" value="0x1d000000"/>

+        <property key="poweroptions.powerenable" value="false"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

+        <property key="programoptions.preserveuserid" value="false"/>

+        <property key="programoptions.programcalmem" value="false"/>

+        <property key="programoptions.programuserotp" value="false"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+        <property key="tracecontrol.include.timestamp" value="summarydataenabled"/>

+        <property key="tracecontrol.select" value="0"/>

+        <property key="tracecontrol.stallontracebufferfull" value="false"/>

+        <property key="tracecontrol.tracebufmax" value="546000"/>

+        <property key="tracecontrol.tracefile" value="defmplabxtrace.log"/>

+        <property key="tracecontrol.tracefilemax" value="10000000"/>

+        <property key="voltagevalue" value="3.25"/>

+      </RealICEPlatformTool>

+    </conf>

+    <conf name="PIC32MZ2048EF_SK_SOFT_FLOAT" type="2">

+      <toolsSet>

+        <developmentServer>localhost</developmentServer>

+        <targetDevice>PIC32MZ2048EFH144</targetDevice>

+        <targetHeader></targetHeader>

+        <targetPluginBoard></targetPluginBoard>

+        <platformTool>PKOBSKDEPlatformTool</platformTool>

+        <languageToolchain>XC32</languageToolchain>

+        <languageToolchainVersion>1.40</languageToolchainVersion>

+        <platform>3</platform>

+      </toolsSet>

+      <compileType>

+        <linkerTool>

+          <linkerLibItems>

+          </linkerLibItems>

+        </linkerTool>

+        <archiverTool>

+        </archiverTool>

+        <loading>

+          <useAlternateLoadableFile>false</useAlternateLoadableFile>

+          <parseOnProdLoad>true</parseOnProdLoad>

+          <alternateLoadableFile></alternateLoadableFile>

+        </loading>

+      </compileType>

+      <makeCustomizationType>

+        <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>

+        <makeCustomizationPreStep></makeCustomizationPreStep>

+        <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>

+        <makeCustomizationPostStep></makeCustomizationPostStep>

+        <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>

+        <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>

+        <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>

+      </makeCustomizationType>

+      <C32>

+        <property key="additional-warnings" value="true"/>

+        <property key="enable-app-io" value="false"/>

+        <property key="enable-omit-frame-pointer" value="false"/>

+        <property key="enable-symbols" value="true"/>

+        <property key="enable-unroll-loops" value="false"/>

+        <property key="exclude-floating-point" value="false"/>

+        <property key="extra-include-directories"

+                  value="../../../Source/include;../../../Source/portable/MPLAB/PIC32MZ;../../Common/include;../"/>

+        <property key="generate-16-bit-code" value="false"/>

+        <property key="generate-micro-compressed-code" value="false"/>

+        <property key="isolate-each-function" value="false"/>

+        <property key="make-warnings-into-errors" value="false"/>

+        <property key="optimization-level" value=""/>

+        <property key="place-data-into-section" value="false"/>

+        <property key="post-instruction-scheduling" value="default"/>

+        <property key="pre-instruction-scheduling" value="default"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="strict-ansi" value="false"/>

+        <property key="support-ansi" value="false"/>

+        <property key="use-cci" value="false"/>

+        <property key="use-iar" value="false"/>

+        <property key="use-indirect-calls" value="false"/>

+        <appendMe value="-Wall -Wextra -DconfigUSE_TASK_FPU_SUPPORT=0"/>

+      </C32>

+      <C32-AR>

+        <property key="additional-options-chop-files" value="false"/>

+      </C32-AR>

+      <C32-AS>

+        <property key="assembler-symbols" value=""/>

+        <property key="enable-symbols" value="true"/>

+        <property key="exclude-floating-point-library" value="false"/>

+        <property key="expand-macros" value="false"/>

+        <property key="extra-include-directories-for-assembler" value=""/>

+        <property key="extra-include-directories-for-preprocessor" value=""/>

+        <property key="false-conditionals" value="false"/>

+        <property key="keep-locals" value="false"/>

+        <property key="list-assembly" value="false"/>

+        <property key="list-source" value="false"/>

+        <property key="list-symbols" value="false"/>

+        <property key="oXC32asm-list-to-file" value="false"/>

+        <property key="omit-debug-dirs" value="false"/>

+        <property key="omit-forms" value="false"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="warning-level" value=""/>

+        <appendMe value="-I../../../Source/portable/MPLAB/PIC32MZ -I../"/>

+      </C32-AS>

+      <C32-LD>

+        <property key="additional-options-use-response-files" value="false"/>

+        <property key="enable-check-sections" value="false"/>

+        <property key="exclude-floating-point-library" value="false"/>

+        <property key="exclude-standard-libraries" value="false"/>

+        <property key="extra-lib-directories" value=""/>

+        <property key="fill-flash-options-addr" value=""/>

+        <property key="fill-flash-options-const" value=""/>

+        <property key="fill-flash-options-how" value="0"/>

+        <property key="fill-flash-options-inc-const" value="1"/>

+        <property key="fill-flash-options-increment" value=""/>

+        <property key="fill-flash-options-seq" value=""/>

+        <property key="fill-flash-options-what" value="0"/>

+        <property key="generate-16-bit-code" value="false"/>

+        <property key="generate-cross-reference-file" value="false"/>

+        <property key="generate-micro-compressed-code" value="false"/>

+        <property key="heap-size" value="0"/>

+        <property key="input-libraries" value=""/>

+        <property key="linker-symbols" value=""/>

+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>

+        <property key="no-startup-files" value="false"/>

+        <property key="oXC32ld-extra-opts" value=""/>

+        <property key="optimization-level" value=""/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="remove-unused-sections" value="false"/>

+        <property key="report-memory-usage" value="false"/>

+        <property key="stack-size" value=""/>

+        <property key="symbol-stripping" value=""/>

+        <property key="trace-symbols" value=""/>

+        <property key="warn-section-align" value="false"/>

+      </C32-LD>

+      <C32CPP>

+        <property key="additional-warnings" value="false"/>

+        <property key="check-new" value="false"/>

+        <property key="eh-specs" value="true"/>

+        <property key="enable-app-io" value="false"/>

+        <property key="enable-omit-frame-pointer" value="false"/>

+        <property key="enable-symbols" value="true"/>

+        <property key="enable-unroll-loops" value="false"/>

+        <property key="exceptions" value="true"/>

+        <property key="exclude-floating-point" value="false"/>

+        <property key="extra-include-directories" value=""/>

+        <property key="generate-16-bit-code" value="false"/>

+        <property key="generate-micro-compressed-code" value="false"/>

+        <property key="isolate-each-function" value="false"/>

+        <property key="make-warnings-into-errors" value="false"/>

+        <property key="optimization-level" value=""/>

+        <property key="place-data-into-section" value="false"/>

+        <property key="post-instruction-scheduling" value="default"/>

+        <property key="pre-instruction-scheduling" value="default"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="rtti" value="true"/>

+        <property key="strict-ansi" value="false"/>

+        <property key="use-cci" value="false"/>

+        <property key="use-iar" value="false"/>

+        <property key="use-indirect-calls" value="false"/>

+      </C32CPP>

+      <C32Global>

+        <property key="common-include-directories" value=""/>

+        <property key="gp-relative-option" value=""/>

+        <property key="legacy-libc" value="false"/>

+        <property key="relaxed-math" value="false"/>

+        <property key="save-temps" value="false"/>

+        <property key="wpo-lto" value="false"/>

+        <appendMe value="-msoft-float"/>

+      </C32Global>

+      <ICD3PlatformTool>

+        <property key="ADC" value="true"/>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="CAN1" value="true"/>

+        <property key="CAN2" value="true"/>

+        <property key="CHANGE NOTICE A" value="true"/>

+        <property key="CHANGE NOTICE B" value="true"/>

+        <property key="CHANGE NOTICE C" value="true"/>

+        <property key="CHANGE NOTICE D" value="true"/>

+        <property key="CHANGE NOTICE E" value="true"/>

+        <property key="CHANGE NOTICE F" value="true"/>

+        <property key="CHANGE NOTICE G" value="true"/>

+        <property key="CHANGE NOTICE H" value="true"/>

+        <property key="CHANGE NOTICE J" value="true"/>

+        <property key="CHANGE NOTICE K" value="true"/>

+        <property key="COMPARATOR" value="true"/>

+        <property key="DMA" value="true"/>

+        <property key="ETHERNET CONTROLLER" value="true"/>

+        <property key="INPUT CAPTURE 1" value="true"/>

+        <property key="INPUT CAPTURE 2" value="true"/>

+        <property key="INPUT CAPTURE 3" value="true"/>

+        <property key="INPUT CAPTURE 4" value="true"/>

+        <property key="INPUT CAPTURE 5" value="true"/>

+        <property key="INPUT CAPTURE 6" value="true"/>

+        <property key="INPUT CAPTURE 7" value="true"/>

+        <property key="INPUT CAPTURE 8" value="true"/>

+        <property key="INPUT CAPTURE 9" value="true"/>

+        <property key="INTERRUPT CONTROL" value="true"/>

+        <property key="OUTPUT COMPARE 1" value="true"/>

+        <property key="OUTPUT COMPARE 2" value="true"/>

+        <property key="OUTPUT COMPARE 3" value="true"/>

+        <property key="OUTPUT COMPARE 4" value="true"/>

+        <property key="OUTPUT COMPARE 5" value="true"/>

+        <property key="OUTPUT COMPARE 6" value="true"/>

+        <property key="OUTPUT COMPARE 7" value="true"/>

+        <property key="OUTPUT COMPARE 8" value="true"/>

+        <property key="OUTPUT COMPARE 9" value="true"/>

+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>

+        <property key="REAL TIME CLOCK" value="true"/>

+        <property key="REFERENCE CLOCK1" value="true"/>

+        <property key="REFERENCE CLOCK2" value="true"/>

+        <property key="REFERENCE CLOCK3" value="true"/>

+        <property key="REFERENCE CLOCK4" value="true"/>

+        <property key="SPI/I2S 1" value="true"/>

+        <property key="SPI/I2S 2" value="true"/>

+        <property key="SPI/I2S 3" value="true"/>

+        <property key="SPI/I2S 4" value="true"/>

+        <property key="SPI/I2S 5" value="true"/>

+        <property key="SPI/I2S 6" value="true"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="TIMER1" value="true"/>

+        <property key="TIMER2" value="true"/>

+        <property key="TIMER3" value="true"/>

+        <property key="TIMER4" value="true"/>

+        <property key="TIMER5" value="true"/>

+        <property key="TIMER6" value="true"/>

+        <property key="TIMER7" value="true"/>

+        <property key="TIMER8" value="true"/>

+        <property key="TIMER9" value="true"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="UART1" value="true"/>

+        <property key="UART2" value="true"/>

+        <property key="UART3" value="true"/>

+        <property key="UART4" value="true"/>

+        <property key="UART5" value="true"/>

+        <property key="UART6" value="true"/>

+        <property key="debugoptions.useswbreakpoints" value="false"/>

+        <property key="hwtoolclock.frcindebug" value="false"/>

+        <property key="memories.aux" value="false"/>

+        <property key="memories.bootflash" value="false"/>

+        <property key="memories.configurationmemory" value="true"/>

+        <property key="memories.configurationmemory2" value="true"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="true"/>

+        <property key="memories.flashdata" value="true"/>

+        <property key="memories.id" value="true"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x1d1fffff"/>

+        <property key="memories.programmemory.partition2" value="true"/>

+        <property key="memories.programmemory.partition2.end"

+                  value="${memories.programmemory.partition2.end.value}"/>

+        <property key="memories.programmemory.partition2.start"

+                  value="${memories.programmemory.partition2.start.value}"/>

+        <property key="memories.programmemory.start" value="0x1d000000"/>

+        <property key="poweroptions.powerenable" value="false"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

+        <property key="programoptions.preserveuserid" value="false"/>

+        <property key="programoptions.programcalmem" value="false"/>

+        <property key="programoptions.programuserotp" value="false"/>

+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+        <property key="voltagevalue" value="3.25"/>

+      </ICD3PlatformTool>

+      <PKOBSKDEPlatformTool>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="firmware.download.all" value="false"/>

+        <property key="memories.configurationmemory" value="false"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="false"/>

+        <property key="memories.id" value="false"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x1d1fffff"/>

+        <property key="memories.programmemory.start" value="0x1d000000"/>

+        <property key="memories.userotp" value="true"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x1d0007ff"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+      </PKOBSKDEPlatformTool>

+      <RealICEPlatformTool>

+        <property key="ADC" value="true"/>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="CAN1" value="true"/>

+        <property key="CAN2" value="true"/>

+        <property key="CHANGE NOTICE A" value="true"/>

+        <property key="CHANGE NOTICE B" value="true"/>

+        <property key="CHANGE NOTICE C" value="true"/>

+        <property key="CHANGE NOTICE D" value="true"/>

+        <property key="CHANGE NOTICE E" value="true"/>

+        <property key="CHANGE NOTICE F" value="true"/>

+        <property key="CHANGE NOTICE G" value="true"/>

+        <property key="CHANGE NOTICE H" value="true"/>

+        <property key="CHANGE NOTICE J" value="true"/>

+        <property key="CHANGE NOTICE K" value="true"/>

+        <property key="COMPARATOR" value="true"/>

+        <property key="DMA" value="true"/>

+        <property key="ETHERNET CONTROLLER" value="true"/>

+        <property key="INPUT CAPTURE 1" value="true"/>

+        <property key="INPUT CAPTURE 2" value="true"/>

+        <property key="INPUT CAPTURE 3" value="true"/>

+        <property key="INPUT CAPTURE 4" value="true"/>

+        <property key="INPUT CAPTURE 5" value="true"/>

+        <property key="INPUT CAPTURE 6" value="true"/>

+        <property key="INPUT CAPTURE 7" value="true"/>

+        <property key="INPUT CAPTURE 8" value="true"/>

+        <property key="INPUT CAPTURE 9" value="true"/>

+        <property key="INTERRUPT CONTROL" value="true"/>

+        <property key="OUTPUT COMPARE 1" value="true"/>

+        <property key="OUTPUT COMPARE 2" value="true"/>

+        <property key="OUTPUT COMPARE 3" value="true"/>

+        <property key="OUTPUT COMPARE 4" value="true"/>

+        <property key="OUTPUT COMPARE 5" value="true"/>

+        <property key="OUTPUT COMPARE 6" value="true"/>

+        <property key="OUTPUT COMPARE 7" value="true"/>

+        <property key="OUTPUT COMPARE 8" value="true"/>

+        <property key="OUTPUT COMPARE 9" value="true"/>

+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>

+        <property key="REAL TIME CLOCK" value="true"/>

+        <property key="REFERENCE CLOCK1" value="true"/>

+        <property key="REFERENCE CLOCK2" value="true"/>

+        <property key="REFERENCE CLOCK3" value="true"/>

+        <property key="REFERENCE CLOCK4" value="true"/>

+        <property key="RIExTrigs.Five" value="OFF"/>

+        <property key="RIExTrigs.Four" value="OFF"/>

+        <property key="RIExTrigs.One" value="OFF"/>

+        <property key="RIExTrigs.Seven" value="OFF"/>

+        <property key="RIExTrigs.Six" value="OFF"/>

+        <property key="RIExTrigs.Three" value="OFF"/>

+        <property key="RIExTrigs.Two" value="OFF"/>

+        <property key="RIExTrigs.Zero" value="OFF"/>

+        <property key="SPI/I2S 1" value="true"/>

+        <property key="SPI/I2S 2" value="true"/>

+        <property key="SPI/I2S 3" value="true"/>

+        <property key="SPI/I2S 4" value="true"/>

+        <property key="SPI/I2S 5" value="true"/>

+        <property key="SPI/I2S 6" value="true"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="TIMER1" value="true"/>

+        <property key="TIMER2" value="true"/>

+        <property key="TIMER3" value="true"/>

+        <property key="TIMER4" value="true"/>

+        <property key="TIMER5" value="true"/>

+        <property key="TIMER6" value="true"/>

+        <property key="TIMER7" value="true"/>

+        <property key="TIMER8" value="true"/>

+        <property key="TIMER9" value="true"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="UART1" value="true"/>

+        <property key="UART2" value="true"/>

+        <property key="UART3" value="true"/>

+        <property key="UART4" value="true"/>

+        <property key="UART5" value="true"/>

+        <property key="UART6" value="true"/>

+        <property key="debugoptions.useswbreakpoints" value="false"/>

+        <property key="hwtoolclock.frcindebug" value="false"/>

+        <property key="hwtoolclock.instructionspeed" value="4"/>

+        <property key="hwtoolclock.units" value="mips"/>

+        <property key="memories.aux" value="false"/>

+        <property key="memories.bootflash" value="true"/>

+        <property key="memories.configurationmemory" value="true"/>

+        <property key="memories.configurationmemory2" value="true"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="true"/>

+        <property key="memories.flashdata" value="true"/>

+        <property key="memories.id" value="true"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x1d1fffff"/>

+        <property key="memories.programmemory.partition2" value="true"/>

+        <property key="memories.programmemory.partition2.end"

+                  value="${memories.programmemory.partition2.end.value}"/>

+        <property key="memories.programmemory.partition2.start"

+                  value="${memories.programmemory.partition2.start.value}"/>

+        <property key="memories.programmemory.start" value="0x1d000000"/>

+        <property key="poweroptions.powerenable" value="false"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

+        <property key="programoptions.preserveuserid" value="false"/>

+        <property key="programoptions.programcalmem" value="false"/>

+        <property key="programoptions.programuserotp" value="false"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+        <property key="tracecontrol.include.timestamp" value="summarydataenabled"/>

+        <property key="tracecontrol.select" value="0"/>

+        <property key="tracecontrol.stallontracebufferfull" value="false"/>

+        <property key="tracecontrol.tracebufmax" value="54600"/>

+        <property key="tracecontrol.tracefile" value="defmplabxtrace.log"/>

+        <property key="tracecontrol.tracefilemax" value="400000000"/>

+        <property key="voltagevalue" value="3.25"/>

+      </RealICEPlatformTool>

+    </conf>

+    <conf name="PIC32MZ2048EF_SK_HARD_FLOAT" type="2">

+      <toolsSet>

+        <developmentServer>localhost</developmentServer>

+        <targetDevice>PIC32MZ2048EFH144</targetDevice>

+        <targetHeader></targetHeader>

+        <targetPluginBoard></targetPluginBoard>

+        <platformTool>PKOBSKDEPlatformTool</platformTool>

+        <languageToolchain>XC32</languageToolchain>

+        <languageToolchainVersion>1.40</languageToolchainVersion>

+        <platform>3</platform>

+      </toolsSet>

+      <compileType>

+        <linkerTool>

+          <linkerLibItems>

+          </linkerLibItems>

+        </linkerTool>

+        <archiverTool>

+        </archiverTool>

+        <loading>

+          <useAlternateLoadableFile>false</useAlternateLoadableFile>

+          <parseOnProdLoad>true</parseOnProdLoad>

+          <alternateLoadableFile></alternateLoadableFile>

+        </loading>

+      </compileType>

+      <makeCustomizationType>

+        <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>

+        <makeCustomizationPreStep></makeCustomizationPreStep>

+        <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>

+        <makeCustomizationPostStep></makeCustomizationPostStep>

+        <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>

+        <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>

+        <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>

+      </makeCustomizationType>

+      <C32>

+        <property key="additional-warnings" value="true"/>

+        <property key="enable-app-io" value="false"/>

+        <property key="enable-omit-frame-pointer" value="false"/>

+        <property key="enable-symbols" value="true"/>

+        <property key="enable-unroll-loops" value="false"/>

+        <property key="exclude-floating-point" value="false"/>

+        <property key="extra-include-directories"

+                  value="../../../Source/include;../../../Source/portable/MPLAB/PIC32MZ;../../Common/include;../"/>

+        <property key="generate-16-bit-code" value="false"/>

+        <property key="generate-micro-compressed-code" value="false"/>

+        <property key="isolate-each-function" value="false"/>

+        <property key="make-warnings-into-errors" value="false"/>

+        <property key="optimization-level" value=""/>

+        <property key="place-data-into-section" value="false"/>

+        <property key="post-instruction-scheduling" value="default"/>

+        <property key="pre-instruction-scheduling" value="default"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="strict-ansi" value="false"/>

+        <property key="support-ansi" value="false"/>

+        <property key="use-cci" value="false"/>

+        <property key="use-iar" value="false"/>

+        <property key="use-indirect-calls" value="false"/>

+        <appendMe value="-Wall -Wextra -DconfigUSE_TASK_FPU_SUPPORT=1"/>

+      </C32>

+      <C32-AR>

+        <property key="additional-options-chop-files" value="false"/>

+      </C32-AR>

+      <C32-AS>

+        <property key="assembler-symbols" value=""/>

+        <property key="enable-symbols" value="true"/>

+        <property key="exclude-floating-point-library" value="false"/>

+        <property key="expand-macros" value="false"/>

+        <property key="extra-include-directories-for-assembler" value=""/>

+        <property key="extra-include-directories-for-preprocessor" value=""/>

+        <property key="false-conditionals" value="false"/>

+        <property key="keep-locals" value="false"/>

+        <property key="list-assembly" value="false"/>

+        <property key="list-source" value="false"/>

+        <property key="list-symbols" value="false"/>

+        <property key="oXC32asm-list-to-file" value="false"/>

+        <property key="omit-debug-dirs" value="false"/>

+        <property key="omit-forms" value="false"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="warning-level" value=""/>

+        <appendMe value="-I../../../Source/portable/MPLAB/PIC32MZ -I../ -DconfigUSE_TASK_FPU_SUPPORT=1"/>

+      </C32-AS>

+      <C32-LD>

+        <property key="additional-options-use-response-files" value="false"/>

+        <property key="enable-check-sections" value="false"/>

+        <property key="exclude-floating-point-library" value="false"/>

+        <property key="exclude-standard-libraries" value="false"/>

+        <property key="extra-lib-directories" value=""/>

+        <property key="fill-flash-options-addr" value=""/>

+        <property key="fill-flash-options-const" value=""/>

+        <property key="fill-flash-options-how" value="0"/>

+        <property key="fill-flash-options-inc-const" value="1"/>

+        <property key="fill-flash-options-increment" value=""/>

+        <property key="fill-flash-options-seq" value=""/>

+        <property key="fill-flash-options-what" value="0"/>

+        <property key="generate-16-bit-code" value="false"/>

+        <property key="generate-cross-reference-file" value="false"/>

+        <property key="generate-micro-compressed-code" value="false"/>

+        <property key="heap-size" value="0"/>

+        <property key="input-libraries" value=""/>

+        <property key="linker-symbols" value=""/>

+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>

+        <property key="no-startup-files" value="false"/>

+        <property key="oXC32ld-extra-opts" value=""/>

+        <property key="optimization-level" value=""/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="remove-unused-sections" value="false"/>

+        <property key="report-memory-usage" value="false"/>

+        <property key="stack-size" value=""/>

+        <property key="symbol-stripping" value=""/>

+        <property key="trace-symbols" value=""/>

+        <property key="warn-section-align" value="false"/>

+      </C32-LD>

+      <C32CPP>

+        <property key="additional-warnings" value="false"/>

+        <property key="check-new" value="false"/>

+        <property key="eh-specs" value="true"/>

+        <property key="enable-app-io" value="false"/>

+        <property key="enable-omit-frame-pointer" value="false"/>

+        <property key="enable-symbols" value="true"/>

+        <property key="enable-unroll-loops" value="false"/>

+        <property key="exceptions" value="true"/>

+        <property key="exclude-floating-point" value="false"/>

+        <property key="extra-include-directories" value=""/>

+        <property key="generate-16-bit-code" value="false"/>

+        <property key="generate-micro-compressed-code" value="false"/>

+        <property key="isolate-each-function" value="false"/>

+        <property key="make-warnings-into-errors" value="false"/>

+        <property key="optimization-level" value=""/>

+        <property key="place-data-into-section" value="false"/>

+        <property key="post-instruction-scheduling" value="default"/>

+        <property key="pre-instruction-scheduling" value="default"/>

+        <property key="preprocessor-macros" value=""/>

+        <property key="rtti" value="true"/>

+        <property key="strict-ansi" value="false"/>

+        <property key="use-cci" value="false"/>

+        <property key="use-iar" value="false"/>

+        <property key="use-indirect-calls" value="false"/>

+      </C32CPP>

+      <C32Global>

+        <property key="common-include-directories" value=""/>

+        <property key="gp-relative-option" value=""/>

+        <property key="legacy-libc" value="false"/>

+        <property key="relaxed-math" value="false"/>

+        <property key="save-temps" value="false"/>

+        <property key="wpo-lto" value="false"/>

+      </C32Global>

+      <ICD3PlatformTool>

+        <property key="ADC" value="true"/>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="CAN1" value="true"/>

+        <property key="CAN2" value="true"/>

+        <property key="CHANGE NOTICE A" value="true"/>

+        <property key="CHANGE NOTICE B" value="true"/>

+        <property key="CHANGE NOTICE C" value="true"/>

+        <property key="CHANGE NOTICE D" value="true"/>

+        <property key="CHANGE NOTICE E" value="true"/>

+        <property key="CHANGE NOTICE F" value="true"/>

+        <property key="CHANGE NOTICE G" value="true"/>

+        <property key="CHANGE NOTICE H" value="true"/>

+        <property key="CHANGE NOTICE J" value="true"/>

+        <property key="CHANGE NOTICE K" value="true"/>

+        <property key="COMPARATOR" value="true"/>

+        <property key="DMA" value="true"/>

+        <property key="ETHERNET CONTROLLER" value="true"/>

+        <property key="INPUT CAPTURE 1" value="true"/>

+        <property key="INPUT CAPTURE 2" value="true"/>

+        <property key="INPUT CAPTURE 3" value="true"/>

+        <property key="INPUT CAPTURE 4" value="true"/>

+        <property key="INPUT CAPTURE 5" value="true"/>

+        <property key="INPUT CAPTURE 6" value="true"/>

+        <property key="INPUT CAPTURE 7" value="true"/>

+        <property key="INPUT CAPTURE 8" value="true"/>

+        <property key="INPUT CAPTURE 9" value="true"/>

+        <property key="INTERRUPT CONTROL" value="true"/>

+        <property key="OUTPUT COMPARE 1" value="true"/>

+        <property key="OUTPUT COMPARE 2" value="true"/>

+        <property key="OUTPUT COMPARE 3" value="true"/>

+        <property key="OUTPUT COMPARE 4" value="true"/>

+        <property key="OUTPUT COMPARE 5" value="true"/>

+        <property key="OUTPUT COMPARE 6" value="true"/>

+        <property key="OUTPUT COMPARE 7" value="true"/>

+        <property key="OUTPUT COMPARE 8" value="true"/>

+        <property key="OUTPUT COMPARE 9" value="true"/>

+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>

+        <property key="REAL TIME CLOCK" value="true"/>

+        <property key="REFERENCE CLOCK1" value="true"/>

+        <property key="REFERENCE CLOCK2" value="true"/>

+        <property key="REFERENCE CLOCK3" value="true"/>

+        <property key="REFERENCE CLOCK4" value="true"/>

+        <property key="SPI/I2S 1" value="true"/>

+        <property key="SPI/I2S 2" value="true"/>

+        <property key="SPI/I2S 3" value="true"/>

+        <property key="SPI/I2S 4" value="true"/>

+        <property key="SPI/I2S 5" value="true"/>

+        <property key="SPI/I2S 6" value="true"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="TIMER1" value="true"/>

+        <property key="TIMER2" value="true"/>

+        <property key="TIMER3" value="true"/>

+        <property key="TIMER4" value="true"/>

+        <property key="TIMER5" value="true"/>

+        <property key="TIMER6" value="true"/>

+        <property key="TIMER7" value="true"/>

+        <property key="TIMER8" value="true"/>

+        <property key="TIMER9" value="true"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="UART1" value="true"/>

+        <property key="UART2" value="true"/>

+        <property key="UART3" value="true"/>

+        <property key="UART4" value="true"/>

+        <property key="UART5" value="true"/>

+        <property key="UART6" value="true"/>

+        <property key="debugoptions.useswbreakpoints" value="false"/>

+        <property key="hwtoolclock.frcindebug" value="false"/>

+        <property key="memories.aux" value="false"/>

+        <property key="memories.bootflash" value="false"/>

+        <property key="memories.configurationmemory" value="true"/>

+        <property key="memories.configurationmemory2" value="true"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="true"/>

+        <property key="memories.flashdata" value="true"/>

+        <property key="memories.id" value="true"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x1d1fffff"/>

+        <property key="memories.programmemory.partition2" value="true"/>

+        <property key="memories.programmemory.partition2.end"

+                  value="${memories.programmemory.partition2.end.value}"/>

+        <property key="memories.programmemory.partition2.start"

+                  value="${memories.programmemory.partition2.start.value}"/>

+        <property key="memories.programmemory.start" value="0x1d000000"/>

+        <property key="poweroptions.powerenable" value="false"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

+        <property key="programoptions.preserveuserid" value="false"/>

+        <property key="programoptions.programcalmem" value="false"/>

+        <property key="programoptions.programuserotp" value="false"/>

+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+        <property key="voltagevalue" value="3.25"/>

+      </ICD3PlatformTool>

+      <PKOBSKDEPlatformTool>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="memories.configurationmemory" value="false"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="false"/>

+        <property key="memories.id" value="false"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x1d1fffff"/>

+        <property key="memories.programmemory.start" value="0x1d000000"/>

+        <property key="memories.userotp" value="true"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x1d0007ff"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+      </PKOBSKDEPlatformTool>

+      <RealICEPlatformTool>

+        <property key="ADC" value="true"/>

+        <property key="AutoSelectMemRanges" value="auto"/>

+        <property key="CAN1" value="true"/>

+        <property key="CAN2" value="true"/>

+        <property key="CHANGE NOTICE A" value="true"/>

+        <property key="CHANGE NOTICE B" value="true"/>

+        <property key="CHANGE NOTICE C" value="true"/>

+        <property key="CHANGE NOTICE D" value="true"/>

+        <property key="CHANGE NOTICE E" value="true"/>

+        <property key="CHANGE NOTICE F" value="true"/>

+        <property key="CHANGE NOTICE G" value="true"/>

+        <property key="CHANGE NOTICE H" value="true"/>

+        <property key="CHANGE NOTICE J" value="true"/>

+        <property key="CHANGE NOTICE K" value="true"/>

+        <property key="COMPARATOR" value="true"/>

+        <property key="DMA" value="true"/>

+        <property key="ETHERNET CONTROLLER" value="true"/>

+        <property key="INPUT CAPTURE 1" value="true"/>

+        <property key="INPUT CAPTURE 2" value="true"/>

+        <property key="INPUT CAPTURE 3" value="true"/>

+        <property key="INPUT CAPTURE 4" value="true"/>

+        <property key="INPUT CAPTURE 5" value="true"/>

+        <property key="INPUT CAPTURE 6" value="true"/>

+        <property key="INPUT CAPTURE 7" value="true"/>

+        <property key="INPUT CAPTURE 8" value="true"/>

+        <property key="INPUT CAPTURE 9" value="true"/>

+        <property key="INTERRUPT CONTROL" value="true"/>

+        <property key="OUTPUT COMPARE 1" value="true"/>

+        <property key="OUTPUT COMPARE 2" value="true"/>

+        <property key="OUTPUT COMPARE 3" value="true"/>

+        <property key="OUTPUT COMPARE 4" value="true"/>

+        <property key="OUTPUT COMPARE 5" value="true"/>

+        <property key="OUTPUT COMPARE 6" value="true"/>

+        <property key="OUTPUT COMPARE 7" value="true"/>

+        <property key="OUTPUT COMPARE 8" value="true"/>

+        <property key="OUTPUT COMPARE 9" value="true"/>

+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>

+        <property key="REAL TIME CLOCK" value="true"/>

+        <property key="REFERENCE CLOCK1" value="true"/>

+        <property key="REFERENCE CLOCK2" value="true"/>

+        <property key="REFERENCE CLOCK3" value="true"/>

+        <property key="REFERENCE CLOCK4" value="true"/>

+        <property key="RIExTrigs.Five" value="OFF"/>

+        <property key="RIExTrigs.Four" value="OFF"/>

+        <property key="RIExTrigs.One" value="OFF"/>

+        <property key="RIExTrigs.Seven" value="OFF"/>

+        <property key="RIExTrigs.Six" value="OFF"/>

+        <property key="RIExTrigs.Three" value="OFF"/>

+        <property key="RIExTrigs.Two" value="OFF"/>

+        <property key="RIExTrigs.Zero" value="OFF"/>

+        <property key="SPI/I2S 1" value="true"/>

+        <property key="SPI/I2S 2" value="true"/>

+        <property key="SPI/I2S 3" value="true"/>

+        <property key="SPI/I2S 4" value="true"/>

+        <property key="SPI/I2S 5" value="true"/>

+        <property key="SPI/I2S 6" value="true"/>

+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>

+        <property key="TIMER1" value="true"/>

+        <property key="TIMER2" value="true"/>

+        <property key="TIMER3" value="true"/>

+        <property key="TIMER4" value="true"/>

+        <property key="TIMER5" value="true"/>

+        <property key="TIMER6" value="true"/>

+        <property key="TIMER7" value="true"/>

+        <property key="TIMER8" value="true"/>

+        <property key="TIMER9" value="true"/>

+        <property key="ToolFirmwareFilePath"

+                  value="Press to browse for a specific firmware version"/>

+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

+        <property key="UART1" value="true"/>

+        <property key="UART2" value="true"/>

+        <property key="UART3" value="true"/>

+        <property key="UART4" value="true"/>

+        <property key="UART5" value="true"/>

+        <property key="UART6" value="true"/>

+        <property key="debugoptions.useswbreakpoints" value="false"/>

+        <property key="hwtoolclock.frcindebug" value="false"/>

+        <property key="hwtoolclock.instructionspeed" value="4"/>

+        <property key="hwtoolclock.units" value="mips"/>

+        <property key="memories.aux" value="false"/>

+        <property key="memories.bootflash" value="true"/>

+        <property key="memories.configurationmemory" value="true"/>

+        <property key="memories.configurationmemory2" value="true"/>

+        <property key="memories.dataflash" value="true"/>

+        <property key="memories.eeprom" value="true"/>

+        <property key="memories.flashdata" value="true"/>

+        <property key="memories.id" value="true"/>

+        <property key="memories.programmemory" value="true"/>

+        <property key="memories.programmemory.end" value="0x1d1fffff"/>

+        <property key="memories.programmemory.partition2" value="true"/>

+        <property key="memories.programmemory.partition2.end"

+                  value="${memories.programmemory.partition2.end.value}"/>

+        <property key="memories.programmemory.partition2.start"

+                  value="${memories.programmemory.partition2.start.value}"/>

+        <property key="memories.programmemory.start" value="0x1d000000"/>

+        <property key="poweroptions.powerenable" value="false"/>

+        <property key="programoptions.donoteraseauxmem" value="false"/>

+        <property key="programoptions.eraseb4program" value="true"/>

+        <property key="programoptions.preservedataflash" value="false"/>

+        <property key="programoptions.preserveeeprom" value="false"/>

+        <property key="programoptions.preserveprogramrange" value="false"/>

+        <property key="programoptions.preserveprogramrange.end" value="0x1d1fffff"/>

+        <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>

+        <property key="programoptions.preserveuserid" value="false"/>

+        <property key="programoptions.programcalmem" value="false"/>

+        <property key="programoptions.programuserotp" value="false"/>

+        <property key="programoptions.usehighvoltageonmclr" value="false"/>

+        <property key="programoptions.uselvpprogramming" value="false"/>

+        <property key="tracecontrol.include.timestamp" value="summarydataenabled"/>

+        <property key="tracecontrol.select" value="0"/>

+        <property key="tracecontrol.stallontracebufferfull" value="false"/>

+        <property key="tracecontrol.tracebufmax" value="54600"/>

+        <property key="tracecontrol.tracefile" value="defmplabxtrace.log"/>

+        <property key="tracecontrol.tracefilemax" value="400000000"/>

+        <property key="voltagevalue" value="3.25"/>

+      </RealICEPlatformTool>

     </conf>

   </confs>

 </configurationDescriptor>

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml
index e7c4e37..a084b2b 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml
@@ -1,11 +1,47 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <configurationDescriptor version="62">

   <projectmakefile>Makefile</projectmakefile>

-  <defaultConf>0</defaultConf>

+  <defaultConf>2</defaultConf>

   <confs>

     <conf name="PIC32MZ2048_SK" type="2">

-      <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>

-      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.34\bin</languageToolchainDir>

+      <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>

+      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.40\bin</languageToolchainDir>

+      <mdbdebugger version="1">

+        <placeholder1>place holder 1</placeholder1>

+        <placeholder2>place holder 2</placeholder2>

+      </mdbdebugger>

+      <runprofile version="6">

+        <args></args>

+        <rundir></rundir>

+        <buildfirst>true</buildfirst>

+        <console-type>0</console-type>

+        <terminal-type>0</terminal-type>

+        <remove-instrumentation>0</remove-instrumentation>

+        <environment>

+        </environment>

+      </runprofile>

+    </conf>

+    <conf name="PIC32MZ2048EF_SK_SOFT_FLOAT" type="2">

+      <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>

+      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.40\bin</languageToolchainDir>

+      <mdbdebugger version="1">

+        <placeholder1>place holder 1</placeholder1>

+        <placeholder2>place holder 2</placeholder2>

+      </mdbdebugger>

+      <runprofile version="6">

+        <args></args>

+        <rundir></rundir>

+        <buildfirst>true</buildfirst>

+        <console-type>0</console-type>

+        <terminal-type>0</terminal-type>

+        <remove-instrumentation>0</remove-instrumentation>

+        <environment>

+        </environment>

+      </runprofile>

+    </conf>

+    <conf name="PIC32MZ2048EF_SK_HARD_FLOAT" type="2">

+      <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>

+      <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.40\bin</languageToolchainDir>

       <mdbdebugger version="1">

         <placeholder1>place holder 1</placeholder1>

         <placeholder2>place holder 2</placeholder2>

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml
index a324c25..d1d5490 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml
@@ -4,6 +4,17 @@
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>

     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">

         <group>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/ISR_Support.h</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/FreeRTOSConfig.h</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/main_blinky.c</file>

+            <file>file:/C:/Microchip/harmony/v1_06/third_party/rtos/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c</file>

+        </group>

+        <group name="Masters19024">

             <file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c</file>

         </group>

     </open-files>

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S b/FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S
index a46e016..f5e4bf8 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RegisterTestTasks.S
@@ -70,14 +70,53 @@
 

 #include <xc.h>

 #include <sys/asm.h>

+#include "FreeRTOSConfig.h"

 

 	.set	nomips16

- 	.set 	noreorder

+	.set 	noreorder

 

 

- 	.global	vRegTest1

- 	.global vRegTest2

+	.global	vRegTest1

+	.global vRegTest2

 

+/************************************************************************/

+/* Reg test macro helper. Test a register for a known value branching to

+error_loop if not correct otherwise continuing on */

+.macro	portREG_TEST work_reg, test_reg, test_value

+

+	/* Check each register maintains the value assigned to it for the lifetime

+	of the task. */

+	addiu	\work_reg, $0, 0x00

+	addiu	\work_reg, \test_reg, -\test_value

+	beq		\work_reg, $0, 1f

+	nop

+	/* The register value was not that expected.  Jump to the error loop so the

+	cycle counter stops incrementing. */

+	b	error_loop

+	nop

+1:

+	.endm

+

+/************************************************************************/

+/* FPU reg test macro helper, Test an FPU register for a known value branching to

+error_loop if not correct otherwise continuing on */

+	#if ( __mips_hard_float == 1)  && ( configUSE_TASK_FPU_SUPPORT == 1 )

+.macro	portFPU_REG_TEST work_reg, test_reg, test_value

+	/* get the lower 32 bit value from the FPU and compare to the test value */

+	mfc1	\work_reg, \test_reg

+	addiu	\work_reg, \work_reg, -\test_value

+	beq		\work_reg, $0, 1f

+	nop

+

+	/* The register values was not that expected. Jump to the error loop */

+	b	error_loop

+	nop

+1:

+	.endm

+	#endif

+

+

+/************************************************************************/

 	.set	noreorder

 	.set 	noat

 	.ent	error_loop

@@ -93,7 +132,7 @@
 

 

 	.set	noreorder

-	.set 	noat

+	.set	noat

 	.ent	vRegTest1

 

 vRegTest1:

@@ -136,233 +175,192 @@
 	addiu	$22, $0, 0x136

 	mtlo	$22, $ac3

 

+	/* Test the FPU registers if they are present on the part. */

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+	addiu	$22, $0, 0x180

+	mtc1	$22, $f0

+	addiu	$22, $0, 0x181

+	mtc1	$22, $f1

+	addiu	$22, $0, 0x182

+	mtc1	$22, $f2

+	addiu	$22, $0, 0x183

+	mtc1	$22, $f3

+	addiu	$22, $0, 0x184

+	mtc1	$22, $f4

+	addiu	$22, $0, 0x185

+	mtc1	$22, $f5

+	addiu	$22, $0, 0x186

+	mtc1	$22, $f6

+	addiu	$22, $0, 0x187

+	mtc1	$22, $f7

+	addiu	$22, $0, 0x188

+	mtc1	$22, $f8

+	addiu	$22, $0, 0x189

+	mtc1	$22, $f9

+	addiu	$22, $0, 0x18A

+	mtc1	$22, $f10

+	addiu	$22, $0, 0x18B

+	mtc1	$22, $f11

+	addiu	$22, $0, 0x18C

+	mtc1	$22, $f12

+	addiu	$22, $0, 0x18D

+	mtc1	$22, $f13

+	addiu	$22, $0, 0x18E

+	mtc1	$22, $f14

+	addiu	$22, $0, 0x18F

+	mtc1	$22, $f15

+	addiu	$22, $0, 0x190

+	mtc1	$22, $f16

+	addiu	$22, $0, 0x191

+	mtc1	$22, $f17

+	addiu	$22, $0, 0x192

+	mtc1	$22, $f18

+	addiu	$22, $0, 0x193

+	mtc1	$22, $f19

+	addiu	$22, $0, 0x194

+	mtc1	$22, $f20

+	addiu	$22, $0, 0x195

+	mtc1	$22, $f21

+	addiu	$22, $0, 0x196

+	mtc1	$22, $f22

+	addiu	$22, $0, 0x197

+	mtc1	$22, $f23

+	addiu	$22, $0, 0x198

+	mtc1	$22, $f24

+	addiu	$22, $0, 0x199

+	mtc1	$22, $f25

+	addiu	$22, $0, 0x19A

+	mtc1	$22, $f26

+	addiu	$22, $0, 0x19B

+	mtc1	$22, $f27

+	addiu	$22, $0, 0x19C

+	mtc1	$22, $f28

+	addiu	$22, $0, 0x19D

+	mtc1	$22, $f29

+	addiu	$22, $0, 0x19E

+	mtc1	$22, $f30

+	addiu	$22, $0, 0x19F

+	mtc1	$22, $f31

+	#endif

+

 vRegTest1Loop:

-	/* Check each register maintains the value assigned to it for the lifetime

-	of the task. */

-	addiu	$22, $0, 0x00

-	addiu	$22, $1, -0x11

-	beq		$22, $0, .+16

-	nop

-	/* The register value was not that expected.  Jump to the error loop so the

-	cycle counter stops incrementing. */

-	b		error_loop

-	nop

+	portREG_TEST	$22, $1, 0x11

+	portREG_TEST	$22, $2, 0x12

+	portREG_TEST	$22, $3, 0x13

+	/* Do not test r4 as we are using it as a loop counter */

+	portREG_TEST	$22, $5, 0x15

+	portREG_TEST	$22, $6, 0x16

+	portREG_TEST	$22, $7, 0x17

+	portREG_TEST	$22, $8, 0x18

+	portREG_TEST	$22, $9, 0x19

+	portREG_TEST	$22, $10, 0x110

+	portREG_TEST	$22, $11, 0x111

+	portREG_TEST	$22, $12, 0x112

+	portREG_TEST	$22, $13, 0x113

+	portREG_TEST	$22, $14, 0x114

+	portREG_TEST	$22, $15, 0x115

+	portREG_TEST	$22, $16, 0x116

+	portREG_TEST	$22, $17, 0x117

+	portREG_TEST	$22, $18, 0x118

+	portREG_TEST	$22, $19, 0x119

+	portREG_TEST	$22, $20, 0x120

+	portREG_TEST	$22, $21, 0x121

+	/* Do not test r22, used as a helper */

+	portREG_TEST	$22, $23, 0x123

+	portREG_TEST	$22, $24, 0x124

+	portREG_TEST	$22, $25, 0x125

+	portREG_TEST	$22, $30, 0x130

 

-	addiu	$22, $0, 0x00

-	addiu	$22, $2, -0x12

+	mfhi		$22, $ac1

+	addiu		$22, $22, -0x131

 	beq		$22, $0, .+16

 	nop

 	b		error_loop

 	nop

 

-	addiu	$22, $0, 0x00

-	addiu	$22, $3, -0x13

+	mflo		$22, $ac1

+	addiu		$22, $22, -0x132

 	beq		$22, $0, .+16

 	nop

 	b		error_loop

 	nop

 

-	addiu	$22, $0, 0x00

-	addiu	$22, $5, -0x15

+	mfhi		$22, $ac2

+	addiu		$22, $22, -0x133

 	beq		$22, $0, .+16

 	nop

 	b		error_loop

 	nop

 

-	addiu	$22, $0, 0x00

-	addiu	$22, $6, -0x16

+	mflo		$22, $ac2

+	addiu		$22, $22, -0x134

 	beq		$22, $0, .+16

 	nop

 	b		error_loop

 	nop

 

-	addiu	$22, $0, 0x00

-	addiu	$22, $7, -0x17

+	mfhi		$22, $ac3

+	addiu		$22, $22, -0x135

 	beq		$22, $0, .+16

 	nop

 	b		error_loop

 	nop

 

-	addiu	$22, $0, 0x00

-	addiu	$22, $8, -0x18

+	mflo		$22, $ac3

+	addiu		$22, $22, -0x136

 	beq		$22, $0, .+16

 	nop

 	b		error_loop

 	nop

 

-	addiu	$22, $0, 0x00

-	addiu	$22, $9, -0x19

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $10, -0x110

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $11, -0x111

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $12, -0x112

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $13, -0x113

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $14, -0x114

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $15, -0x115

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $16, -0x116

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $17, -0x117

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $18, -0x118

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $19, -0x119

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $20, -0x120

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $21, -0x121

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $23, -0x123

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $24, -0x124

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $25, -0x125

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $30, -0x130

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	mfhi	$22, $ac1

-	addiu	$22, $22, -0x131

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	mflo	$22, $ac1

-	addiu	$22, $22, -0x132

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	mfhi	$22, $ac2

-	addiu	$22, $22, -0x133

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	mflo	$22, $ac2

-	addiu	$22, $22, -0x134

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	mfhi	$22, $ac3

-	addiu	$22, $22, -0x135

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	mflo	$22, $ac3

-	addiu	$22, $22, -0x136

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

+	/* Test the FPU registers if they are present on the part. */

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+		portFPU_REG_TEST    $22, $f0, 0x180

+		portFPU_REG_TEST    $22, $f1, 0x181

+		portFPU_REG_TEST    $22, $f2, 0x182

+		portFPU_REG_TEST    $22, $f3, 0x183

+		portFPU_REG_TEST    $22, $f4, 0x184

+		portFPU_REG_TEST    $22, $f5, 0x185

+		portFPU_REG_TEST    $22, $f6, 0x186

+		portFPU_REG_TEST    $22, $f7, 0x187

+		portFPU_REG_TEST    $22, $f8, 0x188

+		portFPU_REG_TEST    $22, $f9, 0x189

+		portFPU_REG_TEST    $22, $f10, 0x18A

+		portFPU_REG_TEST    $22, $f11, 0x18B

+		portFPU_REG_TEST    $22, $f12, 0x18C

+		portFPU_REG_TEST    $22, $f13, 0x18D

+		portFPU_REG_TEST    $22, $f14, 0x18E

+		portFPU_REG_TEST    $22, $f15, 0x18F

+		portFPU_REG_TEST    $22, $f16, 0x190

+		portFPU_REG_TEST    $22, $f17, 0x191

+		portFPU_REG_TEST    $22, $f18, 0x192

+		portFPU_REG_TEST    $22, $f19, 0x193

+		portFPU_REG_TEST    $22, $f20, 0x194

+		portFPU_REG_TEST    $22, $f21, 0x195

+		portFPU_REG_TEST    $22, $f22, 0x196

+		portFPU_REG_TEST    $22, $f23, 0x197

+		portFPU_REG_TEST    $22, $f24, 0x198

+		portFPU_REG_TEST    $22, $f25, 0x199

+		portFPU_REG_TEST    $22, $f26, 0x19A

+		portFPU_REG_TEST    $22, $f27, 0x19B

+		portFPU_REG_TEST    $22, $f28, 0x19C

+		portFPU_REG_TEST    $22, $f29, 0x19D

+		portFPU_REG_TEST    $22, $f30, 0x19E

+		portFPU_REG_TEST    $22, $f31, 0x19F

+	#endif

 

 	/* No errors detected.  Increment the loop count so the check timer knows

 	this task is still running without error, then loop back to do it all

 	again.  The address of the loop counter is in $4. */

 	lw		$22, 0( $4 )

-	addiu	$22, $22, 0x01

+	addiu		$22, $22, 0x01

 	sw		$22, 0( $4 )

 	b		vRegTest1Loop

 	nop

 

 	.end	vRegTest1

 

-

+/************************************************************************/

 	.set	noreorder

 	.set 	noat

 	.ent	vRegTest2

@@ -406,174 +404,101 @@
 	addiu	$22, $0, 0x236

 	mtlo	$22, $ac3

 

+	/* Test the FPU registers if they are present on the part. */

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+	addiu	$22, $0, 0x280

+	mtc1	$22, $f0

+	addiu	$22, $0, 0x281

+	mtc1	$22, $f1

+	addiu	$22, $0, 0x282

+	mtc1	$22, $f2

+	addiu	$22, $0, 0x283

+	mtc1	$22, $f3

+	addiu	$22, $0, 0x284

+	mtc1	$22, $f4

+	addiu	$22, $0, 0x285

+	mtc1	$22, $f5

+	addiu	$22, $0, 0x286

+	mtc1	$22, $f6

+	addiu	$22, $0, 0x287

+	mtc1	$22, $f7

+	addiu	$22, $0, 0x288

+	mtc1	$22, $f8

+	addiu	$22, $0, 0x289

+	mtc1	$22, $f9

+	addiu	$22, $0, 0x28A

+	mtc1	$22, $f10

+	addiu	$22, $0, 0x28B

+	mtc1	$22, $f11

+	addiu	$22, $0, 0x28C

+	mtc1	$22, $f12

+	addiu	$22, $0, 0x28D

+	mtc1	$22, $f13

+	addiu	$22, $0, 0x28E

+	mtc1	$22, $f14

+	addiu	$22, $0, 0x28F

+	mtc1	$22, $f15

+	addiu	$22, $0, 0x290

+	mtc1	$22, $f16

+	addiu	$22, $0, 0x291

+	mtc1	$22, $f17

+	addiu	$22, $0, 0x292

+	mtc1	$22, $f18

+	addiu	$22, $0, 0x293

+	mtc1	$22, $f19

+	addiu	$22, $0, 0x294

+	mtc1	$22, $f20

+	addiu	$22, $0, 0x295

+	mtc1	$22, $f21

+	addiu	$22, $0, 0x296

+	mtc1	$22, $f22

+	addiu	$22, $0, 0x297

+	mtc1	$22, $f23

+	addiu	$22, $0, 0x298

+	mtc1	$22, $f24

+	addiu	$22, $0, 0x299

+	mtc1	$22, $f25

+	addiu	$22, $0, 0x29A

+	mtc1	$22, $f26

+	addiu	$22, $0, 0x29B

+	mtc1	$22, $f27

+	addiu	$22, $0, 0x29C

+	mtc1	$22, $f28

+	addiu	$22, $0, 0x29D

+	mtc1	$22, $f29

+	addiu	$22, $0, 0x29E

+	mtc1	$22, $f30

+	addiu	$22, $0, 0x29F

+	mtc1	$22, $f31

+	#endif

+

 vRegTest2Loop:

-	addiu	$22, $0, 0x00

-	addiu	$22, $1, -0x21

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $2, -0x22

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $3, -0x23

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $5, -0x25

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $6, -0x26

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $7, -0x27

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $8, -0x28

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $9, -0x29

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $10, -0x210

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $11, -0x211

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $12, -0x212

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $13, -0x213

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $14, -0x214

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $15, -0x215

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $16, -0x216

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $17, -0x217

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $18, -0x218

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $19, -0x219

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $20, -0x220

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $21, -0x221

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $23, -0x223

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $24, -0x224

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $25, -0x225

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

-

-	addiu	$22, $0, 0x00

-	addiu	$22, $30, -0x230

-	beq		$22, $0, .+16

-	nop

-	b		error_loop

-	nop

+	portREG_TEST	$22, $1, 0x21

+	portREG_TEST	$22, $2, 0x22

+	portREG_TEST	$22, $3, 0x23

+	/* Do not test r4 as we are using it as a loop counter */

+	portREG_TEST	$22, $5, 0x25

+	portREG_TEST	$22, $6, 0x26

+	portREG_TEST	$22, $7, 0x27

+	portREG_TEST	$22, $8, 0x28

+	portREG_TEST	$22, $9, 0x29

+	portREG_TEST	$22, $10, 0x210

+	portREG_TEST	$22, $11, 0x211

+	portREG_TEST	$22, $12, 0x212

+	portREG_TEST	$22, $13, 0x213

+	portREG_TEST	$22, $14, 0x214

+	portREG_TEST	$22, $15, 0x215

+	portREG_TEST	$22, $16, 0x216

+	portREG_TEST	$22, $17, 0x217

+	portREG_TEST	$22, $18, 0x218

+	portREG_TEST	$22, $19, 0x219

+	portREG_TEST	$22, $20, 0x220

+	portREG_TEST	$22, $21, 0x221

+	/* Do not test r22, used as a helper */

+	portREG_TEST	$22, $23, 0x223

+	portREG_TEST	$22, $24, 0x224

+	portREG_TEST	$22, $25, 0x225

+	portREG_TEST	$22, $30, 0x230

 

 	mfhi	$22, $ac1

 	addiu	$22, $22, -0x231

@@ -617,6 +542,42 @@
 	b		error_loop

 	nop

 

+	/* Test the FPU registers if they are present on the part. */

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+		portFPU_REG_TEST    $22, $f0, 0x280

+		portFPU_REG_TEST    $22, $f1, 0x281

+		portFPU_REG_TEST    $22, $f2, 0x282

+		portFPU_REG_TEST    $22, $f3, 0x283

+		portFPU_REG_TEST    $22, $f4, 0x284

+		portFPU_REG_TEST    $22, $f5, 0x285

+		portFPU_REG_TEST    $22, $f6, 0x286

+		portFPU_REG_TEST    $22, $f7, 0x287

+		portFPU_REG_TEST    $22, $f8, 0x288

+		portFPU_REG_TEST    $22, $f9, 0x289

+		portFPU_REG_TEST    $22, $f10, 0x28A

+		portFPU_REG_TEST    $22, $f11, 0x28B

+		portFPU_REG_TEST    $22, $f12, 0x28C

+		portFPU_REG_TEST    $22, $f13, 0x28D

+		portFPU_REG_TEST    $22, $f14, 0x28E

+		portFPU_REG_TEST    $22, $f15, 0x28F

+		portFPU_REG_TEST    $22, $f16, 0x290

+		portFPU_REG_TEST    $22, $f17, 0x291

+		portFPU_REG_TEST    $22, $f18, 0x292

+		portFPU_REG_TEST    $22, $f19, 0x293

+		portFPU_REG_TEST    $22, $f20, 0x294

+		portFPU_REG_TEST    $22, $f21, 0x295

+		portFPU_REG_TEST    $22, $f22, 0x296

+		portFPU_REG_TEST    $22, $f23, 0x297

+		portFPU_REG_TEST    $22, $f24, 0x298

+		portFPU_REG_TEST    $22, $f25, 0x299

+		portFPU_REG_TEST    $22, $f26, 0x29A

+		portFPU_REG_TEST    $22, $f27, 0x29B

+		portFPU_REG_TEST    $22, $f28, 0x29C

+		portFPU_REG_TEST    $22, $f29, 0x29D

+		portFPU_REG_TEST    $22, $f30, 0x29E

+		portFPU_REG_TEST    $22, $f31, 0x29F

+	#endif

+

 	/* No errors detected.  Increment the loop count so the check timer knows

 	this task is still running without error, then loop back to do it all

 	again.  The address of the loop counter is in $4. */

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c b/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c
new file mode 100644
index 0000000..2dd5c32
--- /dev/null
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c
@@ -0,0 +1,388 @@
+/*

+    FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.

+    All rights reserved

+

+    VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.

+

+    This file is part of the FreeRTOS distribution.

+

+    FreeRTOS is free software; you can redistribute it and/or modify it under

+    the terms of the GNU General Public License (version 2) as published by the

+    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.

+

+    ***************************************************************************

+    >>!   NOTE: The modification to the GPL is included to allow you to     !<<

+    >>!   distribute a combined work that includes FreeRTOS without being   !<<

+    >>!   obliged to provide the source code for proprietary components     !<<

+    >>!   outside of the FreeRTOS kernel.                                   !<<

+    ***************************************************************************

+

+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY

+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS

+    FOR A PARTICULAR PURPOSE.  Full license text is available on the following

+    link: http://www.freertos.org/a00114.html

+

+    ***************************************************************************

+     *                                                                       *

+     *    FreeRTOS provides completely free yet professionally developed,    *

+     *    robust, strictly quality controlled, supported, and cross          *

+     *    platform software that is more than just the market leader, it     *

+     *    is the industry's de facto standard.                               *

+     *                                                                       *

+     *    Help yourself get started quickly while simultaneously helping     *

+     *    to support the FreeRTOS project by purchasing a FreeRTOS           *

+     *    tutorial book, reference manual, or both:                          *

+     *    http://www.FreeRTOS.org/Documentation                              *

+     *                                                                       *

+    ***************************************************************************

+

+    http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading

+    the FAQ page "My application does not run, what could be wrong?".  Have you

+    defined configASSERT()?

+

+    http://www.FreeRTOS.org/support - In return for receiving this top quality

+    embedded software for free we request you assist our global community by

+    participating in the support forum.

+

+    http://www.FreeRTOS.org/training - Investing in training allows your team to

+    be as productive as possible as early as possible.  Now you can receive

+    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers

+    Ltd, and the world's leading authority on the world's leading RTOS.

+

+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,

+    including FreeRTOS+Trace - an indispensable productivity tool, a DOS

+    compatible FAT file system, and our tiny thread aware UDP/IP stack.

+

+    http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.

+    Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.

+

+    http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High

+    Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS

+    licenses offer ticketed support, indemnification and commercial middleware.

+

+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety

+    engineered and independently SIL3 certified version for use in safety and

+    mission critical applications that require provable dependability.

+

+    1 tab == 4 spaces!

+*/

+

+/*

+ * Creates eight tasks, each of which loops continuously performing a

+ * floating point calculation.

+ *

+ * All the tasks run at the idle priority and never block or yield.  This causes

+ * all eight tasks to time slice with the idle task.  Running at the idle priority

+ * means that these tasks will get pre-empted any time another task is ready to run

+ * or a time slice occurs.  More often than not the pre-emption will occur mid

+ * calculation, creating a good test of the schedulers context switch mechanism - a

+ * calculation producing an unexpected result could be a symptom of a corruption in

+ * the context of a task.

+ */

+

+#include <stdlib.h>

+#include <math.h>

+

+/* Scheduler include files. */

+#include "FreeRTOS.h"

+#include "task.h"

+

+/* Demo program include files. */

+#include "flop_mz.h"

+

+#define mathSTACK_SIZE		(configMINIMAL_STACK_SIZE + 100)

+#define mathNUMBER_OF_TASKS  ( 8 )

+

+/* Four tasks, each of which performs a different floating point calculation.

+Each of the four is created twice. */

+static portTASK_FUNCTION_PROTO( vCompetingMathTask1, pvParameters );

+static portTASK_FUNCTION_PROTO( vCompetingMathTask2, pvParameters );

+static portTASK_FUNCTION_PROTO( vCompetingMathTask3, pvParameters );

+static portTASK_FUNCTION_PROTO( vCompetingMathTask4, pvParameters );

+

+/* These variables are used to check that all the tasks are still running.  If a

+task gets a calculation wrong it will

+stop incrementing its check variable. */

+static volatile unsigned long ulTaskCheck[ mathNUMBER_OF_TASKS ] = { 0 };

+

+/*-----------------------------------------------------------*/

+

+void vStartMathTasks( unsigned portBASE_TYPE uxPriority )

+{

+	xTaskCreate( vCompetingMathTask1, "Math1", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 0 ] ), uxPriority, NULL );

+	xTaskCreate( vCompetingMathTask2, "Math2", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 1 ] ), uxPriority, NULL );

+	xTaskCreate( vCompetingMathTask3, "Math3", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 2 ] ), uxPriority, NULL );

+	xTaskCreate( vCompetingMathTask4, "Math4", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 3 ] ), uxPriority, NULL );

+	xTaskCreate( vCompetingMathTask1, "Math5", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 4 ] ), uxPriority, NULL );

+	xTaskCreate( vCompetingMathTask2, "Math6", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 5 ] ), uxPriority, NULL );

+	xTaskCreate( vCompetingMathTask3, "Math7", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 6 ] ), uxPriority, NULL );

+	xTaskCreate( vCompetingMathTask4, "Math8", mathSTACK_SIZE, ( void * ) &( ulTaskCheck[ 7 ] ), uxPriority, NULL );

+}

+/*-----------------------------------------------------------*/

+

+static portTASK_FUNCTION( vCompetingMathTask1, pvParameters )

+{

+volatile portDOUBLE d1, d2, d3, d4;

+volatile unsigned long *pulTaskCheckVariable;

+volatile portDOUBLE dAnswer;

+short sError = pdFALSE;

+

+

+	/* Must be called before any hardware floating point operations are

+	performed to let the RTOS portable layer know that this task requires

+	a floating point context. */

+	portTASK_USES_FLOATING_POINT();

+

+	d1 = 123.4567;

+	d2 = 2345.6789;

+	d3 = -918.222;

+

+	dAnswer = ( d1 + d2 ) * d3;

+

+	/* The variable this task increments to show it is still running is passed in

+	as the parameter. */

+	pulTaskCheckVariable = ( unsigned long * ) pvParameters;

+    

+	/* Keep performing a calculation and checking the result against a constant. */

+	for(;;)

+	{

+		d1 = 123.4567;

+		d2 = 2345.6789;

+		d3 = -918.222;

+

+		d4 = ( d1 + d2 ) * d3;

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+

+		/* If the calculation does not match the expected constant, stop the

+		increment of the check variable. */

+		if( fabs( d4 - dAnswer ) > 0.001 )

+		{

+			sError = pdTRUE;

+		}

+

+		if( sError == pdFALSE )

+		{

+			/* If the calculation has always been correct, increment the check

+			variable so we know this task is still running okay. */

+			( *pulTaskCheckVariable )++;

+		}

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+

+	}

+}

+/*-----------------------------------------------------------*/

+

+static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )

+{

+volatile portDOUBLE d1, d2, d3, d4;

+volatile unsigned long *pulTaskCheckVariable;

+volatile portDOUBLE dAnswer;

+short sError = pdFALSE;

+

+	/* Must be called before any hardware floating point operations are

+	performed to let the RTOS portable layer know that this task requires

+	a floating point context. */

+	portTASK_USES_FLOATING_POINT();

+

+	d1 = -389.38;

+	d2 = 32498.2;

+	d3 = -2.0001;

+

+	dAnswer = ( d1 / d2 ) * d3;

+

+

+	/* The variable this task increments to show it is still running is passed in

+	as the parameter. */

+	pulTaskCheckVariable = ( unsigned long * ) pvParameters;

+

+	/* Keep performing a calculation and checking the result against a constant. */

+	for( ;; )

+	{

+		d1 = -389.38;

+		d2 = 32498.2;

+		d3 = -2.0001;

+

+		d4 = ( d1 / d2 ) * d3;

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+

+		/* If the calculation does not match the expected constant, stop the

+		increment of the check variable. */

+		if( fabs( d4 - dAnswer ) > 0.001 )

+		{

+			sError = pdTRUE;

+		}

+

+		if( sError == pdFALSE )

+		{

+			/* If the calculation has always been correct, increment the check

+			variable so we know

+			this task is still running okay. */

+			( *pulTaskCheckVariable )++;

+		}

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+	}

+}

+/*-----------------------------------------------------------*/

+

+static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )

+{

+volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;

+volatile unsigned long *pulTaskCheckVariable;

+const size_t xArraySize = 10;

+size_t xPosition;

+short sError = pdFALSE;

+

+	/* Must be called before any hardware floating point operations are

+	performed to let the RTOS portable layer know that this task requires

+	a floating point context. */

+	portTASK_USES_FLOATING_POINT();

+

+	/* The variable this task increments to show it is still running is passed in

+	as the parameter. */

+	pulTaskCheckVariable = ( unsigned long * ) pvParameters;

+

+	pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );

+

+	/* Keep filling an array, keeping a running total of the values placed in the

+	array.  Then run through the array adding up all the values.  If the two totals

+	do not match, stop the check variable from incrementing. */

+	for( ;; )

+	{

+		dTotal1 = 0.0;

+		dTotal2 = 0.0;

+

+		for( xPosition = 0; xPosition < xArraySize; xPosition++ )

+		{

+			pdArray[ xPosition ] = ( portDOUBLE ) xPosition + 5.5;

+			dTotal1 += ( portDOUBLE ) xPosition + 5.5;

+		}

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+

+		for( xPosition = 0; xPosition < xArraySize; xPosition++ )

+		{

+			dTotal2 += pdArray[ xPosition ];

+		}

+

+		dDifference = dTotal1 - dTotal2;

+		if( fabs( dDifference ) > 0.001 )

+		{

+			sError = pdTRUE;

+		}

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+

+		if( sError == pdFALSE )

+		{

+			/* If the calculation has always been correct, increment the check

+			variable so we know	this task is still running okay. */

+			( *pulTaskCheckVariable )++;

+		}

+	}

+}

+/*-----------------------------------------------------------*/

+

+static portTASK_FUNCTION( vCompetingMathTask4, pvParameters )

+{

+volatile portDOUBLE *pdArray, dTotal1, dTotal2, dDifference;

+volatile unsigned long *pulTaskCheckVariable;

+const size_t xArraySize = 10;

+size_t xPosition;

+short sError = pdFALSE;

+

+	/* Must be called before any hardware floating point operations are

+	performed to let the RTOS portable layer know that this task requires

+	a floating point context. */

+	portTASK_USES_FLOATING_POINT();

+

+	/* The variable this task increments to show it is still running is passed in

+	as the parameter. */

+	pulTaskCheckVariable = ( unsigned long * ) pvParameters;

+

+	pdArray = ( portDOUBLE * ) pvPortMalloc( xArraySize * sizeof( portDOUBLE ) );

+

+	/* Keep filling an array, keeping a running total of the values placed in the

+	array.  Then run through the array adding up all the values.  If the two totals

+	do not match, stop the check variable from incrementing. */

+	for( ;; )

+	{

+		dTotal1 = 0.0;

+		dTotal2 = 0.0;

+

+		for( xPosition = 0; xPosition < xArraySize; xPosition++ )

+		{

+			pdArray[ xPosition ] = ( portDOUBLE ) xPosition * 12.123;

+			dTotal1 += ( portDOUBLE ) xPosition * 12.123;

+		}

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+

+		for( xPosition = 0; xPosition < xArraySize; xPosition++ )

+		{

+			dTotal2 += pdArray[ xPosition ];

+		}

+

+		dDifference = dTotal1 - dTotal2;

+		if( fabs( dDifference ) > 0.001 )

+		{

+			sError = pdTRUE;

+		}

+

+		#if configUSE_PREEMPTION == 0

+			taskYIELD();

+		#endif

+

+		if( sError == pdFALSE )

+		{

+			/* If the calculation has always been correct, increment the check

+			variable so we know	this task is still running okay. */

+			( *pulTaskCheckVariable )++;

+		}

+	}

+}

+/*-----------------------------------------------------------*/

+

+/* This is called to check that all the created tasks are still running. */

+portBASE_TYPE xAreMathsTaskStillRunning( void )

+{

+/* Keep a history of the check variables so we know if they have been incremented

+since the last call. */

+static unsigned long ulLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 };

+portBASE_TYPE xReturn = pdTRUE, xTask;

+

+	/* Check the maths tasks are still running by ensuring their check variables

+	are still incrementing. */

+	for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )

+	{

+		if( ulTaskCheck[ xTask ] == ulLastTaskCheck[ xTask ] )

+		{

+			/* The check has not incremented so an error exists. */

+			xReturn = pdFALSE;

+		}

+

+		ulLastTaskCheck[ xTask ] = ulTaskCheck[ xTask ];

+	}

+

+	return xReturn;

+}

+

+

+

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h b/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h
new file mode 100644
index 0000000..aaeefdc
--- /dev/null
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.h
@@ -0,0 +1,78 @@
+/*

+    FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.

+    All rights reserved

+

+    VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.

+

+    This file is part of the FreeRTOS distribution.

+

+    FreeRTOS is free software; you can redistribute it and/or modify it under

+    the terms of the GNU General Public License (version 2) as published by the

+    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.

+

+    ***************************************************************************

+    >>!   NOTE: The modification to the GPL is included to allow you to     !<<

+    >>!   distribute a combined work that includes FreeRTOS without being   !<<

+    >>!   obliged to provide the source code for proprietary components     !<<

+    >>!   outside of the FreeRTOS kernel.                                   !<<

+    ***************************************************************************

+

+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY

+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS

+    FOR A PARTICULAR PURPOSE.  Full license text is available on the following

+    link: http://www.freertos.org/a00114.html

+

+    ***************************************************************************

+     *                                                                       *

+     *    FreeRTOS provides completely free yet professionally developed,    *

+     *    robust, strictly quality controlled, supported, and cross          *

+     *    platform software that is more than just the market leader, it     *

+     *    is the industry's de facto standard.                               *

+     *                                                                       *

+     *    Help yourself get started quickly while simultaneously helping     *

+     *    to support the FreeRTOS project by purchasing a FreeRTOS           *

+     *    tutorial book, reference manual, or both:                          *

+     *    http://www.FreeRTOS.org/Documentation                              *

+     *                                                                       *

+    ***************************************************************************

+

+    http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading

+    the FAQ page "My application does not run, what could be wrong?".  Have you

+    defined configASSERT()?

+

+    http://www.FreeRTOS.org/support - In return for receiving this top quality

+    embedded software for free we request you assist our global community by

+    participating in the support forum.

+

+    http://www.FreeRTOS.org/training - Investing in training allows your team to

+    be as productive as possible as early as possible.  Now you can receive

+    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers

+    Ltd, and the world's leading authority on the world's leading RTOS.

+

+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,

+    including FreeRTOS+Trace - an indispensable productivity tool, a DOS

+    compatible FAT file system, and our tiny thread aware UDP/IP stack.

+

+    http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.

+    Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.

+

+    http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High

+    Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS

+    licenses offer ticketed support, indemnification and commercial middleware.

+

+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety

+    engineered and independently SIL3 certified version for use in safety and

+    mission critical applications that require provable dependability.

+

+    1 tab == 4 spaces!

+*/

+

+#ifndef FLOP_TASKS_H

+#define FLOP_TASKS_H

+

+void vStartMathTasks( unsigned portBASE_TYPE uxPriority );

+portBASE_TYPE xAreMathsTaskStillRunning( void );

+

+#endif

+

+

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c b/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
index 64ca067..4d0fb8b 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
@@ -93,18 +93,31 @@
 #include "ConfigPerformance.h"

 

 /* Core configuration fuse settings */

-#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF

-#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC

-#pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF

-#pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL

-#pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31

-#pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC

-#pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ, UPLLEN = OFF

-#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED

-#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON

-#pragma config CP = OFF

-#pragma config_alt FWDTEN=OFF

-#pragma config_alt USERID = 0x1234u

+#if defined(__32MZ2048ECM144) || defined(__32MZ2048ECH144)

+	#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF

+	#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC

+	#pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF

+	#pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL

+	#pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31

+	#pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC

+	#pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ, UPLLEN = OFF

+	#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED

+	#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON

+	#pragma config CP = OFF

+	#pragma config_alt FWDTEN=OFF

+	#pragma config_alt USERID = 0x1234u

+#elif defined(__32MZ2048EFM144) || defined(__32MZ2048EFH144)

+	#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF

+	#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC

+	#pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF

+	#pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL

+	#pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31

+	#pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC

+	#pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ

+	#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED

+	#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON

+	#pragma config CP = OFF

+#endif

 

 /*-----------------------------------------------------------*/

 

@@ -274,27 +287,44 @@
 	EXCEP_CpU, 		/* coprocessor unusable */

 	EXCEP_Overflow,	/* arithmetic overflow */

 	EXCEP_Trap, 	/* trap (possible divide by zero) */

+	EXCEP_FPE = 15, /* floating point exception */

 	EXCEP_IS1 = 16,	/* implementation specfic 1 */

 	EXCEP_CEU, 		/* CorExtend Unuseable */

-	EXCEP_C2E 		/* coprocessor 2 */

+	EXCEP_C2E, 		/* coprocessor 2 */

+	EXCEP_DSPDis = 26   /* DSP module disabled */

 } _excep_code;

 

 static unsigned long _epc_code;

 static unsigned long _excep_addr;

 

-    asm volatile( "mfc0 %0,$13" : "=r" (_epc_code) );

-    asm volatile( "mfc0 %0,$14" : "=r" (_excep_addr) );

+	asm volatile( "mfc0 %0,$13" : "=r" (_epc_code) );

+	asm volatile( "mfc0 %0,$14" : "=r" (_excep_addr) );

 

-    _excep_code = ( _epc_code & 0x0000007C ) >> 2;

+	_excep_code = ( _epc_code & 0x0000007C ) >> 2;

 

     for( ;; )

 	{

+		/* prevent compiler warning */

+		(void) _excep_code;

+

 		/* Examine _excep_code to identify the type of exception.  Examine

 		_excep_addr to find the address that caused the exception */

 		LATHSET = 0x0007;

 		Nop();

 		Nop();

 		Nop();

-    }

+	}

 }

+/*-----------------------------------------------------------*/

 

+void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )

+{

+	( void ) pcTaskName;

+	( void ) pxTask;

+

+	/* Run time stack overflow checking is performed if

+	configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook

+	function is called if a stack overflow is detected. */

+	taskDISABLE_INTERRUPTS();

+	for( ;; );

+}

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c b/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c
index 384807e..9d37865 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/main_full.c
@@ -143,6 +143,7 @@
 #include "QueueSet.h"

 #include "recmutex.h"

 #include "EventGroupsDemo.h"

+#include "flop_mz.h"

 

 /*-----------------------------------------------------------*/

 

@@ -160,9 +161,10 @@
 #define mainSEM_TEST_PRIORITY				( tskIDLE_PRIORITY + 1 )

 #define mainBLOCK_Q_PRIORITY				( tskIDLE_PRIORITY + 2 )

 #define mainCOM_TEST_PRIORITY				( tskIDLE_PRIORITY + 2 )

-#define mainINTEGER_TASK_PRIORITY           ( tskIDLE_PRIORITY )

+#define mainINTEGER_TASK_PRIORITY			( tskIDLE_PRIORITY )

 #define mainGEN_QUEUE_TASK_PRIORITY			( tskIDLE_PRIORITY )

 #define mainQUEUE_OVERWRITE_TASK_PRIORITY	( tskIDLE_PRIORITY )

+#define mainFLOP_TASK_PRIORITY				( tskIDLE_PRIORITY )

 

 /* The LED controlled by the 'check' software timer. */

 #define mainCHECK_LED						( 2 )

@@ -242,6 +244,7 @@
 	vStartQueueSetTasks();

 	vStartRecursiveMutexTasks();

 	vStartEventGroupTasks();

+	vStartMathTasks( mainFLOP_TASK_PRIORITY );

 

 	/* Create the tasks defined within this file. */

 	xTaskCreate( prvRegTestTask1,			/* The function that implements the task. */

@@ -294,6 +297,11 @@
 	/* Avoid compiler warnings. */

 	( void ) pvParameters;

 

+	/* Must be called before any hardware floating point operations are

+	performed to let the RTOS portable layer know that this task requires

+	a floating point context. */

+	portTASK_USES_FLOATING_POINT();

+

 	/* Pass the address of the RegTest1 loop counter into the test function,

 	which is necessarily implemented in assembler. */

 	vRegTest1( &ulRegTest1Cycles );

@@ -310,6 +318,11 @@
 	/* Avoid compiler warnings. */

 	( void ) pvParameters;

 

+	/* Must be called before any hardware floating point operations are

+	performed to let the RTOS portable layer know that this task requires

+	a floating point context. */

+	portTASK_USES_FLOATING_POINT();

+

 	/* Pass the address of the RegTest2 loop counter into the test function,

 	which is necessarily implemented in assembler. */

 	vRegTest2( &ulRegTest2Cycles );

@@ -393,6 +406,10 @@
 	{

 		ulErrorOccurred |= ( 0x01UL << 13UL );

 	}

+	else if( xAreMathsTaskStillRunning() != pdTRUE )

+	{

+		ulErrorOccurred |= ( 0x01UL << 15UL );

+	}

 

 	/* Ensure the expected number of high frequency interrupts have occurred. */

 	if( ulLastHighFrequencyTimerInterrupts != 0 )

diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c
index 87fe5e9..992b5fc 100644
--- a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c
+++ b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_GCC.c
@@ -2,15 +2,15 @@
 * DISCLAIMER

 * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.

 * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all

-* applicable laws, including copyright laws. 

+* applicable laws, including copyright laws.

 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED

 * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

 * NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY

 * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,

 * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR

 * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability 

-* of this software. By using this software, you agree to the additional terms and conditions found by accessing the 

+* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability

+* of this software. By using this software, you agree to the additional terms and conditions found by accessing the

 * following link:

 * http://www.renesas.com/disclaimer

 *

@@ -38,7 +38,7 @@
  * UARTCommandConsole.c have been added.

  *

  * ***NOTE***: Transmitting generates an interrupt for each character, which

- * consumes	CPU time, and can cause standard demo RTOS tasks that monitor their

+ * consumes    CPU time, and can cause standard demo RTOS tasks that monitor their

  * own performance to fail asserts - therefore when using GCC it is best to

  * compile this file with maximum speed optimisation.

  */

@@ -111,7 +111,7 @@
         gp_sci1_tx_address++;

         g_sci1_tx_count--;

     }

-    else 

+    else

     {

         SCI1.SCR.BIT.TIE = 0U;

         SCI1.SCR.BIT.TEIE = 1U;

@@ -181,20 +181,20 @@
 void r_sci1_callback_transmitend(void)

 {

     /* Start user code. Do not edit comment generated here */

-	BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

 

-	/* The sci1_txdone flag is used by the auto generated API only. */

-	sci1_txdone = TRUE;

+    /* The sci1_txdone flag is used by the auto generated API only. */

+    sci1_txdone = TRUE;

 

-	if( xSendingTask != NULL )

-	{

-		/* A task is waiting for the end of the Tx, unblock it now.

-		http://www.freertos.org/vTaskNotifyGiveFromISR.html */

-		vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

-		xSendingTask = NULL;

+    if( xSendingTask != NULL )

+    {

+        /* A task is waiting for the end of the Tx, unblock it now.

+        http://www.freertos.org/vTaskNotifyGiveFromISR.html */

+        vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

+        xSendingTask = NULL;

 

-		portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

-	}

+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    }

     /* End user code. Do not edit comment generated here */

 }

 /***********************************************************************************************************************

@@ -206,23 +206,23 @@
 void r_sci1_callback_receiveend(void)

 {

     /* Start user code. Do not edit comment generated here */

-	BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

 

     configASSERT( xRxQueue );

 

-	/* Transmitting generates an interrupt for each character, which consumes

-	CPU time, and can cause standard demo RTOS tasks that monitor their own

-	performance to fail asserts - so don't receive new CLI commands if a

-	transmit is not already in progress. */

-	if( sci1_txdone == TRUE )

-	{

-		/* Characters received from the UART are stored in this queue, ready to be

-		received by the application.  ***NOTE*** Using a queue in this way is very

-		convenient, but also very inefficient.  It can be used here because

-		characters will only arrive slowly.  In a higher bandwidth system a circular

-		RAM buffer or DMA should be used in place of this queue. */

-		xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

-	}

+    /* Transmitting generates an interrupt for each character, which consumes

+    CPU time, and can cause standard demo RTOS tasks that monitor their own

+    performance to fail asserts - so don't receive new CLI commands if a

+    transmit is not already in progress. */

+    if( sci1_txdone == TRUE )

+    {

+        /* Characters received from the UART are stored in this queue, ready to be

+        received by the application.  ***NOTE*** Using a queue in this way is very

+        convenient, but also very inefficient.  It can be used here because

+        characters will only arrive slowly.  In a higher bandwidth system a circular

+        RAM buffer or DMA should be used in place of this queue. */

+        xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

+    }

 

     /* Set up SCI1 receive buffer again */

     R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

@@ -280,30 +280,30 @@
 multiple different demo application. */

 xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )

 {

-	( void ) ulWantedBaud;

-	( void ) uxQueueLength;

+    ( void ) ulWantedBaud;

+    ( void ) uxQueueLength;

 

-	/* Characters received from the UART are stored in this queue, ready to be

-	received by the application.  ***NOTE*** Using a queue in this way is very

-	convenient, but also very inefficient.  It can be used here because

-	characters will only arrive slowly.  In a higher bandwidth system a circular

-	RAM buffer or DMA should be used in place of this queue. */

-	xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

-	configASSERT( xRxQueue );

+    /* Characters received from the UART are stored in this queue, ready to be

+    received by the application.  ***NOTE*** Using a queue in this way is very

+    convenient, but also very inefficient.  It can be used here because

+    characters will only arrive slowly.  In a higher bandwidth system a circular

+    RAM buffer or DMA should be used in place of this queue. */

+    xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

+    configASSERT( xRxQueue );

 

-	/* Set up SCI1 receive buffer */

-	R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

+    /* Set up SCI1 receive buffer */

+    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

 

-	/* Ensure the interrupt priority is at or below

-	configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+    /* Ensure the interrupt priority is at or below

+    configMAX_SYSCALL_INTERRUPT_PRIORITY. */

     IPR( SCI1, ERI1 ) = configKERNEL_INTERRUPT_PRIORITY + 1;

 

-	/* Enable SCI1 operations */

-	R_SCI1_Start();

+    /* Enable SCI1 operations */

+    R_SCI1_Start();

 

-	/* Only one UART is supported, so it doesn't matter what is returned

-	here. */

-	return 0;

+    /* Only one UART is supported, so it doesn't matter what is returned

+    here. */

+    return 0;

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

@@ -312,53 +312,53 @@
 {

 const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );

 

-	/* Only one port is supported. */

-	( void ) pxPort;

+    /* Only one port is supported. */

+    ( void ) pxPort;

 

-	/* Clear the flag before initiating a new transmission */

-	sci1_txdone = FALSE;

+    /* Clear the flag before initiating a new transmission */

+    sci1_txdone = FALSE;

 

-	/* Don't send the string unless the previous string has been sent. */

-	if( xSendingTask == NULL )

-	{

-		/* Ensure the calling task's notification state is not already

-		pending. */

-		vTaskNotifyClear( NULL );

+    /* Don't send the string unless the previous string has been sent. */

+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )

+    {

+        /* Ensure the calling task's notification state is not already

+        pending. */

+        vTaskNotifyClear( NULL );

 

-		/* Store the handle of the transmitting task.  This is used to unblock

-		the task when the transmission has completed. */

-		xSendingTask = xTaskGetCurrentTaskHandle();

+        /* Store the handle of the transmitting task.  This is used to unblock

+        the task when the transmission has completed. */

+        xSendingTask = xTaskGetCurrentTaskHandle();

 

-		/* Send the string using the auto-generated API. */

-		R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );

+        /* Send the string using the auto-generated API. */

+        R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );

 

-		/* Wait in the Blocked state (so not using any CPU time) until the

-		transmission has completed. */

-		ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

-	}

+        /* Wait in the Blocked state (so not using any CPU time) until the

+        transmission has completed. */

+        ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

+    }

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

 multiple different demo application. */

 signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )

 {

-	/* Only one UART is supported. */

-	( void ) pxPort;

+    /* Only one UART is supported. */

+    ( void ) pxPort;

 

-	/* Return a received character, if any are available.  Otherwise block to

-	wait for a character. */

-	return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

+    /* Return a received character, if any are available.  Otherwise block to

+    wait for a character. */

+    return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

 multiple different demo application. */

 signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )

 {

-	/* Just mapped to vSerialPutString() so the block time is not used. */

-	( void ) xBlockTime;

+    /* Just mapped to vSerialPutString() so the block time is not used. */

+    ( void ) xBlockTime;

 

-	vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

-	return pdPASS;

+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

+    return pdPASS;

 }

 

 /* End user code. Do not edit comment generated here */

diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c
index ca57a95..207b2c8 100644
--- a/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c
+++ b/FreeRTOS/Demo/RX100_RX113-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_IAR.c
@@ -2,15 +2,15 @@
 * DISCLAIMER

 * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.

 * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all

-* applicable laws, including copyright laws. 

+* applicable laws, including copyright laws.

 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED

 * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

 * NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY

 * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,

 * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR

 * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability 

-* of this software. By using this software, you agree to the additional terms and conditions found by accessing the 

+* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability

+* of this software. By using this software, you agree to the additional terms and conditions found by accessing the

 * following link:

 * http://www.renesas.com/disclaimer

 *

@@ -110,7 +110,7 @@
         gp_sci1_tx_address++;

         g_sci1_tx_count--;

     }

-    else 

+    else

     {

         SCI1.SCR.BIT.TIE = 0U;

         SCI1.SCR.BIT.TEIE = 1U;

@@ -192,20 +192,20 @@
 void r_sci1_callback_transmitend(void)

 {

     /* Start user code. Do not edit comment generated here */

-	BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

 

-	/* The sci1_txdone flag is used by the auto generated API only. */

-	sci1_txdone = TRUE;

+    /* The sci1_txdone flag is used by the auto generated API only. */

+    sci1_txdone = TRUE;

 

-	if( xSendingTask != NULL )

-	{

-		/* A task is waiting for the end of the Tx, unblock it now.

-		http://www.freertos.org/vTaskNotifyGiveFromISR.html */

-		vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

-		xSendingTask = NULL;

+    if( xSendingTask != NULL )

+    {

+        /* A task is waiting for the end of the Tx, unblock it now.

+        http://www.freertos.org/vTaskNotifyGiveFromISR.html */

+        vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

+        xSendingTask = NULL;

 

-		portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

-	}

+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    }

     /* End user code. Do not edit comment generated here */

 }

 /***********************************************************************************************************************

@@ -217,23 +217,23 @@
 void r_sci1_callback_receiveend(void)

 {

     /* Start user code. Do not edit comment generated here */

-	BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

 

     configASSERT( xRxQueue );

 

-	/* Transmitting generates an interrupt for each character, which consumes

-	CPU time, and can cause standard demo RTOS tasks that monitor their own

-	performance to fail asserts - so don't receive new CLI commands if a

-	transmit is not already in progress. */

-	if( sci1_txdone == TRUE )

-	{

-		/* Characters received from the UART are stored in this queue, ready to be

-		received by the application.  ***NOTE*** Using a queue in this way is very

-		convenient, but also very inefficient.  It can be used here because

-		characters will only arrive slowly.  In a higher bandwidth system a circular

-		RAM buffer or DMA should be used in place of this queue. */

-		xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

-	}

+    /* Transmitting generates an interrupt for each character, which consumes

+    CPU time, and can cause standard demo RTOS tasks that monitor their own

+    performance to fail asserts - so don't receive new CLI commands if a

+    transmit is not already in progress. */

+    if( sci1_txdone == TRUE )

+    {

+        /* Characters received from the UART are stored in this queue, ready to be

+        received by the application.  ***NOTE*** Using a queue in this way is very

+        convenient, but also very inefficient.  It can be used here because

+        characters will only arrive slowly.  In a higher bandwidth system a circular

+        RAM buffer or DMA should be used in place of this queue. */

+        xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

+    }

 

     /* Set up SCI1 receive buffer again */

     R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

@@ -291,30 +291,30 @@
 multiple different demo application. */

 xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )

 {

-	( void ) ulWantedBaud;

-	( void ) uxQueueLength;

+    ( void ) ulWantedBaud;

+    ( void ) uxQueueLength;

 

-	/* Characters received from the UART are stored in this queue, ready to be

-	received by the application.  ***NOTE*** Using a queue in this way is very

-	convenient, but also very inefficient.  It can be used here because

-	characters will only arrive slowly.  In a higher bandwidth system a circular

-	RAM buffer or DMA should be used in place of this queue. */

-	xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

-	configASSERT( xRxQueue );

+    /* Characters received from the UART are stored in this queue, ready to be

+    received by the application.  ***NOTE*** Using a queue in this way is very

+    convenient, but also very inefficient.  It can be used here because

+    characters will only arrive slowly.  In a higher bandwidth system a circular

+    RAM buffer or DMA should be used in place of this queue. */

+    xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

+    configASSERT( xRxQueue );

 

-	/* Set up SCI1 receive buffer */

-	R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

+    /* Set up SCI1 receive buffer */

+    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

 

-	/* Ensure the interrupt priority is at or below

-	configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+    /* Ensure the interrupt priority is at or below

+    configMAX_SYSCALL_INTERRUPT_PRIORITY. */

     IPR( SCI1, ERI1 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

 

-	/* Enable SCI1 operations */

-	R_SCI1_Start();

+    /* Enable SCI1 operations */

+    R_SCI1_Start();

 

-	/* Only one UART is supported, so it doesn't matter what is returned

-	here. */

-	return 0;

+    /* Only one UART is supported, so it doesn't matter what is returned

+    here. */

+    return 0;

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

@@ -323,53 +323,53 @@
 {

 const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );

 

-	/* Only one port is supported. */

-	( void ) pxPort;

+    /* Only one port is supported. */

+    ( void ) pxPort;

 

-	/* Clear the flag before initiating a new transmission */

-	sci1_txdone = FALSE;

+    /* Clear the flag before initiating a new transmission */

+    sci1_txdone = FALSE;

 

-	/* Don't send the string unless the previous string has been sent. */

-	if( xSendingTask == NULL )

-	{

-		/* Ensure the calling task's notification state is not already

-		pending. */

-		vTaskNotifyClear( NULL );

+    /* Don't send the string unless the previous string has been sent. */

+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )

+    {

+        /* Ensure the calling task's notification state is not already

+        pending. */

+        vTaskNotifyClear( NULL );

 

-		/* Store the handle of the transmitting task.  This is used to unblock

-		the task when the transmission has completed. */

-		xSendingTask = xTaskGetCurrentTaskHandle();

+        /* Store the handle of the transmitting task.  This is used to unblock

+        the task when the transmission has completed. */

+        xSendingTask = xTaskGetCurrentTaskHandle();

 

-		/* Send the string using the auto-generated API. */

-		R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );

+        /* Send the string using the auto-generated API. */

+        R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );

 

-		/* Wait in the Blocked state (so not using any CPU time) until the

-		transmission has completed. */

-		ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

-	}

+        /* Wait in the Blocked state (so not using any CPU time) until the

+        transmission has completed. */

+        ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

+    }

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

 multiple different demo application. */

 signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )

 {

-	/* Only one UART is supported. */

-	( void ) pxPort;

+    /* Only one UART is supported. */

+    ( void ) pxPort;

 

-	/* Return a received character, if any are available.  Otherwise block to

-	wait for a character. */

-	return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

+    /* Return a received character, if any are available.  Otherwise block to

+    wait for a character. */

+    return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

 multiple different demo application. */

 signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )

 {

-	/* Just mapped to vSerialPutString() so the block time is not used. */

-	( void ) xBlockTime;

+    /* Just mapped to vSerialPutString() so the block time is not used. */

+    ( void ) xBlockTime;

 

-	vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

-	return pdPASS;

+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

+    return pdPASS;

 }

 

 /* End user code. Do not edit comment generated here */

diff --git a/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c b/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
index 08fa2ce..7f6aaf9 100644
--- a/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
+++ b/FreeRTOS/Demo/RX100_RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
@@ -2,15 +2,15 @@
 * DISCLAIMER

 * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.

 * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all

-* applicable laws, including copyright laws. 

+* applicable laws, including copyright laws.

 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED

 * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

 * NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY

 * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,

 * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR

 * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability 

-* of this software. By using this software, you agree to the additional terms and conditions found by accessing the 

+* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability

+* of this software. By using this software, you agree to the additional terms and conditions found by accessing the

 * following link:

 * http://www.renesas.com/disclaimer

 *

@@ -110,7 +110,7 @@
         gp_sci1_tx_address++;

         g_sci1_tx_count--;

     }

-    else 

+    else

     {

         SCI1.SCR.BIT.TIE = 0U;

         SCI1.SCR.BIT.TEIE = 1U;

@@ -192,20 +192,20 @@
 void r_sci1_callback_transmitend(void)

 {

     /* Start user code. Do not edit comment generated here */

-	BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

 

-	/* The sci1_txdone flag is used by the auto generated API only. */

-	sci1_txdone = TRUE;

+    /* The sci1_txdone flag is used by the auto generated API only. */

+    sci1_txdone = TRUE;

 

-	if( xSendingTask != NULL )

-	{

-		/* A task is waiting for the end of the Tx, unblock it now.

-		http://www.freertos.org/vTaskNotifyGiveFromISR.html */

-		vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

-		xSendingTask = NULL;

+    if( xSendingTask != NULL )

+    {

+        /* A task is waiting for the end of the Tx, unblock it now.

+        http://www.freertos.org/vTaskNotifyGiveFromISR.html */

+        vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

+        xSendingTask = NULL;

 

-		portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

-	}

+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    }

     /* End user code. Do not edit comment generated here */

 }

 /***********************************************************************************************************************

@@ -217,23 +217,23 @@
 void r_sci1_callback_receiveend(void)

 {

     /* Start user code. Do not edit comment generated here */

-	BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

 

     configASSERT( xRxQueue );

 

-	/* Transmitting generates an interrupt for each character, which consumes

-	CPU time, and can cause standard demo RTOS tasks that monitor their own

-	performance to fail asserts - so don't receive new CLI commands if a

-	transmit is not already in progress. */

-	if( sci1_txdone == TRUE )

-	{

-		/* Characters received from the UART are stored in this queue, ready to be

-		received by the application.  ***NOTE*** Using a queue in this way is very

-		convenient, but also very inefficient.  It can be used here because

-		characters will only arrive slowly.  In a higher bandwidth system a circular

-		RAM buffer or DMA should be used in place of this queue. */

-		xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

-	}

+    /* Transmitting generates an interrupt for each character, which consumes

+    CPU time, and can cause standard demo RTOS tasks that monitor their own

+    performance to fail asserts - so don't receive new CLI commands if a

+    transmit is not already in progress. */

+    if( sci1_txdone == TRUE )

+    {

+        /* Characters received from the UART are stored in this queue, ready to be

+        received by the application.  ***NOTE*** Using a queue in this way is very

+        convenient, but also very inefficient.  It can be used here because

+        characters will only arrive slowly.  In a higher bandwidth system a circular

+        RAM buffer or DMA should be used in place of this queue. */

+        xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

+    }

 

     /* Set up SCI1 receive buffer again */

     R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

@@ -291,30 +291,30 @@
 multiple different demo application. */

 xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )

 {

-	( void ) ulWantedBaud;

-	( void ) uxQueueLength;

+    ( void ) ulWantedBaud;

+    ( void ) uxQueueLength;

 

-	/* Characters received from the UART are stored in this queue, ready to be

-	received by the application.  ***NOTE*** Using a queue in this way is very

-	convenient, but also very inefficient.  It can be used here because

-	characters will only arrive slowly.  In a higher bandwidth system a circular

-	RAM buffer or DMA should be used in place of this queue. */

-	xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

-	configASSERT( xRxQueue );

+    /* Characters received from the UART are stored in this queue, ready to be

+    received by the application.  ***NOTE*** Using a queue in this way is very

+    convenient, but also very inefficient.  It can be used here because

+    characters will only arrive slowly.  In a higher bandwidth system a circular

+    RAM buffer or DMA should be used in place of this queue. */

+    xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

+    configASSERT( xRxQueue );

 

-	/* Set up SCI1 receive buffer */

-	R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

+    /* Set up SCI1 receive buffer */

+    R_SCI1_Serial_Receive((uint8_t *) &g_rx_char, 1);

 

-	/* Ensure the interrupt priority is at or below

-	configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+    /* Ensure the interrupt priority is at or below

+    configMAX_SYSCALL_INTERRUPT_PRIORITY. */

     IPR( SCI1, ERI1 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

 

-	/* Enable SCI1 operations */

-	R_SCI1_Start();

+    /* Enable SCI1 operations */

+    R_SCI1_Start();

 

-	/* Only one UART is supported, so it doesn't matter what is returned

-	here. */

-	return 0;

+    /* Only one UART is supported, so it doesn't matter what is returned

+    here. */

+    return 0;

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

@@ -323,53 +323,53 @@
 {

 const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );

 

-	/* Only one port is supported. */

-	( void ) pxPort;

+    /* Only one port is supported. */

+    ( void ) pxPort;

 

-	/* Clear the flag before initiating a new transmission */

-	sci1_txdone = FALSE;

+    /* Clear the flag before initiating a new transmission */

+    sci1_txdone = FALSE;

 

-	/* Don't send the string unless the previous string has been sent. */

-	if( xSendingTask == NULL )

-	{

-		/* Ensure the calling task's notification state is not already

-		pending. */

-		vTaskNotifyClear( NULL );

+    /* Don't send the string unless the previous string has been sent. */

+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )

+    {

+        /* Ensure the calling task's notification state is not already

+        pending. */

+        vTaskNotifyClear( NULL );

 

-		/* Store the handle of the transmitting task.  This is used to unblock

-		the task when the transmission has completed. */

-		xSendingTask = xTaskGetCurrentTaskHandle();

+        /* Store the handle of the transmitting task.  This is used to unblock

+        the task when the transmission has completed. */

+        xSendingTask = xTaskGetCurrentTaskHandle();

 

-		/* Send the string using the auto-generated API. */

-		R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );

+        /* Send the string using the auto-generated API. */

+        R_SCI1_Serial_Send( ( uint8_t * ) pcString, usStringLength );

 

-		/* Wait in the Blocked state (so not using any CPU time) until the

-		transmission has completed. */

-		ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

-	}

+        /* Wait in the Blocked state (so not using any CPU time) until the

+        transmission has completed. */

+        ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

+    }

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

 multiple different demo application. */

 signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )

 {

-	/* Only one UART is supported. */

-	( void ) pxPort;

+    /* Only one UART is supported. */

+    ( void ) pxPort;

 

-	/* Return a received character, if any are available.  Otherwise block to

-	wait for a character. */

-	return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

+    /* Return a received character, if any are available.  Otherwise block to

+    wait for a character. */

+    return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

 }

 

 /* Function required in order to link UARTCommandConsole.c - which is used by

 multiple different demo application. */

 signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )

 {

-	/* Just mapped to vSerialPutString() so the block time is not used. */

-	( void ) xBlockTime;

+    /* Just mapped to vSerialPutString() so the block time is not used. */

+    ( void ) xBlockTime;

 

-	vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

-	return pdPASS;

+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

+    return pdPASS;

 }

 

 /* End user code. Do not edit comment generated here */

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.cproject b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.cproject
index 592b816..d10a559 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.cproject
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.cproject
@@ -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"/>

 								<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">

 									<listOptionValue builtIn="false" value="&quot;${TCINSTALL}/rx-elf/optlibinc&quot;"/>

+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/FreeRTOS-Plus-CLI}&quot;"/>

 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo}&quot;"/>

 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/Standard_Demo_Tasks/include}&quot;"/>

 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/cg_src}&quot;"/>

@@ -120,7 +121,7 @@
 						</toolChain>

 					</folderInfo>

 					<sourceEntries>

-						<entry excluding="cg_src/r_cg_sci_user_iar.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>

+						<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"/>

 					</sourceEntries>

 				</configuration>

 			</storageModule>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.project b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.project
index d82dcb0..838b25b 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.project
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.project
@@ -31,11 +31,26 @@
 			<locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI>

 		</link>

 		<link>

+			<name>src/Full_Demo/FreeRTOS-Plus-CLI</name>

+			<type>2</type>

+			<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI</locationURI>

+		</link>

+		<link>

+			<name>src/Full_Demo/Sample-CLI-commands.c</name>

+			<type>1</type>

+			<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/Sample-CLI-commands.c</locationURI>

+		</link>

+		<link>

 			<name>src/Full_Demo/Standard_Demo_Tasks</name>

 			<type>2</type>

 			<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI>

 		</link>

 		<link>

+			<name>src/Full_Demo/UARTCommandConsole.c</name>

+			<type>1</type>

+			<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/UARTCommandConsole.c</locationURI>

+		</link>

+		<link>

 			<name>src/Full_Demo/Standard_Demo_Tasks/include</name>

 			<type>2</type>

 			<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/include</locationURI>

@@ -43,7 +58,7 @@
 	</linkedResources>

 	<filteredResources>

 		<filter>

-			<id>1442924121510</id>

+			<id>1444769735116</id>

 			<name></name>

 			<type>10</type>

 			<matcher>

@@ -52,6 +67,69 @@
 			</matcher>

 		</filter>

 		<filter>

+			<id>1444769735116</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.dep</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444769735126</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.ewd</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444769735126</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.ewp</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444769735126</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.ewt</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444769735136</id>

+			<name></name>

+			<type>6</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-RTOSDemo.eww</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444769735136</id>

+			<name></name>

+			<type>10</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-Debug</arguments>

+			</matcher>

+		</filter>

+		<filter>

+			<id>1444769735146</id>

+			<name></name>

+			<type>10</type>

+			<matcher>

+				<id>org.eclipse.ui.ide.multiFilter</id>

+				<arguments>1.0-name-matches-false-false-settings</arguments>

+			</matcher>

+		</filter>

+		<filter>

 			<id>1442756186478</id>

 			<name>src/FreeRTOS_Source</name>

 			<type>6</type>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.settings/language.settings.xml b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.settings/language.settings.xml
index 809fddc..5ec2264 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.settings/language.settings.xml
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/.settings/language.settings.xml
@@ -3,7 +3,7 @@
 	<configuration id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.363159113" name="HardwareDebug">

 		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">

 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>

-			<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">

+			<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">

 				<language-scope id="org.eclipse.cdt.core.gcc"/>

 				<language-scope id="org.eclipse.cdt.core.g++"/>

 			</provider>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo HardwareDebug.launch b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo HardwareDebug.launch
index fbea6b4..5594e10 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo HardwareDebug.launch
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo HardwareDebug.launch
@@ -9,7 +9,7 @@
 <stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>

 <intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>

 <stringAttribute key="com.renesas.cdt.core.runCommands" value=""/>

-<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"/>

+<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"/>

 <booleanAttribute key="com.renesas.cdt.core.setResume" value="true"/>

 <booleanAttribute key="com.renesas.cdt.core.setStopAt" value="true"/>

 <booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>

@@ -29,7 +29,7 @@
 <booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>

 <intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>

 <stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" value="0"/>

-<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="false"/>

+<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="true"/>

 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable.hot.plug" value="false"/>

 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/>

 <booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" value="false"/>

@@ -62,7 +62,7 @@
 <intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>

-<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_GCC_e2studio\HardwareDebug\RTOSDemo.x"/>

+<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"/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>

@@ -73,7 +73,7 @@
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>

-<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_GCC_e2studio\HardwareDebug\RTOSDemo.x"/>

+<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"/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewd
index 3ef1570..ef652c8 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewd
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewd
@@ -29,7 +29,7 @@
         </option>

         <option>

           <name>CRunToEnable</name>

-          <state>0</state>

+          <state>1</state>

         </option>

         <option>

           <name>CRunToName</name>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewp
index 9ea5290..5fbc3f0 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewp
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/RTOSDemo.ewp
@@ -76,20 +76,20 @@
         <option>

           <name>GenLibInFormatter</name>

           <version>1</version>

-          <state>1</state>

+          <state>0</state>

         </option>

         <option>

           <name>GenLibInFormatterDescription</name>

-          <state>Full formatting.</state>

+          <state>Automatic choice of formatter.</state>

         </option>

         <option>

           <name>GenLibOutFormatter</name>

           <version>1</version>

-          <state>1</state>

+          <state>0</state>

         </option>

         <option>

           <name>GenLibOutFormatterDescription</name>

-          <state>Full formatting.</state>

+          <state>Automatic choice of formatter.</state>

         </option>

         <option>

           <name>GeneralEnableMisra</name>

@@ -255,7 +255,7 @@
         </option>

         <option>

           <name>CCDefines</name>

-          <state></state>

+          <state>__RX</state>

         </option>

         <option>

           <name>CCPreprocFile</name>

@@ -329,6 +329,7 @@
           <state>$PROJ_DIR$\..\..\Source\portable\IAR\RXv2</state>

           <state>$PROJ_DIR$\..\Common\include</state>

           <state>$PROJ_DIR$\src\Full_Demo</state>

+          <state>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI</state>

         </option>

         <option>

           <name>CCStdIncCheck</name>

@@ -1979,6 +1980,12 @@
   <group>

     <name>Full_Demo</name>

     <group>

+      <name>FreeRTOS+CLI</name>

+      <file>

+        <name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI\FreeRTOS_CLI.c</name>

+      </file>

+    </group>

+    <group>

       <name>Standard_Demo_Tasks</name>

       <file>

         <name>$PROJ_DIR$\..\Common\Minimal\BlockQ.c</name>

@@ -2035,6 +2042,12 @@
     <file>

       <name>$PROJ_DIR$\src\Full_Demo\RegTest_IAR.s</name>

     </file>

+    <file>

+      <name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\Sample-CLI-commands.c</name>

+    </file>

+    <file>

+      <name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\UARTCommandConsole.c</name>

+    </file>

   </group>

   <file>

     <name>$PROJ_DIR$\src\FreeRTOSConfig.h</name>

@@ -2043,6 +2056,9 @@
     <name>$PROJ_DIR$\src\main.c</name>

   </file>

   <file>

+    <name>$PROJ_DIR$\src\cg_src\r_cg_intprg_iar.c</name>

+  </file>

+  <file>

     <name>$PROJ_DIR$\src\rskrx71mdef.h</name>

   </file>

 </project>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dbgdt
index 4f7e510..5e0066f 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dbgdt
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dbgdt
@@ -4,9 +4,9 @@
   <Desktop>

     <Static>

       <Debug-Log>

-        <ColumnWidth0>20</ColumnWidth0>

-        <ColumnWidth1>1622</ColumnWidth1>

-      </Debug-Log>

+        

+        

+      <ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>

       <Build>

         <ColumnWidth0>20</ColumnWidth0>

         <ColumnWidth1>1216</ColumnWidth1>

@@ -15,31 +15,31 @@
       </Build>

       <Workspace>

         <ColumnWidths>

-          <Column0>255</Column0>

-          <Column1>27</Column1>

-          <Column2>27</Column2>

-          <Column3>27</Column3>

-        </ColumnWidths>

+          

+          

+          

+          

+        <Column0>255</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>

       </Workspace>

       <Disassembly>

         <col-names>

-          <item>Disassembly</item>

-          <item>_I0</item>

-        </col-names>

+          

+          

+        <item>Disassembly</item><item>_I0</item></col-names>

         <col-widths>

-          <item>500</item>

-          <item>20</item>

-        </col-widths>

+          

+          

+        <item>500</item><item>20</item></col-widths>

         <DisasmHistory/>

         <PreferedWindows>

-          <Position>2</Position>

-          <ScreenPosX>0</ScreenPosX>

-          <ScreenPosY>0</ScreenPosY>

-          <Windows/>

-        </PreferedWindows>

-        <ShowCodeCoverage>1</ShowCodeCoverage>

-        <ShowInstrProfiling>1</ShowInstrProfiling>

-      </Disassembly>

+          

+          

+          

+          

+        <Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>

+        

+        

+      <ShowCodeCoverage>1</ShowCodeCoverage><ShowInstrProfiling>1</ShowInstrProfiling></Disassembly>

       <Register>

         <PreferedWindows>

           <Position>2</Position>

@@ -48,9 +48,11 @@
           <Windows/>

         </PreferedWindows>

       </Register>

-    </Static>

+    <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>

     <Windows>

-      <Wnd1>

+      

+      

+    <Wnd3>

         <Tabs>

           <Tab>

             <Identity>TabID-6594-3339</Identity>

@@ -64,180 +66,34 @@
             <Factory>Build</Factory>

             <Session/>

           </Tab>

-        </Tabs>

-        <SelectedTab>0</SelectedTab>

-      </Wnd1>

-      <Wnd4>

+        <Tab><Identity>TabID-19467-29965</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>

+        

+      <SelectedTab>0</SelectedTab></Wnd3><Wnd4>

         <Tabs>

           <Tab>

             <Identity>TabID-17343-3342</Identity>

             <TabName>Workspace</TabName>

             <Factory>Workspace</Factory>

             <Session>

-              <NodeDict>

-                <ExpandedNode>RTOSDemo</ExpandedNode>

-              </NodeDict>

-            </Session>

+              

+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>

           </Tab>

         </Tabs>

-        <SelectedTab>0</SelectedTab>

-      </Wnd4>

-    </Windows>

+        

+      <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>

     <Editor>

-      <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>154</YPos2>

-          <SelStart2>7349</SelStart2>

-          <SelEnd2>7349</SelEnd2>

-        </Tab>

-        <ActiveTab>5</ActiveTab>

-      </Pane>

-      <ActivePane>0</ActivePane>

-      <Sizes>

-        <Pane>

-          <X>1000000</X>

-          <Y>1000000</Y>

-        </Pane>

-      </Sizes>

-      <SplitMode>1</SplitMode>

-    </Editor>

+      

+      

+      

+      

+    <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>

     <Positions>

-      <Top>

-        <Row0>

-          <Sizes>

-            <Toolbar-026E7B08>

-              <key>iaridepm.enu1</key>

-            </Toolbar-026E7B08>

-          </Sizes>

-        </Row0>

-        <Row1>

-          <Sizes>

-            <Toolbar-1DFB9BD8>

-              <key>debuggergui.enu1</key>

-            </Toolbar-1DFB9BD8>

-          </Sizes>

-        </Row1>

-      </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/>

-        </Row0>

-      </Right>

-      <Bottom>

-        <Row0>

-          <Sizes>

-            <Wnd1>

-              <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>

-            </Wnd1>

-          </Sizes>

-        </Row0>

-      </Bottom>

-      <Float>

-        <Sizes/>

-      </Float>

-    </Positions>

+      

+      

+      

+      

+      

+    <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>

   </Desktop>

 </Project>

 

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dni
index 9d63d23..ce57782 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dni
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.dni
@@ -1,5 +1,5 @@
 [DebugChecksum]

-Checksum=-126027898

+Checksum=-1340739960

 [CodeCoverage]

 Enabled=_ 0

 [Stack]

@@ -53,116 +53,116 @@
 RegMode=0

 Endian=0

 ExtMemBlockNum=55

-ExtMemEndian_000=0                                  

-ExtMemCondAccess_000=0                                  

-ExtMemEndian_001=0                                  

-ExtMemCondAccess_001=0                                  

-ExtMemEndian_002=0                                  

-ExtMemCondAccess_002=0                                  

-ExtMemEndian_003=0                                  

-ExtMemCondAccess_003=0                                  

-ExtMemEndian_004=0                                  

-ExtMemCondAccess_004=0                                  

-ExtMemEndian_005=0                                  

-ExtMemCondAccess_005=0                                  

-ExtMemEndian_006=0                                  

-ExtMemCondAccess_006=0                                  

-ExtMemEndian_007=0                                  

-ExtMemCondAccess_007=0                                  

-ExtMemEndian_008=0                                  

-ExtMemCondAccess_008=0                                  

-ExtMemEndian_009=0                                  

-ExtMemCondAccess_009=0                                  

-ExtMemEndian_010=0                                  

-ExtMemCondAccess_010=0                                  

-ExtMemEndian_011=0                                  

-ExtMemCondAccess_011=0                                  

-ExtMemEndian_012=0                                  

-ExtMemCondAccess_012=0                                  

-ExtMemEndian_013=0                                  

-ExtMemCondAccess_013=0                                  

-ExtMemEndian_014=0                                  

-ExtMemCondAccess_014=0                                  

-ExtMemEndian_015=0                                  

-ExtMemCondAccess_015=0                                  

-ExtMemEndian_016=0                                  

-ExtMemCondAccess_016=0                                  

-ExtMemEndian_017=0                                  

-ExtMemCondAccess_017=0                                  

-ExtMemEndian_018=0                                  

-ExtMemCondAccess_018=0                                  

-ExtMemEndian_019=0                                  

-ExtMemCondAccess_019=0                                  

-ExtMemEndian_020=0                                  

-ExtMemCondAccess_020=0                                  

-ExtMemEndian_021=0                                  

-ExtMemCondAccess_021=0                                  

-ExtMemEndian_022=0                                  

-ExtMemCondAccess_022=0                                  

-ExtMemEndian_023=0                                  

-ExtMemCondAccess_023=0                                  

-ExtMemEndian_024=0                                  

-ExtMemCondAccess_024=0                                  

-ExtMemEndian_025=0                                  

-ExtMemCondAccess_025=0                                  

-ExtMemEndian_026=0                                  

-ExtMemCondAccess_026=0                                  

-ExtMemEndian_027=0                                  

-ExtMemCondAccess_027=0                                  

-ExtMemEndian_028=0                                  

-ExtMemCondAccess_028=0                                  

-ExtMemEndian_029=0                                  

-ExtMemCondAccess_029=0                                  

-ExtMemEndian_030=0                                  

-ExtMemCondAccess_030=0                                  

-ExtMemEndian_031=0                                  

-ExtMemCondAccess_031=0                                  

-ExtMemEndian_032=0                                  

-ExtMemCondAccess_032=0                                  

-ExtMemEndian_033=0                                  

-ExtMemCondAccess_033=0                                  

-ExtMemEndian_034=0                                  

-ExtMemCondAccess_034=0                                  

-ExtMemEndian_035=0                                  

-ExtMemCondAccess_035=0                                  

-ExtMemEndian_036=0                                  

-ExtMemCondAccess_036=0                                  

-ExtMemEndian_037=0                                  

-ExtMemCondAccess_037=0                                  

-ExtMemEndian_038=0                                  

-ExtMemCondAccess_038=0                                  

-ExtMemEndian_039=0                                  

-ExtMemCondAccess_039=0                                  

-ExtMemEndian_040=0                                  

-ExtMemCondAccess_040=0                                  

-ExtMemEndian_041=0                                  

-ExtMemCondAccess_041=0                                  

-ExtMemEndian_042=0                                  

-ExtMemCondAccess_042=0                                  

-ExtMemEndian_043=0                                  

-ExtMemCondAccess_043=0                                  

-ExtMemEndian_044=0                                  

-ExtMemCondAccess_044=0                                  

-ExtMemEndian_045=0                                  

-ExtMemCondAccess_045=0                                  

-ExtMemEndian_046=0                                  

-ExtMemCondAccess_046=0                                  

-ExtMemEndian_047=0                                  

-ExtMemCondAccess_047=0                                  

-ExtMemEndian_048=0                                  

-ExtMemCondAccess_048=0                                  

-ExtMemEndian_049=0                                  

-ExtMemCondAccess_049=0                                  

-ExtMemEndian_050=0                                  

-ExtMemCondAccess_050=0                                  

-ExtMemEndian_051=0                                  

-ExtMemCondAccess_051=0                                  

-ExtMemEndian_052=0                                  

-ExtMemCondAccess_052=0                                  

-ExtMemEndian_053=0                                  

-ExtMemCondAccess_053=0                                  

-ExtMemEndian_054=0                                  

-ExtMemCondAccess_054=0                                  

+ExtMemEndian_000=0                                                                                                    

+ExtMemCondAccess_000=0                                                                                                    

+ExtMemEndian_001=0                                                                                                    

+ExtMemCondAccess_001=0                                                                                                    

+ExtMemEndian_002=0                                                                                                    

+ExtMemCondAccess_002=0                                                                                                    

+ExtMemEndian_003=0                                                                                                    

+ExtMemCondAccess_003=0                                                                                                    

+ExtMemEndian_004=0                                                                                                    

+ExtMemCondAccess_004=0                                                                                                    

+ExtMemEndian_005=0                                                                                                    

+ExtMemCondAccess_005=0                                                                                                    

+ExtMemEndian_006=0                                                                                                    

+ExtMemCondAccess_006=0                                                                                                    

+ExtMemEndian_007=0                                                                                                    

+ExtMemCondAccess_007=0                                                                                                    

+ExtMemEndian_008=0                                                                                                    

+ExtMemCondAccess_008=0                                                                                                    

+ExtMemEndian_009=0                                                                                                    

+ExtMemCondAccess_009=0                                                                                                    

+ExtMemEndian_010=0                                                                                                    

+ExtMemCondAccess_010=0                                                                                                    

+ExtMemEndian_011=0                                                                                                    

+ExtMemCondAccess_011=0                                                                                                    

+ExtMemEndian_012=0                                                                                                    

+ExtMemCondAccess_012=0                                                                                                    

+ExtMemEndian_013=0                                                                                                    

+ExtMemCondAccess_013=0                                                                                                    

+ExtMemEndian_014=0                                                                                                    

+ExtMemCondAccess_014=0                                                                                                    

+ExtMemEndian_015=0                                                                                                    

+ExtMemCondAccess_015=0                                                                                                    

+ExtMemEndian_016=0                                                                                                    

+ExtMemCondAccess_016=0                                                                                                    

+ExtMemEndian_017=0                                                                                                    

+ExtMemCondAccess_017=0                                                                                                    

+ExtMemEndian_018=0                                                                                                    

+ExtMemCondAccess_018=0                                                                                                    

+ExtMemEndian_019=0                                                                                                    

+ExtMemCondAccess_019=0                                                                                                    

+ExtMemEndian_020=0                                                                                                    

+ExtMemCondAccess_020=0                                                                                                    

+ExtMemEndian_021=0                                                                                                    

+ExtMemCondAccess_021=0                                                                                                    

+ExtMemEndian_022=0                                                                                                    

+ExtMemCondAccess_022=0                                                                                                    

+ExtMemEndian_023=0                                                                                                    

+ExtMemCondAccess_023=0                                                                                                    

+ExtMemEndian_024=0                                                                                                    

+ExtMemCondAccess_024=0                                                                                                    

+ExtMemEndian_025=0                                                                                                    

+ExtMemCondAccess_025=0                                                                                                    

+ExtMemEndian_026=0                                                                                                    

+ExtMemCondAccess_026=0                                                                                                    

+ExtMemEndian_027=0                                                                                                    

+ExtMemCondAccess_027=0                                                                                                    

+ExtMemEndian_028=0                                                                                                    

+ExtMemCondAccess_028=0                                                                                                    

+ExtMemEndian_029=0                                                                                                    

+ExtMemCondAccess_029=0                                                                                                    

+ExtMemEndian_030=0                                                                                                    

+ExtMemCondAccess_030=0                                                                                                    

+ExtMemEndian_031=0                                                                                                    

+ExtMemCondAccess_031=0                                                                                                    

+ExtMemEndian_032=0                                                                                                    

+ExtMemCondAccess_032=0                                                                                                    

+ExtMemEndian_033=0                                                                                                    

+ExtMemCondAccess_033=0                                                                                                    

+ExtMemEndian_034=0                                                                                                    

+ExtMemCondAccess_034=0                                                                                                    

+ExtMemEndian_035=0                                                                                                    

+ExtMemCondAccess_035=0                                                                                                    

+ExtMemEndian_036=0                                                                                                    

+ExtMemCondAccess_036=0                                                                                                    

+ExtMemEndian_037=0                                                                                                    

+ExtMemCondAccess_037=0                                                                                                    

+ExtMemEndian_038=0                                                                                                    

+ExtMemCondAccess_038=0                                                                                                    

+ExtMemEndian_039=0                                                                                                    

+ExtMemCondAccess_039=0                                                                                                    

+ExtMemEndian_040=0                                                                                                    

+ExtMemCondAccess_040=0                                                                                                    

+ExtMemEndian_041=0                                                                                                    

+ExtMemCondAccess_041=0                                                                                                    

+ExtMemEndian_042=0                                                                                                    

+ExtMemCondAccess_042=0                                                                                                    

+ExtMemEndian_043=0                                                                                                    

+ExtMemCondAccess_043=0                                                                                                    

+ExtMemEndian_044=0                                                                                                    

+ExtMemCondAccess_044=0                                                                                                    

+ExtMemEndian_045=0                                                                                                    

+ExtMemCondAccess_045=0                                                                                                    

+ExtMemEndian_046=0                                                                                                    

+ExtMemCondAccess_046=0                                                                                                    

+ExtMemEndian_047=0                                                                                                    

+ExtMemCondAccess_047=0                                                                                                    

+ExtMemEndian_048=0                                                                                                    

+ExtMemCondAccess_048=0                                                                                                    

+ExtMemEndian_049=0                                                                                                    

+ExtMemCondAccess_049=0                                                                                                    

+ExtMemEndian_050=0                                                                                                    

+ExtMemCondAccess_050=0                                                                                                    

+ExtMemEndian_051=0                                                                                                    

+ExtMemCondAccess_051=0                                                                                                    

+ExtMemEndian_052=0                                                                                                    

+ExtMemCondAccess_052=0                                                                                                    

+ExtMemEndian_053=0                                                                                                    

+ExtMemCondAccess_053=0                                                                                                    

+ExtMemEndian_054=0                                                                                                    

+ExtMemCondAccess_054=0                                                                                                    

 InputClock=25.000000

 ICLK=240.000000

 AllowClkSrcChange=0

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wsdt
index 4295315..8fdc6d8 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wsdt
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wsdt
@@ -12,7 +12,7 @@
           

           

           

-        <Column0>310</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>

+        <Column0>326</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>

       </Workspace>

       <Build>

         

@@ -25,7 +25,7 @@
         <ColumnWidth0>20</ColumnWidth0>

         <ColumnWidth1>1622</ColumnWidth1>

       </Debug-Log>

-    </Static>

+    <Find-in-Files><ColumnWidth0>497</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>746</ColumnWidth2><ColumnWidth3>331</ColumnWidth3></Find-in-Files></Static>

     <Windows>

       

       

@@ -37,7 +37,7 @@
             <Factory>Workspace</Factory>

             <Session>

               

-            <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>

+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo/FreeRTOS+CLI</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>

           </Tab>

         </Tabs>

         

@@ -55,7 +55,7 @@
             <Factory>Debug-Log</Factory>

             <Session/>

           </Tab>

-        </Tabs>

+        <Tab><Identity>TabID-17690-32046</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>

         

       <SelectedTab>0</SelectedTab></Wnd3></Windows>

     <Editor>

@@ -63,14 +63,14 @@
       

       

       

-    <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>

+    <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>

     <Positions>

       

       

       

       

       

-    <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>

+    <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>

   </Desktop>

 </Workspace>

 

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wspos b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wspos
index ecdc2c4..58fc39b 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wspos
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/settings/RTOSDemo.wspos
@@ -1,2 +1,2 @@
 [MainWindow]

-WindowPlacement=_ 519 0 1619 872 3

+WindowPlacement=_ 250 0 1350 872 3

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Blinky_Demo/main_blinky.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Blinky_Demo/main_blinky.c
index dab3ec0..afe12f0 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Blinky_Demo/main_blinky.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Blinky_Demo/main_blinky.c
@@ -84,24 +84,14 @@
  *

  * The Queue Send Task:

  * The queue send task is implemented by the prvQueueSendTask() function in

- * this file.  prvQueueSendTask() sits in a loop that causes it to repeatedly

- * block for 200 milliseconds, before sending the value 100 to the queue that

- * was created within main_blinky().  Once the value is sent, the task loops

- * back around to block for another 200 milliseconds...and so on.

+ * this file.  It sends the value 100 to the queue every 200 milliseconds.

  *

  * The Queue Receive Task:

  * The queue receive task is implemented by the prvQueueReceiveTask() function

- * in this file.  prvQueueReceiveTask() sits in a loop where it repeatedly

- * blocks on attempts to read data from the queue that was created within

- * main_blinky().  When data is received, the task checks the value of the

- * data, and if the value equals the expected 100, toggles an LED.  The 'block

- * time' parameter passed to the queue receive function specifies that the

- * task should be held in the Blocked state indefinitely to wait for data to

- * be available on the queue.  The queue receive task will only leave the

- * Blocked state when the queue send task writes to the queue.  As the queue

- * send task writes to the queue every 200 milliseconds, the queue receive

- * task leaves the Blocked state every 200 milliseconds, and therefore toggles

- * the LED every 200 milliseconds.

+ * in this file.  It blocks on the queue to wait for data to arrive from the

+ * queue send task - toggling the LED each time it receives the value 100.  The

+ * queue send task writes to the queue every 200ms, so the LED should toggle

+ * every 200ms.

  */

 

 /* Kernel includes. */

@@ -120,7 +110,7 @@
 

 /* The rate at which data is sent to the queue.  The 200ms value is converted

 to ticks using the portTICK_PERIOD_MS constant. */

-#define mainQUEUE_SEND_FREQUENCY_MS			( 200 / portTICK_PERIOD_MS )

+#define mainQUEUE_SEND_FREQUENCY_MS			( pdMS_TO_TICKS( 200UL ) )

 

 /* The number of items the queue can hold.  This is 1 as the receive task

 will remove items as they are added, meaning the send task should always find

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/FreeRTOSConfig.h b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/FreeRTOSConfig.h
index 5faf0ce..a545a79 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/FreeRTOSConfig.h
@@ -95,11 +95,11 @@
 #define configUSE_PREEMPTION			1

 #define configUSE_IDLE_HOOK				1

 #define configUSE_TICK_HOOK				1

-#define configCPU_CLOCK_HZ				( 120000000UL ) /*_RB_ guess*/

-#define configPERIPHERAL_CLOCK_HZ		( 60000000UL ) /*_RB_ guess*/

+#define configCPU_CLOCK_HZ				( 120000000UL )

+#define configPERIPHERAL_CLOCK_HZ		( 60000000UL )

 #define configTICK_RATE_HZ				( ( TickType_t ) 1000 )

-#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 140 )

-#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 40 * 1024 ) )

+#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 120 )

+#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 50 * 1024 ) )

 #define configMAX_TASK_NAME_LEN			( 12 )

 #define configUSE_TRACE_FACILITY		1

 #define configUSE_16_BIT_TICKS			0

@@ -117,6 +117,12 @@
 #define configMAX_PRIORITIES			( 7 )

 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

 

+/* This demo makes use of one or more example stats formatting functions.  These

+format the raw data provided by the uxTaskGetSystemState() function in to human

+readable ASCII form.  See the notes in the implementation of vTaskList() within

+FreeRTOS/Source/tasks.c for limitations. */

+#define configUSE_STATS_FORMATTING_FUNCTIONS	1

+

 /* Software timer definitions. */

 #define configUSE_TIMERS				1

 #define configTIMER_TASK_PRIORITY		( configMAX_PRIORITIES - 1 )

@@ -152,9 +158,14 @@
 #define INCLUDE_eTaskGetState				1

 #define INCLUDE_xTimerPendFunctionCall		1

 

-void vAssertCalled( void );

 #define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }

 

+/* The buffer into which output generated by FreeRTOS+CLI is placed.  This must

+be at least big enough to contain the output of the task-stats command, as the

+example implementation does not include buffer overlow checking. */

+#define configCOMMAND_INT_MAX_OUTPUT_SIZE	3500

+#define configINCLUDE_QUERY_HEAP_COMMAND	1

+

 /* Override some of the priorities set in the common demo tasks.  This is

 required to ensure flase positive timing errors are not reported. */

 #define bktPRIMARY_PRIORITY		( configMAX_PRIORITIES - 3 )

@@ -162,28 +173,4 @@
 #define intqHIGHER_PRIORITY		( configMAX_PRIORITIES - 3 )

 

 

-/*-----------------------------------------------------------

- * Ethernet configuration.

- *-----------------------------------------------------------*/

-

-/* MAC address configuration. */

-#define configMAC_ADDR0	0x00

-#define configMAC_ADDR1	0x12

-#define configMAC_ADDR2	0x13

-#define configMAC_ADDR3	0x10

-#define configMAC_ADDR4	0x15

-#define configMAC_ADDR5	0x11

-

-/* IP address configuration. */

-#define configIP_ADDR0		192

-#define configIP_ADDR1		168

-#define configIP_ADDR2		0

-#define configIP_ADDR3		200

-

-/* Netmask configuration. */

-#define configNET_MASK0		255

-#define configNET_MASK1		255

-#define configNET_MASK2		255

-#define configNET_MASK3		0

-

 #endif /* FREERTOS_CONFIG_H */

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/IntQueueTimer.h b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/IntQueueTimer.h
index fcf9f8c..a26068c 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/IntQueueTimer.h
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/IntQueueTimer.h
@@ -71,8 +71,8 @@
 #define INT_QUEUE_TIMER_H

 

 void vInitialiseTimerForIntQueueTest( void );

-portBASE_TYPE xTimer0Handler( void );

-portBASE_TYPE xTimer1Handler( void );

+BaseType_t xTimer0Handler( void );

+BaseType_t xTimer1Handler( void );

 

 #endif

 

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/main_full.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/main_full.c
index e4edba2..4a0b7aa 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/main_full.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Full_Demo/main_full.c
@@ -81,7 +81,7 @@
  *

  ******************************************************************************

  *

- * main_full() creates all the demo application tasks and software timers, then

+ * main_full() creates a set of demo application tasks and software timers, then

  * starts the scheduler.  The web documentation provides more details of the

  * standard demo application tasks, which provide no particular functionality,

  * but do provide a good example of how to use the FreeRTOS API.

@@ -89,6 +89,12 @@
  * In addition to the standard demo tasks, the following tasks and tests are

  * defined and/or created within this file:

  *

+ * "FreeRTOS+CLI command console" -  The command console uses SCI1 for its

+ * input and output.  The baud rate is set to 19200.  Type "help" to see a list

+ * of registered commands.  The FreeRTOS+CLI license is different to the

+ * FreeRTOS license, see http://www.FreeRTOS.org/cli for license and usage

+ * details.

+ *

  * "Reg test" tasks - These fill both the core and floating point registers with

  * known values, then check that each register maintains its expected value for

  * the lifetime of the task.  Each task uses a different set of values.  The reg

@@ -97,19 +103,17 @@
  * error in the context switching mechanism.

  *

  * "Check" task - The check task period is initially set to three seconds.  The

- * task checks that all the standard demo tasks, and the register check tasks,

- * are not only still executing, but are executing without reporting any errors.

- * If the check task discovers that a task has either stalled, or reported an

- * error, then it changes its own execution period from the initial three

- * seconds, to just 200ms.  The check task also toggles an LED each time it is

- * called.  This provides a visual indication of the system status:  If the LED

- * toggles every three seconds, then no issues have been discovered.  If the LED

- * toggles every 200ms, then an issue has been discovered with at least one

- * task.

+ * task checks that all the standard demo tasks are not only still executing,

+ * but are executing without reporting any errors.  If the check task discovers

+ * that a task has either stalled, or reported an error, then it changes its own

+ * execution period from the initial three seconds, to just 200ms.  The check

+ * task also toggles an LED on each iteration of its loop.  This provides a

+ * visual indication of the system status:  If the LED toggles every three

+ * seconds, then no issues have been discovered.  If the LED toggles every

+ * 200ms, then an issue has been discovered with at least one task.

  */

 

 /* Standard includes. */

-#include <rskrx71mdef.h>

 #include <stdio.h>

 

 /* Kernel includes. */

@@ -139,6 +143,7 @@
 #include "IntSemTest.h"

 

 /* Renesas includes. */

+#include <rskrx71mdef.h>

 #include "r_cg_macrodriver.h"

 #include "r_cg_userdefine.h"

 

@@ -148,30 +153,26 @@
 #define mainCREATOR_TASK_PRIORITY			( tskIDLE_PRIORITY + 3UL )

 #define mainFLOP_TASK_PRIORITY				( tskIDLE_PRIORITY )

 #define mainUART_COMMAND_CONSOLE_STACK_SIZE	( configMINIMAL_STACK_SIZE * 3UL )

-#define mainCOM_TEST_TASK_PRIORITY			( tskIDLE_PRIORITY + 2 )

 #define mainCHECK_TASK_PRIORITY				( configMAX_PRIORITIES - 1 )

 #define mainQUEUE_OVERWRITE_PRIORITY		( tskIDLE_PRIORITY )

 

 /* The priority used by the UART command console task. */

 #define mainUART_COMMAND_CONSOLE_TASK_PRIORITY	( configMAX_PRIORITIES - 2 )

 

-/* A block time of zero simply means "don't block". */

-#define mainDONT_BLOCK						( 0UL )

-

 /* The period after which the check timer will expire, in ms, provided no errors

 have been reported by any of the standard demo tasks.  ms are converted to the

 equivalent in ticks using the portTICK_PERIOD_MS constant. */

-#define mainNO_ERROR_CHECK_TASK_PERIOD		( 3000UL / portTICK_PERIOD_MS )

+#define mainNO_ERROR_CHECK_TASK_PERIOD		pdMS_TO_TICKS( 3000UL )

 

 /* The period at which the check timer will expire, in ms, if an error has been

 reported in one of the standard demo tasks.  ms are converted to the equivalent

 in ticks using the portTICK_PERIOD_MS constant. */

-#define mainERROR_CHECK_TASK_PERIOD 		( 200UL / portTICK_PERIOD_MS )

+#define mainERROR_CHECK_TASK_PERIOD 		pdMS_TO_TICKS( 200UL )

 

 /* Parameters that are passed into the register check tasks solely for the

 purpose of ensuring parameters are passed into tasks correctly. */

-#define mainREG_TEST_1_PARAMETER	( ( void * ) 0x12121212UL )

-#define mainREG_TEST_2_PARAMETER	( ( void * ) 0x12345678UL )

+#define mainREG_TEST_1_PARAMETER			( ( void * ) 0x12121212UL )

+#define mainREG_TEST_2_PARAMETER			( ( void * ) 0x12345678UL )

 

 /* The base period used by the timer test tasks. */

 #define mainTIMER_TEST_PERIOD				( 50 )

@@ -212,6 +213,17 @@
  */

 static void prvPseudoRandomiser( void *pvParameters );

 

+/*

+ * Register commands that can be used with FreeRTOS+CLI.  The commands are

+ * defined in CLI-Commands.c and File-Related-CLI-Command.c respectively.

+ */

+extern void vRegisterSampleCLICommands( void );

+

+/*

+ * The task that manages the FreeRTOS+CLI input and output.

+ */

+extern void vUARTCommandConsoleStart( uint16_t usStackSize, UBaseType_t uxPriority );

+

 /*-----------------------------------------------------------*/

 

 /* The following two variables are used to communicate the status of the

@@ -220,9 +232,6 @@
 stops incrementing, then an error has been found. */

 volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;

 

-/* String for display in the web server.  It is set to an error message if the

-check task detects an error.  */

-const char *pcStatusMessage = "All tasks running without error";

 /*-----------------------------------------------------------*/

 

 void main_full( void )

@@ -250,7 +259,14 @@
 	xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );

 

 	/* Create the task that just adds a little random behaviour. */

-	xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL );

+	xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 2, NULL );

+

+	/* Start the tasks that implements the command console on the UART, as

+	described above. */

+	vUARTCommandConsoleStart( mainUART_COMMAND_CONSOLE_STACK_SIZE, mainUART_COMMAND_CONSOLE_TASK_PRIORITY );

+

+	/* Register the standard CLI commands. */

+	vRegisterSampleCLICommands();

 

 	/* Create the task that performs the 'check' functionality,	as described at

 	the top of this file. */

@@ -404,7 +420,6 @@
 			gone wrong (it might just be that the loop back connector required

 			by the comtest tasks has not been fitted). */

 			xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;

-			pcStatusMessage = "Error found in at least one task.";

 		}

 	}

 }

@@ -412,7 +427,7 @@
 

 static void prvPseudoRandomiser( void *pvParameters )

 {

-const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = ( 35 / portTICK_PERIOD_MS );

+const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = pdMS_TO_TICKS( 35 );

 volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;

 

 	/* This task does nothing other than ensure there is a little bit of

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/interrupt_handlers.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/interrupt_handlers.c
index 8505c60..a52504c 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/interrupt_handlers.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/interrupt_handlers.c
@@ -16,6 +16,7 @@
 /*    Date Generated: 18/12/2014                                        */

 /************************************************************************/

 #include "interrupt_handlers.h"

+#include "iodefine.h"

 

 // Exception(Supervisor Instruction)

 void INT_Excep_SuperVisorInst(void){/* brk(); */}

@@ -328,7 +329,20 @@
 //;0x01B4 Reserved 

 

 //;0x01B8 GROUPBL0

-void INT_Excep_ICU_GROUPBL0(void){ }

+void INT_Excep_ICU_GROUPBL0(void)

+{

+extern void r_sci7_transmitend_interrupt( void );

+extern void r_sci7_receiveerror_interrupt( void );

+

+    if (ICU.GRPBL0.BIT.IS14 == 1U)

+    {

+        r_sci7_transmitend_interrupt();

+    }

+    if (ICU.GRPBL0.BIT.IS15 == 1U)

+    {

+        r_sci7_receiveerror_interrupt();

+    }

+}

 

 //;0x01BC GROUPBL1

 void INT_Excep_ICU_GROUPBL1(void){ }

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/vector_table.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/vector_table.c
index 2c6ff85..486f4f1 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/vector_table.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/Renesas_Source/vector_table.c
@@ -25,6 +25,8 @@
 extern void vSoftwareInterruptISR( void );

 extern void vIntQTimerISR0( void );

 extern void vIntQTimerISR1( void );

+void r_sci7_transmit_interrupt(void);

+void r_sci7_receive_interrupt(void);

 

 #define EXVECT_SECT    __attribute__ ((section (".exvectors")))

 

@@ -365,10 +367,10 @@
     (fp)INT_Excep_PDC_PCDFI,

 

 //;0x0188 RXI7

-    (fp)INT_Excep_SCI7_RXI7,

+    (fp)r_sci7_receive_interrupt,

 

 //;0x018C TXI7

-    (fp)INT_Excep_SCI7_TXI7,

+    (fp)r_sci7_transmit_interrupt,

 

 //;0x0190 RXIF8

     (fp)INT_Excep_SCIFA8_RXIF8,

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
index 0000000..60f3a75
--- /dev/null
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_intprg_iar.c
@@ -0,0 +1,127 @@
+/* Adapted for use with IAR Embedded Workbench */

+/***********************************************************************************************************************

+* DISCLAIMER

+* This software is supplied by Renesas Electronics Corporation and is only

+* intended for use with Renesas products. No other uses are authorized. This

+* software is owned by Renesas Electronics Corporation and is protected under

+* all applicable laws, including copyright laws.

+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING

+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT

+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE

+* AND NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.

+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS

+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE

+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR

+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE

+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+* Renesas reserves the right, without notice, to make changes to this software

+* and to discontinue the availability of this software.  By using this software,

+* you agree to the additional terms and conditions found by accessing the

+* following link:

+* http://www.renesas.com/disclaimer

+*

+* Copyright (C) 2013, 2014 Renesas Electronics Corporation. All rights reserved.

+***********************************************************************************************************************/

+

+/***********************************************************************************************************************

+* File Name    : r_cg_intprg.c

+* Version      : Code Generator for RX64M V1.00.01.01 [09 May 2014]

+* Device(s)    : R5F571MLCxFC

+* Tool-Chain   : IAR Embedded Workbench

+* Description  : Setting of B.

+* Creation Date: 30/06/2014

+***********************************************************************************************************************/

+

+/***********************************************************************************************************************

+Pragma directive

+***********************************************************************************************************************/

+/* Start user code for pragma. Do not edit comment generated here */

+/* End user code. Do not edit comment generated here */

+

+/***********************************************************************************************************************

+Includes

+***********************************************************************************************************************/

+#include "r_cg_macrodriver.h"

+#include <machine.h>

+#include "r_cg_userdefine.h"

+

+/***********************************************************************************************************************

+Global variables and functions

+***********************************************************************************************************************/

+

+

+// fixedint.c in $TOOLKIT$/rx/src/lib/src

+/* Undefined exceptions for supervisor instruction, undefined instruction and floating point exceptions */

+__interrupt void __undefined_handler (void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+/* NMI */

+__interrupt void __NMI_handler (void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+

+/* BRK */

+#pragma vector=0

+__interrupt void r_brk_exception(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+/* ICU GROUPBE0 */

+#pragma vector=VECT(ICU,GROUPBE0)

+__interrupt void r_icu_group_be0_interrupt(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+

+/* ICU GROUPBL0 */

+#pragma vector=VECT(ICU,GROUPBL0)

+__interrupt void r_icu_group_bl0_interrupt(void)

+{

+    if (ICU.GRPBL0.BIT.IS14 == 1U)

+    {

+        r_sci7_transmitend_interrupt();

+    }

+    if (ICU.GRPBL0.BIT.IS15 == 1U)

+    {

+        r_sci7_receiveerror_interrupt();

+    }

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+/* ICU GROUPBL1 */

+#pragma vector=VECT(ICU,GROUPBL1)

+__interrupt void r_icu_group_bl1_interrupt(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+/* ICU GROUPAL0 */

+#pragma vector=VECT(ICU,GROUPAL0)

+__interrupt void r_icu_group_al0_interrupt(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+/* ICU GROUPAL1 */

+#pragma vector=VECT(ICU,GROUPAL1)

+__interrupt void r_icu_group_al1_interrupt(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+/* Start user code for adding. Do not edit comment generated here */

+/* End user code. Do not edit comment generated here */

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_macrodriver.h b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_macrodriver.h
index a099d50..c3def9c 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_macrodriver.h
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_macrodriver.h
@@ -33,6 +33,7 @@
 #ifdef __ICCRX__

 	#include <iorx71m.h>

 	#include <machine.h>

+	#include <stdint.h>

 #endif

 

 #ifdef __GNUC__

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
index 6f4c8bc..0000000
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/***********************************************************************************************************************

-* DISCLAIMER

-* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.

-* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all

-* applicable laws, including copyright laws. 

-* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED

-* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

-* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY

-* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,

-* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR

-* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability 

-* of this software. By using this software, you agree to the additional terms and conditions found by accessing the 

-* following link:

-* http://www.renesas.com/disclaimer

-*

-* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.

-***********************************************************************************************************************/

-

-/***********************************************************************************************************************

-* File Name    : r_cg_sci_user.c

-* Version      : Code Generator for RX71M V1.00.02.02 [28 May 2015]

-* Device(s)    : R5F571MLCxFC

-* Tool-Chain   : CCRX

-* Description  : This file implements device driver for SCI module.

-* Creation Date: 20/09/2015

-***********************************************************************************************************************/

-

-/***********************************************************************************************************************

-Pragma directive

-***********************************************************************************************************************/

-/* Start user code for pragma. Do not edit comment generated here */

-/* End user code. Do not edit comment generated here */

-

-/***********************************************************************************************************************

-Includes

-***********************************************************************************************************************/

-#include "r_cg_macrodriver.h"

-#include "r_cg_sci.h"

-/* Start user code for include. Do not edit comment generated here */

-/* End user code. Do not edit comment generated here */

-#include "r_cg_userdefine.h"

-

-/***********************************************************************************************************************

-Global variables and functions

-***********************************************************************************************************************/

-extern uint8_t * gp_sci7_tx_address;                /* SCI7 send buffer address */

-extern uint16_t  g_sci7_tx_count;                   /* SCI7 send data number */

-extern uint8_t * gp_sci7_rx_address;                /* SCI7 receive buffer address */

-extern uint16_t  g_sci7_rx_count;                   /* SCI7 receive data number */

-extern uint16_t  g_sci7_rx_length;                  /* SCI7 receive data length */

-/* Start user code for global. Do not edit comment generated here */

-/* Flag used locally to detect transmission complete */

-

-/* Global used to receive a character from the PC terminal */

-uint8_t g_rx_char;

-

-/* Flag used to control transmission to PC terminal */

-volatile uint8_t g_tx_flag = FALSE;

-

-/* Flag used locally to detect transmission complete */

-static volatile uint8_t sci6_txdone;

-static volatile uint8_t sci7_txdone;

-

-/* End user code. Do not edit comment generated here */

-

-/***********************************************************************************************************************

-* Function Name: r_sci7_transmit_interrupt

-* Description  : None

-* Arguments    : None

-* Return Value : None

-***********************************************************************************************************************/

-#if FAST_INTERRUPT_VECTOR == VECT_SCI7_TXI7

-#pragma interrupt r_sci7_transmit_interrupt(vect=VECT(SCI7,TXI7),fint)

-#else

-#pragma interrupt r_sci7_transmit_interrupt(vect=VECT(SCI7,TXI7))

-#endif

-static void r_sci7_transmit_interrupt(void)

-{

-    if (0U < g_sci7_tx_count)

-    {

-        SCI7.TDR = *gp_sci7_tx_address;

-        gp_sci7_tx_address++;

-        g_sci7_tx_count--;

-    }

-    else

-    {

-        SCI7.SCR.BIT.TIE = 0U;

-        SCI7.SCR.BIT.TEIE = 1U;

-    }

-}

-

-/***********************************************************************************************************************

-* Function Name: r_sci7_transmitend_interrupt

-* Description  : This function is TEI7 interrupt service routine.

-* Arguments    : None

-* Return Value : None

-***********************************************************************************************************************/

-void r_sci7_transmitend_interrupt(void)

-{

-    /* Set TXD7 pin */

-    PORT9.PMR.BYTE &= 0xFEU;

-    SCI7.SCR.BIT.TIE = 0U;

-    SCI7.SCR.BIT.TE = 0U;

-    SCI7.SCR.BIT.TEIE = 0U;

-

-    r_sci7_callback_transmitend();

-}

-/***********************************************************************************************************************

-* Function Name: r_sci7_receive_interrupt

-* Description  : None

-* Arguments    : None

-* Return Value : None

-***********************************************************************************************************************/

-#if FAST_INTERRUPT_VECTOR == VECT_SCI7_RXI7

-#pragma interrupt r_sci7_receive_interrupt(vect=VECT(SCI7,RXI7),fint)

-#else

-#pragma interrupt r_sci7_receive_interrupt(vect=VECT(SCI7,RXI7))

-#endif

-static void r_sci7_receive_interrupt(void)

-{

-    if (g_sci7_rx_length > g_sci7_rx_count)

-    {

-        *gp_sci7_rx_address = SCI7.RDR;

-        gp_sci7_rx_address++;

-        g_sci7_rx_count++;

-

-        if (g_sci7_rx_length <= g_sci7_rx_count)

-        {

-            r_sci7_callback_receiveend();

-        }

-    }

-}

-/***********************************************************************************************************************

-* Function Name: r_sci7_receiveerror_interrupt

-* Description  : This function is ERI7 interrupt service routine.

-* Arguments    : None

-* Return Value : None

-***********************************************************************************************************************/

-void r_sci7_receiveerror_interrupt(void)

-{

-    uint8_t err_type;

-

-    r_sci7_callback_receiveerror();

-

-    /* Clear overrun, framing and parity error flags */

-    err_type = SCI7.SSR.BYTE;

-    err_type &= 0xC7U;

-    err_type |= 0xC0U;

-    SCI7.SSR.BYTE = err_type;

-}

-/***********************************************************************************************************************

-* Function Name: r_sci7_callback_transmitend

-* Description  : This function is a callback function when SCI7 finishes transmission.

-* Arguments    : None

-* Return Value : None

-***********************************************************************************************************************/

-static void r_sci7_callback_transmitend(void)

-{

-    /* Start user code. Do not edit comment generated here */

-    sci7_txdone = TRUE;

-

-    /* End user code. Do not edit comment generated here */

-}

-/***********************************************************************************************************************

-* Function Name: r_sci7_callback_receiveend

-* Description  : This function is a callback function when SCI7 finishes reception.

-* Arguments    : None

-* Return Value : None

-***********************************************************************************************************************/

-static void r_sci7_callback_receiveend(void)

-{

-    /* Start user code. Do not edit comment generated here */

-    /* Check the contents of g_rx_char */

-    if (('c' == g_rx_char) || ('C' == g_rx_char))

-    {

-//_RB_        g_adc_trigger = TRUE;

-    }

-

-    /* Set up SCI7 receive buffer and callback function again */

-    R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);

-

-    /* End user code. Do not edit comment generated here */

-}

-/***********************************************************************************************************************

-* Function Name: r_sci7_callback_receiveerror

-* Description  : This function is a callback function when SCI7 reception encounters error.

-* Arguments    : None

-* Return Value : None

-***********************************************************************************************************************/

-static void r_sci7_callback_receiveerror(void)

-{

-    /* Start user code. Do not edit comment generated here */

-    /* End user code. Do not edit comment generated here */

-}

-

-/* Start user code for adding. Do not edit comment generated here */

-

-/*******************************************************************************

-* Function Name: R_SCI7_AsyncTransmit

-* Description  : This function sends SCI7 data and waits for the transmit end flag.

-* Arguments    : tx_buf -

-*                    transfer buffer pointer

-*                tx_num -

-*                    buffer size

-* Return Value : status -

-*                    MD_OK or MD_ARGERROR

-*******************************************************************************/

-MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)

-{

-    MD_STATUS status = MD_OK;

-    

-    /* clear the flag before initiating a new transmission */

-    sci7_txdone = FALSE;

-

-    /* Send the data using the API */

-    status = R_SCI7_Serial_Send(tx_buf, tx_num);

-

-    /* Wait for the transmit end flag */

-    while (FALSE == sci7_txdone)

-    {

-        /* Wait */

-    }

-    return (status);

-}

-

-/*******************************************************************************

-* End of function R_SCI7_AsyncTransmit

-*******************************************************************************/

-

-

-/* End user code. Do not edit comment generated here */

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
index 0000000..d51f9c3
--- /dev/null
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_gcc.c
@@ -0,0 +1,368 @@
+/*Adapted for IAR Embedded Workbench*/

+/***********************************************************************************************************************

+* DISCLAIMER

+* This software is supplied by Renesas Electronics Corporation and is only

+* intended for use with Renesas products. No other uses are authorized. This

+* software is owned by Renesas Electronics Corporation and is protected under

+* all applicable laws, including copyright laws.

+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING

+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT

+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE

+* AND NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.

+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS

+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE

+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR

+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE

+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+* Renesas reserves the right, without notice, to make changes to this software

+* and to discontinue the availability of this software.  By using this software,

+* you agree to the additional terms and conditions found by accessing the

+* following link:

+* http://www.renesas.com/disclaimer

+*

+* Copyright (C) 2013, 2014 Renesas Electronics Corporation. All rights reserved.

+***********************************************************************************************************************/

+

+/***********************************************************************************************************************

+* File Name    : r_cg_sci_user.c

+* Version      : Code Generator for RX64M V1.00.01.01 [09 May 2014]

+* Device(s)    : R5F571MLCxFC

+* Tool-Chain   : IAR Embedded Workbench

+* Description  : This file implements device driver for SCI module.

+* Creation Date: 30/06/2014

+***********************************************************************************************************************/

+

+/***********************************************************************************************************************

+Pragma directive

+***********************************************************************************************************************/

+/* Start user code for pragma. Do not edit comment generated here */

+

+

+/*

+ * This file originated from an example project for the RSK - it has been

+ * adapted to allow it to be used in the FreeRTOS demo.  Functions required by

+ * UARTCommandConsole.c have been added.

+ */

+

+

+

+/* End user code. Do not edit comment generated here */

+

+/***********************************************************************************************************************

+Includes

+***********************************************************************************************************************/

+#include "r_cg_macrodriver.h"

+#include "r_cg_sci.h"

+/* Start user code for include. Do not edit comment generated here */

+#include "rskrx71mdef.h"

+#include "FreeRTOS.h"

+#include "task.h"

+#include "queue.h"

+#include "serial.h"

+/* End user code. Do not edit comment generated here */

+#include "r_cg_userdefine.h"

+

+/***********************************************************************************************************************

+Global variables and functions

+***********************************************************************************************************************/

+extern uint8_t * gp_sci7_tx_address;                /* SCI7 send buffer address */

+extern uint16_t  g_sci7_tx_count;                   /* SCI7 send data number */

+extern uint8_t * gp_sci7_rx_address;                /* SCI7 receive buffer address */

+extern uint16_t  g_sci7_rx_count;                   /* SCI7 receive data number */

+extern uint16_t  g_sci7_rx_length;                  /* SCI7 receive data length */

+/* Start user code for global. Do not edit comment generated here */

+

+/* Global used to receive a character from the PC terminal */

+uint8_t g_rx_char;

+

+/* Flag used to control transmission to PC terminal */

+volatile uint8_t g_tx_flag = FALSE;

+

+/* Characters received from the UART are stored in this queue, ready to be

+received by the application.  ***NOTE*** Using a queue in this way is very

+convenient, but also very inefficient.  It can be used here because characters

+will only arrive slowly.  In a higher bandwidth system a circular RAM buffer or

+DMA should be used in place of this queue. */

+static QueueHandle_t xRxQueue = NULL;

+

+/* When a task calls vSerialPutString() its handle is stored in xSendingTask,

+before being placed into the Blocked state (so does not use any CPU time) to

+wait for the transmission to end.  The task handle is then used from the UART

+transmit end interrupt to remove the task from the Blocked state. */

+static TaskHandle_t xSendingTask = NULL;

+

+/* Flag used locally to detect transmission complete.  This is used by the

+auto generated API only. */

+static volatile uint8_t sci7_txdone;

+

+/* End user code. Do not edit comment generated here */

+

+/***********************************************************************************************************************

+* Function Name: r_sci7_transmit_interrupt

+* Description  : None

+* Arguments    : None

+* Return Value : None

+***********************************************************************************************************************/

+void r_sci7_transmit_interrupt(void) __attribute__((interrupt));

+void r_sci7_transmit_interrupt(void)

+{

+    if (g_sci7_tx_count > 0U)

+    {

+        SCI7.TDR = *gp_sci7_tx_address;

+        gp_sci7_tx_address++;

+        g_sci7_tx_count--;

+    }

+    else

+    {

+        SCI7.SCR.BIT.TIE = 0U;

+        SCI7.SCR.BIT.TEIE = 1U;

+    }

+}

+

+/***********************************************************************************************************************

+* Function Name: r_sci7_transmitend_interrupt

+* Description  : This function is TEI7 interrupt service routine.

+* Arguments    : None

+* Return Value : None

+***********************************************************************************************************************/

+void r_sci7_transmitend_interrupt(void)

+{

+    MPC.P90PFS.BYTE = 0x00U;

+    PORT9.PMR.BYTE &= 0xFEU;

+    SCI7.SCR.BIT.TIE = 0U;

+    SCI7.SCR.BIT.TE = 0U;

+    SCI7.SCR.BIT.TEIE = 0U;

+

+    r_sci7_callback_transmitend();

+}

+/***********************************************************************************************************************

+* Function Name: r_sci7_receive_interrupt

+* Description  : None

+* Arguments    : None

+* Return Value : None

+***********************************************************************************************************************/

+void r_sci7_receive_interrupt(void) __attribute__((interrupt));

+void r_sci7_receive_interrupt(void)

+{

+    if (g_sci7_rx_length > g_sci7_rx_count)

+    {

+        *gp_sci7_rx_address = SCI7.RDR;

+        gp_sci7_rx_address++;

+        g_sci7_rx_count++;

+

+        if (g_sci7_rx_length <= g_sci7_rx_count)

+        {

+            r_sci7_callback_receiveend();

+        }

+    }

+}

+/***********************************************************************************************************************

+* Function Name: r_sci7_receiveerror_interrupt

+* Description  : This function is ERI7 interrupt service routine.

+* Arguments    : None

+* Return Value : None

+***********************************************************************************************************************/

+void r_sci7_receiveerror_interrupt(void)

+{

+    uint8_t err_type;

+

+    r_sci7_callback_receiveerror();

+

+    /* Clear overrun, framing and parity error flags */

+    err_type = SCI7.SSR.BYTE;

+    err_type &= 0xC7U;

+    err_type |= 0xC0U;

+    SCI7.SSR.BYTE = err_type;

+}

+/***********************************************************************************************************************

+* Function Name: r_sci7_callback_transmitend

+* Description  : This function is a callback function when SCI7 finishes transmission.

+* Arguments    : None

+* Return Value : None

+***********************************************************************************************************************/

+static void r_sci7_callback_transmitend(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+

+    /* The sci7_txdone flag is used by the auto generated API only. */

+    sci7_txdone = TRUE;

+

+    if( xSendingTask != NULL )

+    {

+        /* A task is waiting for the end of the Tx, unblock it now.

+        http://www.freertos.org/vTaskNotifyGiveFromISR.html */

+        vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

+        xSendingTask = NULL;

+

+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    }

+    /* End user code. Do not edit comment generated here */

+}

+/***********************************************************************************************************************

+* Function Name: r_sci7_callback_receiveend

+* Description  : This function is a callback function when SCI7 finishes reception.

+* Arguments    : None

+* Return Value : None

+***********************************************************************************************************************/

+static void r_sci7_callback_receiveend(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+

+    configASSERT( xRxQueue );

+

+    /* Transmitting generates an interrupt for each character, which consumes

+    CPU time, and can cause standard demo RTOS tasks that monitor their own

+    performance to fail asserts - so don't receive new CLI commands if a

+    transmit is not already in progress. */

+    if( sci7_txdone == TRUE )

+    {

+        /* Characters received from the UART are stored in this queue, ready to be

+        received by the application.  ***NOTE*** Using a queue in this way is very

+        convenient, but also very inefficient.  It can be used here because

+        characters will only arrive slowly.  In a higher bandwidth system a circular

+        RAM buffer or DMA should be used in place of this queue. */

+        xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

+    }

+

+    /* Set up SCI7 receive buffer again */

+    R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);

+

+    /* See http://www.freertos.org/xQueueOverwriteFromISR.html for information

+    on the semantics of this ISR. */

+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    /* End user code. Do not edit comment generated here */

+}

+/***********************************************************************************************************************

+* Function Name: r_sci7_callback_receiveerror

+* Description  : This function is a callback function when SCI7 reception encounters error.

+* Arguments    : None

+* Return Value : None

+***********************************************************************************************************************/

+static void r_sci7_callback_receiveerror(void)

+{

+    /* Start user code. Do not edit comment generated here */

+    /* End user code. Do not edit comment generated here */

+}

+

+/***********************************************************************************************************************

+* Function Name: R_SCI7_AsyncTransmit

+* Description  : This function sends SCI7 data and waits for the transmit end flag.

+* Arguments    : tx_buf -

+*                    transfer buffer pointer

+*                tx_num -

+*                    buffer size

+* Return Value : status -

+*                    MD_OK or MD_ARGERROR

+***********************************************************************************************************************/

+MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)

+{

+    MD_STATUS status = MD_OK;

+taskDISABLE_INTERRUPTS();

+while( 1 );

+    /* clear the flag before initiating a new transmission */

+    sci7_txdone = FALSE;

+

+    /* Send the data using the API */

+    status = R_SCI7_Serial_Send(tx_buf, tx_num);

+

+    /* Wait for the transmit end flag */

+    while (FALSE == sci7_txdone)

+    {

+        /* Wait */

+    }

+    return (status);

+}

+/***********************************************************************************************************************

+* End of function R_SCI7_AsyncTransmit

+***********************************************************************************************************************/

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )

+{

+    ( void ) ulWantedBaud;

+    ( void ) uxQueueLength;

+

+    /* Characters received from the UART are stored in this queue, ready to be

+    received by the application.  ***NOTE*** Using a queue in this way is very

+    convenient, but also very inefficient.  It can be used here because

+    characters will only arrive slowly.  In a higher bandwidth system a circular

+    RAM buffer or DMA should be used in place of this queue. */

+    xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

+    configASSERT( xRxQueue );

+

+    /* Set up SCI1 receive buffer */

+    R_SCI7_Serial_Receive((uint8_t *) &g_rx_char, 1);

+

+    /* Ensure the interrupt priority is at or below

+    configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+    IPR(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+    IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+    IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+

+    /* Enable SCI1 operations */

+    R_SCI7_Start();

+

+    /* Only one UART is supported, so it doesn't matter what is returned

+    here. */

+    return 0;

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )

+{

+const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );

+

+    /* Only one port is supported. */

+    ( void ) pxPort;

+

+    /* Clear the flag before initiating a new transmission */

+    sci7_txdone = FALSE;

+

+    /* Don't send the string unless the previous string has been sent. */

+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )

+    {

+        /* Ensure the calling task's notification state is not already

+        pending. */

+        vTaskNotifyStateClear( NULL );

+

+        /* Store the handle of the transmitting task.  This is used to unblock

+        the task when the transmission has completed. */

+        xSendingTask = xTaskGetCurrentTaskHandle();

+

+        /* Send the string using the auto-generated API. */

+        R_SCI7_Serial_Send( ( uint8_t * ) pcString, usStringLength );

+

+        /* Wait in the Blocked state (so not using any CPU time) until the

+        transmission has completed. */

+        ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

+    }

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )

+{

+    /* Only one UART is supported. */

+    ( void ) pxPort;

+

+    /* Return a received character, if any are available.  Otherwise block to

+    wait for a character. */

+    return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )

+{

+    /* Just mapped to vSerialPutString() so the block time is not used. */

+    ( void ) xBlockTime;

+

+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

+    return pdPASS;

+}

+

+/* End user code. Do not edit comment generated here */

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_iar.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_iar.c
index 56dbc22..f00961d 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_iar.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/cg_src/r_cg_sci_user_iar.c
@@ -36,6 +36,16 @@
 Pragma directive

 ***********************************************************************************************************************/

 /* Start user code for pragma. Do not edit comment generated here */

+

+

+/*

+ * This file originated from an example project for the RSK - it has been

+ * adapted to allow it to be used in the FreeRTOS demo.  Functions required by

+ * UARTCommandConsole.c have been added.

+ */

+

+

+

 /* End user code. Do not edit comment generated here */

 

 /***********************************************************************************************************************

@@ -45,7 +55,10 @@
 #include "r_cg_sci.h"

 /* Start user code for include. Do not edit comment generated here */

 #include "rskrx71mdef.h"

-//_RB_#include "r_cg_cmt.h"

+#include "FreeRTOS.h"

+#include "task.h"

+#include "queue.h"

+#include "serial.h"

 /* End user code. Do not edit comment generated here */

 #include "r_cg_userdefine.h"

 

@@ -65,7 +78,21 @@
 /* Flag used to control transmission to PC terminal */

 volatile uint8_t g_tx_flag = FALSE;

 

-/* Flag used locally to detect transmission complete */

+/* Characters received from the UART are stored in this queue, ready to be

+received by the application.  ***NOTE*** Using a queue in this way is very

+convenient, but also very inefficient.  It can be used here because characters

+will only arrive slowly.  In a higher bandwidth system a circular RAM buffer or

+DMA should be used in place of this queue. */

+static QueueHandle_t xRxQueue = NULL;

+

+/* When a task calls vSerialPutString() its handle is stored in xSendingTask,

+before being placed into the Blocked state (so does not use any CPU time) to

+wait for the transmission to end.  The task handle is then used from the UART

+transmit end interrupt to remove the task from the Blocked state. */

+static TaskHandle_t xSendingTask = NULL;

+

+/* Flag used locally to detect transmission complete.  This is used by the

+auto generated API only. */

 static volatile uint8_t sci7_txdone;

 

 /* End user code. Do not edit comment generated here */

@@ -156,7 +183,20 @@
 static void r_sci7_callback_transmitend(void)

 {

     /* Start user code. Do not edit comment generated here */

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+

+    /* The sci7_txdone flag is used by the auto generated API only. */

     sci7_txdone = TRUE;

+

+    if( xSendingTask != NULL )

+    {

+        /* A task is waiting for the end of the Tx, unblock it now.

+        http://www.freertos.org/vTaskNotifyGiveFromISR.html */

+        vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

+        xSendingTask = NULL;

+

+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    }

     /* End user code. Do not edit comment generated here */

 }

 /***********************************************************************************************************************

@@ -168,31 +208,31 @@
 static void r_sci7_callback_receiveend(void)

 {

     /* Start user code. Do not edit comment generated here */

-    /* Check the contents of g_rx_char */

-    if ('z' == g_rx_char)

-    {

-        /* Stop the timer used to control transmission to PC terminal*/

-//        R_CMT1_Stop();

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

 

-        /* Turn off LED0 and turn on LED1 to indicate serial transmission

-           inactive */

-        LED0 = LED_OFF;

-        LED1 = LED_ON;

-    }

-    else

-    {

-        /* Start the timer used to control transmission to PC terminal*/

-//_RB_        R_CMT1_Start();

+    configASSERT( xRxQueue );

 

-        /* Turn on LED0 and turn off LED1 to indicate serial transmission

-           active */

-        LED0 = LED_ON;

-        LED1 = LED_OFF;

+    /* Transmitting generates an interrupt for each character, which consumes

+    CPU time, and can cause standard demo RTOS tasks that monitor their own

+    performance to fail asserts - so don't receive new CLI commands if a

+    transmit is not already in progress. */

+    if( sci7_txdone == TRUE )

+    {

+        /* Characters received from the UART are stored in this queue, ready to be

+        received by the application.  ***NOTE*** Using a queue in this way is very

+        convenient, but also very inefficient.  It can be used here because

+        characters will only arrive slowly.  In a higher bandwidth system a circular

+        RAM buffer or DMA should be used in place of this queue. */

+        xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

     }

 

     /* Set up SCI7 receive buffer again */

     R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);

-   /* End user code. Do not edit comment generated here */

+

+    /* See http://www.freertos.org/xQueueOverwriteFromISR.html for information

+    on the semantics of this ISR. */

+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    /* End user code. Do not edit comment generated here */

 }

 /***********************************************************************************************************************

 * Function Name: r_sci7_callback_receiveerror

@@ -237,5 +277,91 @@
 * End of function R_SCI7_AsyncTransmit

 ***********************************************************************************************************************/

 

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )

+{

+    ( void ) ulWantedBaud;

+    ( void ) uxQueueLength;

+

+    /* Characters received from the UART are stored in this queue, ready to be

+    received by the application.  ***NOTE*** Using a queue in this way is very

+    convenient, but also very inefficient.  It can be used here because

+    characters will only arrive slowly.  In a higher bandwidth system a circular

+    RAM buffer or DMA should be used in place of this queue. */

+    xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

+    configASSERT( xRxQueue );

+

+    /* Set up SCI1 receive buffer */

+    R_SCI7_Serial_Receive((uint8_t *) &g_rx_char, 1);

+

+    /* Ensure the interrupt priority is at or below

+    configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+    IPR(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+    IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+    IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+

+    /* Enable SCI1 operations */

+    R_SCI7_Start();

+

+    /* Only one UART is supported, so it doesn't matter what is returned

+    here. */

+    return 0;

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )

+{

+const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );

+

+    /* Only one port is supported. */

+    ( void ) pxPort;

+

+    /* Clear the flag before initiating a new transmission */

+    sci7_txdone = FALSE;

+

+    /* Don't send the string unless the previous string has been sent. */

+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )

+    {

+        /* Ensure the calling task's notification state is not already

+        pending. */

+        vTaskNotifyStateClear( NULL );

+

+        /* Store the handle of the transmitting task.  This is used to unblock

+        the task when the transmission has completed. */

+        xSendingTask = xTaskGetCurrentTaskHandle();

+

+        /* Send the string using the auto-generated API. */

+        R_SCI7_Serial_Send( ( uint8_t * ) pcString, usStringLength );

+

+        /* Wait in the Blocked state (so not using any CPU time) until the

+        transmission has completed. */

+        ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

+    }

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )

+{

+    /* Only one UART is supported. */

+    ( void ) pxPort;

+

+    /* Return a received character, if any are available.  Otherwise block to

+    wait for a character. */

+    return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )

+{

+    /* Just mapped to vSerialPutString() so the block time is not used. */

+    ( void ) xBlockTime;

+

+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

+    return pdPASS;

+}

 

 /* End user code. Do not edit comment generated here */

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/main.c b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/main.c
index 75cfe54..3aa8f76 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/main.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/src/main.c
@@ -144,6 +144,7 @@
 	}

 	#endif

 

+	/* Should never get reached. */

 	return 0;

 }

 /*-----------------------------------------------------------*/

@@ -205,6 +206,7 @@
 

 void vApplicationTickHook( void )

 {

+	/* The tick hook is not used by the blinky demo, but is by the full demo. */

 	#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0

 	{

 		extern void vFullDemoTickHook( void );

@@ -216,7 +218,9 @@
 /*-----------------------------------------------------------*/

 

 /* The RX port uses this callback function to configure its tick interrupt.

-This allows the application to choose the tick interrupt source. */

+This allows the application to choose the tick interrupt source.

+***NOTE***: configTICK_VECTOR must be set in FreeRTOSConfig.h to be correct for

+whichever vector is used. */

 void vApplicationSetupTimerInterrupt( void )

 {

 const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.cproject b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.cproject
index 36e3679..da7884b 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.cproject
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.cproject
@@ -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"/>

 								<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">

 									<listOptionValue builtIn="false" value="&quot;${TCINSTALL}/include&quot;"/>

+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/FreeRTOS-Plus-CLI}&quot;"/>

 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/Standard_Demo_Tasks/Include}&quot;"/>

 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/include}&quot;"/>

 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/Renesas/RX600v2}&quot;"/>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.project b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.project
index 6861ae5..eaaa266 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.project
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/.project
@@ -31,11 +31,26 @@
 			<locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI>

 		</link>

 		<link>

+			<name>src/Full_Demo/FreeRTOS-Plus-CLI</name>

+			<type>2</type>

+			<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI</locationURI>

+		</link>

+		<link>

+			<name>src/Full_Demo/Sample-CLI-commands.c</name>

+			<type>1</type>

+			<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/Sample-CLI-commands.c</locationURI>

+		</link>

+		<link>

 			<name>src/Full_Demo/Standard_Demo_Tasks</name>

 			<type>2</type>

 			<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI>

 		</link>

 		<link>

+			<name>src/Full_Demo/UARTCommandConsole.c</name>

+			<type>1</type>

+			<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/UARTCommandConsole.c</locationURI>

+		</link>

+		<link>

 			<name>src/Full_Demo/Standard_Demo_Tasks/Include</name>

 			<type>2</type>

 			<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/include</locationURI>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/RTOSDemo HardwareDebug.launch b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/RTOSDemo HardwareDebug.launch
index e46ec1f..196a30f 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/RTOSDemo HardwareDebug.launch
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/RTOSDemo HardwareDebug.launch
@@ -8,7 +8,7 @@
 <stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>

 <intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>

 <stringAttribute key="com.renesas.cdt.core.runCommands" value=""/>

-<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"/>

+<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"/>

 <booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>

 <stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F571ML"/>

 <booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/>

@@ -25,7 +25,7 @@
 <booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>

 <intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>

 <stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" value="0"/>

-<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="false"/>

+<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="true"/>

 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable.hot.plug" value="false"/>

 <booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/>

 <booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" value="false"/>

@@ -84,7 +84,7 @@
 <intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>

-<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_Renesas_e2studio\HardwareDebug\RTOSDemo.x"/>

+<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"/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value="0"/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>

@@ -95,7 +95,7 @@
 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>

-<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_Renesas_e2studio\HardwareDebug\RTOSDemo.x"/>

+<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"/>

 <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value="0"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>

 <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Blinky_Demo/main_blinky.c b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Blinky_Demo/main_blinky.c
index dab3ec0..afe12f0 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Blinky_Demo/main_blinky.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Blinky_Demo/main_blinky.c
@@ -84,24 +84,14 @@
  *

  * The Queue Send Task:

  * The queue send task is implemented by the prvQueueSendTask() function in

- * this file.  prvQueueSendTask() sits in a loop that causes it to repeatedly

- * block for 200 milliseconds, before sending the value 100 to the queue that

- * was created within main_blinky().  Once the value is sent, the task loops

- * back around to block for another 200 milliseconds...and so on.

+ * this file.  It sends the value 100 to the queue every 200 milliseconds.

  *

  * The Queue Receive Task:

  * The queue receive task is implemented by the prvQueueReceiveTask() function

- * in this file.  prvQueueReceiveTask() sits in a loop where it repeatedly

- * blocks on attempts to read data from the queue that was created within

- * main_blinky().  When data is received, the task checks the value of the

- * data, and if the value equals the expected 100, toggles an LED.  The 'block

- * time' parameter passed to the queue receive function specifies that the

- * task should be held in the Blocked state indefinitely to wait for data to

- * be available on the queue.  The queue receive task will only leave the

- * Blocked state when the queue send task writes to the queue.  As the queue

- * send task writes to the queue every 200 milliseconds, the queue receive

- * task leaves the Blocked state every 200 milliseconds, and therefore toggles

- * the LED every 200 milliseconds.

+ * in this file.  It blocks on the queue to wait for data to arrive from the

+ * queue send task - toggling the LED each time it receives the value 100.  The

+ * queue send task writes to the queue every 200ms, so the LED should toggle

+ * every 200ms.

  */

 

 /* Kernel includes. */

@@ -120,7 +110,7 @@
 

 /* The rate at which data is sent to the queue.  The 200ms value is converted

 to ticks using the portTICK_PERIOD_MS constant. */

-#define mainQUEUE_SEND_FREQUENCY_MS			( 200 / portTICK_PERIOD_MS )

+#define mainQUEUE_SEND_FREQUENCY_MS			( pdMS_TO_TICKS( 200UL ) )

 

 /* The number of items the queue can hold.  This is 1 as the receive task

 will remove items as they are added, meaning the send task should always find

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/FreeRTOSConfig.h b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/FreeRTOSConfig.h
index e7bad4f..d885f18 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/FreeRTOSConfig.h
@@ -88,11 +88,11 @@
 #define configUSE_PREEMPTION			1

 #define configUSE_IDLE_HOOK				1

 #define configUSE_TICK_HOOK				1

-#define configCPU_CLOCK_HZ				( 120000000UL ) /*_RB_ guess cg shows 240 and 120*/

-#define configPERIPHERAL_CLOCK_HZ		( 60000000UL ) /*_RB_ guess*/

+#define configCPU_CLOCK_HZ				( 120000000UL )

+#define configPERIPHERAL_CLOCK_HZ		( 60000000UL )

 #define configTICK_RATE_HZ				( ( TickType_t ) 1000 )

-#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 140 )

-#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 40 * 1024 ) )

+#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 120 )

+#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 50 * 1024 ) )

 #define configMAX_TASK_NAME_LEN			( 12 )

 #define configUSE_TRACE_FACILITY		1

 #define configUSE_16_BIT_TICKS			0

@@ -110,6 +110,12 @@
 #define configMAX_PRIORITIES			( 7 )

 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

 

+/* This demo makes use of one or more example stats formatting functions.  These

+format the raw data provided by the uxTaskGetSystemState() function in to human

+readable ASCII form.  See the notes in the implementation of vTaskList() within

+FreeRTOS/Source/tasks.c for limitations. */

+#define configUSE_STATS_FORMATTING_FUNCTIONS	1

+

 /* Software timer definitions. */

 #define configUSE_TIMERS				1

 #define configTIMER_TASK_PRIORITY		( configMAX_PRIORITIES - 1 )

@@ -148,6 +154,12 @@
 void vAssertCalled( void );

 #define configASSERT( x ) if( ( x ) == 0 ) { brk(); taskDISABLE_INTERRUPTS(); for( ;; ); }

 

+/* The buffer into which output generated by FreeRTOS+CLI is placed.  This must

+be at least big enough to contain the output of the task-stats command, as the

+example implementation does not include buffer overlow checking. */

+#define configCOMMAND_INT_MAX_OUTPUT_SIZE	3500

+#define configINCLUDE_QUERY_HEAP_COMMAND	1

+

 /* Override some of the priorities set in the common demo tasks.  This is

 required to ensure flase positive timing errors are not reported. */

 #define bktPRIMARY_PRIORITY		( configMAX_PRIORITIES - 3 )

@@ -155,28 +167,4 @@
 #define intqHIGHER_PRIORITY		( configMAX_PRIORITIES - 3 )

 

 

-/*-----------------------------------------------------------

- * Ethernet configuration.

- *-----------------------------------------------------------*/

-

-/* MAC address configuration. */

-#define configMAC_ADDR0	0x00

-#define configMAC_ADDR1	0x12

-#define configMAC_ADDR2	0x13

-#define configMAC_ADDR3	0x10

-#define configMAC_ADDR4	0x15

-#define configMAC_ADDR5	0x11

-

-/* IP address configuration. */

-#define configIP_ADDR0		192

-#define configIP_ADDR1		168

-#define configIP_ADDR2		0

-#define configIP_ADDR3		200

-

-/* Netmask configuration. */

-#define configNET_MASK0		255

-#define configNET_MASK1		255

-#define configNET_MASK2		255

-#define configNET_MASK3		0

-

 #endif /* FREERTOS_CONFIG_H */

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.c b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.c
index cb9e576..7de0f9d 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.c
@@ -68,9 +68,9 @@
 */

 

 /*

- * This file contains the non-portable and therefore RX62N specific parts of

- * the IntQueue standard demo task - namely the configuration of the timers

- * that generate the interrupts and the interrupt entry points.

+ * This file contains the non-portable and therefore RX specific parts of the

+ * IntQueue standard demo task - namely the configuration of the timers that

+ * generate the interrupts and the interrupt entry points.

  */

 

 /* Scheduler includes. */

@@ -92,6 +92,7 @@
 	/* Ensure interrupts do not start until full configuration is complete. */

 	portENTER_CRITICAL();

 	{

+		/* Give write access. */

 		SYSTEM.PRCR.WORD = 0xa502;

 

 		/* Cascade two 8bit timer channels to generate the interrupts. 

@@ -130,11 +131,9 @@
 		TMR0.TCR.BIT.CMIEA = 1;

 		TMR2.TCR.BIT.CMIEA = 1;

 

-		/* Map TMR0 CMIA0 interrupt to vector slot B number 128 and set

-		priority above the kernel's priority, but below the max syscall

-		priority. */

-	    ICU.SLIBXR128.BYTE = 3; /* Three is TMR0 compare match A. */

-	    IPR( PERIB, INTB128 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+		/* Set priority and enable interrupt. */

+		ICU.SLIBXR128.BYTE = 3; /* Three is TMR0 compare match A. */

+		IPR( PERIB, INTB128 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

 		IEN( PERIB, INTB128 ) = 1;

 

 		/* Ensure that the flag is set to 0, otherwise the interrupt will not be

@@ -142,8 +141,8 @@
 		IR( PERIB, INTB128 ) = 0;

 

 		/* Do the same for TMR2, but to vector 129. */

-	    ICU.SLIBXR129.BYTE = 9; /* Nine is TMR2 compare match A. */

-	    IPR( PERIB, INTB129 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 2;

+		ICU.SLIBXR129.BYTE = 9; /* Nine is TMR2 compare match A. */

+		IPR( PERIB, INTB129 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 2;

 		IEN( PERIB, INTB129 ) = 1;

 		IR( PERIB, INTB129 ) = 0;

 	}

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.h b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.h
index fcf9f8c..a26068c 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.h
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/IntQueueTimer.h
@@ -71,8 +71,8 @@
 #define INT_QUEUE_TIMER_H

 

 void vInitialiseTimerForIntQueueTest( void );

-portBASE_TYPE xTimer0Handler( void );

-portBASE_TYPE xTimer1Handler( void );

+BaseType_t xTimer0Handler( void );

+BaseType_t xTimer1Handler( void );

 

 #endif

 

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/main_full.c b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/main_full.c
index 50d2cc8..5ba7f68 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/main_full.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/Full_Demo/main_full.c
@@ -81,7 +81,7 @@
  *

  ******************************************************************************

  *

- * main_full() creates all the demo application tasks and software timers, then

+ * main_full() creates a set of demo application tasks and software timers, then

  * starts the scheduler.  The web documentation provides more details of the

  * standard demo application tasks, which provide no particular functionality,

  * but do provide a good example of how to use the FreeRTOS API.

@@ -89,6 +89,12 @@
  * In addition to the standard demo tasks, the following tasks and tests are

  * defined and/or created within this file:

  *

+ * "FreeRTOS+CLI command console" -  The command console uses SCI1 for its

+ * input and output.  The baud rate is set to 19200.  Type "help" to see a list

+ * of registered commands.  The FreeRTOS+CLI license is different to the

+ * FreeRTOS license, see http://www.FreeRTOS.org/cli for license and usage

+ * details.

+ *

  * "Reg test" tasks - These fill both the core and floating point registers with

  * known values, then check that each register maintains its expected value for

  * the lifetime of the task.  Each task uses a different set of values.  The reg

@@ -97,19 +103,17 @@
  * error in the context switching mechanism.

  *

  * "Check" task - The check task period is initially set to three seconds.  The

- * task checks that all the standard demo tasks, and the register check tasks,

- * are not only still executing, but are executing without reporting any errors.

- * If the check task discovers that a task has either stalled, or reported an

- * error, then it changes its own execution period from the initial three

- * seconds, to just 200ms.  The check task also toggles an LED each time it is

- * called.  This provides a visual indication of the system status:  If the LED

- * toggles every three seconds, then no issues have been discovered.  If the LED

- * toggles every 200ms, then an issue has been discovered with at least one

- * task.

+ * task checks that all the standard demo tasks are not only still executing,

+ * but are executing without reporting any errors.  If the check task discovers

+ * that a task has either stalled, or reported an error, then it changes its own

+ * execution period from the initial three seconds, to just 200ms.  The check

+ * task also toggles an LED on each iteration of its loop.  This provides a

+ * visual indication of the system status:  If the LED toggles every three

+ * seconds, then no issues have been discovered.  If the LED toggles every

+ * 200ms, then an issue has been discovered with at least one task.

  */

 

 /* Standard includes. */

-#include <rskrx71mdef.h>

 #include <stdio.h>

 

 /* Kernel includes. */

@@ -139,6 +143,7 @@
 #include "IntSemTest.h"

 

 /* Renesas includes. */

+#include <rskrx71mdef.h>

 #include "r_cg_macrodriver.h"

 #include "r_cg_userdefine.h"

 

@@ -148,30 +153,26 @@
 #define mainCREATOR_TASK_PRIORITY			( tskIDLE_PRIORITY + 3UL )

 #define mainFLOP_TASK_PRIORITY				( tskIDLE_PRIORITY )

 #define mainUART_COMMAND_CONSOLE_STACK_SIZE	( configMINIMAL_STACK_SIZE * 3UL )

-#define mainCOM_TEST_TASK_PRIORITY			( tskIDLE_PRIORITY + 2 )

 #define mainCHECK_TASK_PRIORITY				( configMAX_PRIORITIES - 1 )

 #define mainQUEUE_OVERWRITE_PRIORITY		( tskIDLE_PRIORITY )

 

 /* The priority used by the UART command console task. */

 #define mainUART_COMMAND_CONSOLE_TASK_PRIORITY	( configMAX_PRIORITIES - 2 )

 

-/* A block time of zero simply means "don't block". */

-#define mainDONT_BLOCK						( 0UL )

-

 /* The period after which the check timer will expire, in ms, provided no errors

 have been reported by any of the standard demo tasks.  ms are converted to the

 equivalent in ticks using the portTICK_PERIOD_MS constant. */

-#define mainNO_ERROR_CHECK_TASK_PERIOD		( 3000UL / portTICK_PERIOD_MS )

+#define mainNO_ERROR_CHECK_TASK_PERIOD		pdMS_TO_TICKS( 3000UL )

 

 /* The period at which the check timer will expire, in ms, if an error has been

 reported in one of the standard demo tasks.  ms are converted to the equivalent

 in ticks using the portTICK_PERIOD_MS constant. */

-#define mainERROR_CHECK_TASK_PERIOD 		( 200UL / portTICK_PERIOD_MS )

+#define mainERROR_CHECK_TASK_PERIOD 		pdMS_TO_TICKS( 200UL )

 

 /* Parameters that are passed into the register check tasks solely for the

 purpose of ensuring parameters are passed into tasks correctly. */

-#define mainREG_TEST_1_PARAMETER	( ( void * ) 0x12121212UL )

-#define mainREG_TEST_2_PARAMETER	( ( void * ) 0x12345678UL )

+#define mainREG_TEST_1_PARAMETER			( ( void * ) 0x12121212UL )

+#define mainREG_TEST_2_PARAMETER			( ( void * ) 0x12345678UL )

 

 /* The base period used by the timer test tasks. */

 #define mainTIMER_TEST_PERIOD				( 50 )

@@ -212,6 +213,17 @@
  */

 static void prvPseudoRandomiser( void *pvParameters );

 

+/*

+ * Register commands that can be used with FreeRTOS+CLI.  The commands are

+ * defined in CLI-Commands.c and File-Related-CLI-Command.c respectively.

+ */

+extern void vRegisterSampleCLICommands( void );

+

+/*

+ * The task that manages the FreeRTOS+CLI input and output.

+ */

+extern void vUARTCommandConsoleStart( uint16_t usStackSize, UBaseType_t uxPriority );

+

 /*-----------------------------------------------------------*/

 

 /* The following two variables are used to communicate the status of the

@@ -220,9 +232,6 @@
 stops incrementing, then an error has been found. */

 volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;

 

-/* String for display in the web server.  It is set to an error message if the

-check task detects an error.  */

-const char *pcStatusMessage = "All tasks running without error";

 /*-----------------------------------------------------------*/

 

 void main_full( void )

@@ -250,7 +259,14 @@
 	xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );

 

 	/* Create the task that just adds a little random behaviour. */

-	xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL );

+	xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 2, NULL );

+

+	/* Start the tasks that implements the command console on the UART, as

+	described above. */

+	vUARTCommandConsoleStart( mainUART_COMMAND_CONSOLE_STACK_SIZE, mainUART_COMMAND_CONSOLE_TASK_PRIORITY );

+

+	/* Register the standard CLI commands. */

+	vRegisterSampleCLICommands();

 

 	/* Create the task that performs the 'check' functionality,	as described at

 	the top of this file. */

@@ -404,7 +420,6 @@
 			gone wrong (it might just be that the loop back connector required

 			by the comtest tasks has not been fitted). */

 			xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;

-			pcStatusMessage = "Error found in at least one task.";

 		}

 	}

 }

@@ -412,7 +427,7 @@
 

 static void prvPseudoRandomiser( void *pvParameters )

 {

-const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = ( 35 / portTICK_PERIOD_MS );

+const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = pdMS_TO_TICKS( 35 );

 volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;

 

 	/* This task does nothing other than ensure there is a little bit of

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
index 6f4c8bc..e163cc5 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/cg_src/r_cg_sci_user.c
@@ -30,6 +30,16 @@
 Pragma directive

 ***********************************************************************************************************************/

 /* Start user code for pragma. Do not edit comment generated here */

+

+

+/*

+ * This file originated from an example project for the RSK - it has been

+ * adapted to allow it to be used in the FreeRTOS demo.  Functions required by

+ * UARTCommandConsole.c have been added.

+ */

+

+

+

 /* End user code. Do not edit comment generated here */

 

 /***********************************************************************************************************************

@@ -38,6 +48,11 @@
 #include "r_cg_macrodriver.h"

 #include "r_cg_sci.h"

 /* Start user code for include. Do not edit comment generated here */

+#include "rskrx71mdef.h"

+#include "FreeRTOS.h"

+#include "task.h"

+#include "queue.h"

+#include "serial.h"

 /* End user code. Do not edit comment generated here */

 #include "r_cg_userdefine.h"

 

@@ -50,7 +65,6 @@
 extern uint16_t  g_sci7_rx_count;                   /* SCI7 receive data number */

 extern uint16_t  g_sci7_rx_length;                  /* SCI7 receive data length */

 /* Start user code for global. Do not edit comment generated here */

-/* Flag used locally to detect transmission complete */

 

 /* Global used to receive a character from the PC terminal */

 uint8_t g_rx_char;

@@ -58,8 +72,21 @@
 /* Flag used to control transmission to PC terminal */

 volatile uint8_t g_tx_flag = FALSE;

 

-/* Flag used locally to detect transmission complete */

-static volatile uint8_t sci6_txdone;

+/* Characters received from the UART are stored in this queue, ready to be

+received by the application.  ***NOTE*** Using a queue in this way is very

+convenient, but also very inefficient.  It can be used here because characters

+will only arrive slowly.  In a higher bandwidth system a circular RAM buffer or

+DMA should be used in place of this queue. */

+static QueueHandle_t xRxQueue = NULL;

+

+/* When a task calls vSerialPutString() its handle is stored in xSendingTask,

+before being placed into the Blocked state (so does not use any CPU time) to

+wait for the transmission to end.  The task handle is then used from the UART

+transmit end interrupt to remove the task from the Blocked state. */

+static TaskHandle_t xSendingTask = NULL;

+

+/* Flag used locally to detect transmission complete.  This is used by the

+auto generated API only. */

 static volatile uint8_t sci7_txdone;

 

 /* End user code. Do not edit comment generated here */

@@ -98,7 +125,7 @@
 ***********************************************************************************************************************/

 void r_sci7_transmitend_interrupt(void)

 {

-    /* Set TXD7 pin */

+    MPC.P90PFS.BYTE = 0x00U;

     PORT9.PMR.BYTE &= 0xFEU;

     SCI7.SCR.BIT.TIE = 0U;

     SCI7.SCR.BIT.TE = 0U;

@@ -158,8 +185,20 @@
 static void r_sci7_callback_transmitend(void)

 {

     /* Start user code. Do not edit comment generated here */

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+

+    /* The sci7_txdone flag is used by the auto generated API only. */

     sci7_txdone = TRUE;

 

+    if( xSendingTask != NULL )

+    {

+        /* A task is waiting for the end of the Tx, unblock it now.

+        http://www.freertos.org/vTaskNotifyGiveFromISR.html */

+        vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );

+        xSendingTask = NULL;

+

+        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

+    }

     /* End user code. Do not edit comment generated here */

 }

 /***********************************************************************************************************************

@@ -171,15 +210,30 @@
 static void r_sci7_callback_receiveend(void)

 {

     /* Start user code. Do not edit comment generated here */

-    /* Check the contents of g_rx_char */

-    if (('c' == g_rx_char) || ('C' == g_rx_char))

+    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

+

+    configASSERT( xRxQueue );

+

+    /* Transmitting generates an interrupt for each character, which consumes

+    CPU time, and can cause standard demo RTOS tasks that monitor their own

+    performance to fail asserts - so don't receive new CLI commands if a

+    transmit is not already in progress. */

+    if( sci7_txdone == TRUE )

     {

-//_RB_        g_adc_trigger = TRUE;

+        /* Characters received from the UART are stored in this queue, ready to be

+        received by the application.  ***NOTE*** Using a queue in this way is very

+        convenient, but also very inefficient.  It can be used here because

+        characters will only arrive slowly.  In a higher bandwidth system a circular

+        RAM buffer or DMA should be used in place of this queue. */

+        xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );

     }

 

-    /* Set up SCI7 receive buffer and callback function again */

+    /* Set up SCI7 receive buffer again */

     R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);

 

+    /* See http://www.freertos.org/xQueueOverwriteFromISR.html for information

+    on the semantics of this ISR. */

+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );

     /* End user code. Do not edit comment generated here */

 }

 /***********************************************************************************************************************

@@ -228,5 +282,91 @@
 * End of function R_SCI7_AsyncTransmit

 *******************************************************************************/

 

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )

+{

+    ( void ) ulWantedBaud;

+    ( void ) uxQueueLength;

+

+    /* Characters received from the UART are stored in this queue, ready to be

+    received by the application.  ***NOTE*** Using a queue in this way is very

+    convenient, but also very inefficient.  It can be used here because

+    characters will only arrive slowly.  In a higher bandwidth system a circular

+    RAM buffer or DMA should be used in place of this queue. */

+    xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );

+    configASSERT( xRxQueue );

+

+    /* Set up SCI1 receive buffer */

+    R_SCI7_Serial_Receive((uint8_t *) &g_rx_char, 1);

+

+    /* Ensure the interrupt priority is at or below

+    configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+    IPR(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+    IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+    IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;

+

+    /* Enable SCI1 operations */

+    R_SCI7_Start();

+

+    /* Only one UART is supported, so it doesn't matter what is returned

+    here. */

+    return 0;

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )

+{

+const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );

+

+    /* Only one port is supported. */

+    ( void ) pxPort;

+

+    /* Clear the flag before initiating a new transmission */

+    sci7_txdone = FALSE;

+

+    /* Don't send the string unless the previous string has been sent. */

+    if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )

+    {

+        /* Ensure the calling task's notification state is not already

+        pending. */

+        vTaskNotifyStateClear( NULL );

+

+        /* Store the handle of the transmitting task.  This is used to unblock

+        the task when the transmission has completed. */

+        xSendingTask = xTaskGetCurrentTaskHandle();

+

+        /* Send the string using the auto-generated API. */

+        R_SCI7_Serial_Send( ( uint8_t * ) pcString, usStringLength );

+

+        /* Wait in the Blocked state (so not using any CPU time) until the

+        transmission has completed. */

+        ulTaskNotifyTake( pdTRUE, xMaxBlockTime );

+    }

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )

+{

+    /* Only one UART is supported. */

+    ( void ) pxPort;

+

+    /* Return a received character, if any are available.  Otherwise block to

+    wait for a character. */

+    return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );

+}

+

+/* Function required in order to link UARTCommandConsole.c - which is used by

+multiple different demo application. */

+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )

+{

+    /* Just mapped to vSerialPutString() so the block time is not used. */

+    ( void ) xBlockTime;

+

+    vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );

+    return pdPASS;

+}

 

 /* End user code. Do not edit comment generated here */

diff --git a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/main.c b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/main.c
index 9cb47b3..c2f2855 100644
--- a/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/main.c
+++ b/FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/main.c
@@ -96,7 +96,7 @@
 

 /* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,

 or 0 to run the more comprehensive test and demo application. */

-#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY	0

+#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY	1

 

 /*-----------------------------------------------------------*/

 

@@ -141,6 +141,7 @@
 	}

 	#endif

 

+	/* Should never get reached. */

 	return 0;

 }

 /*-----------------------------------------------------------*/

@@ -202,6 +203,7 @@
 

 void vApplicationTickHook( void )

 {

+	/* The tick hook is not used by the blinky demo, but is by the full demo. */

 	#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0

 	{

 		extern void vFullDemoTickHook( void );

@@ -213,7 +215,9 @@
 /*-----------------------------------------------------------*/

 

 /* The RX port uses this callback function to configure its tick interrupt.

-This allows the application to choose the tick interrupt source. */

+This allows the application to choose the tick interrupt source.

+***NOTE***: configTICK_VECTOR must be set in FreeRTOSConfig.h to be correct for

+whichever vector is used. */

 void vApplicationSetupTimerInterrupt( void )

 {

 const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;

diff --git a/FreeRTOS/Source/include/FreeRTOS.h b/FreeRTOS/Source/include/FreeRTOS.h
index d8f969d..37e38bc 100644
--- a/FreeRTOS/Source/include/FreeRTOS.h
+++ b/FreeRTOS/Source/include/FreeRTOS.h
@@ -819,6 +819,14 @@
 	#define xList List_t

 #endif /* configENABLE_BACKWARD_COMPATIBILITY */

 

+/* Set configUSE_TASK_FPU_SUPPORT to 0 to omit floating point support even

+if floating point hardware is otherwise supported by the FreeRTOS port in use.

+This constant is not supported by all FreeRTOS ports that include floating 

+point support. */

+#ifndef configUSE_TASK_FPU_SUPPORT

+    #define configUSE_TASK_FPU_SUPPORT 1

+#endif

+    

 #ifdef __cplusplus

 }

 #endif

diff --git a/FreeRTOS/Source/include/StackMacros.h b/FreeRTOS/Source/include/StackMacros.h
index 915fe20..32b28e6 100644
--- a/FreeRTOS/Source/include/StackMacros.h
+++ b/FreeRTOS/Source/include/StackMacros.h
@@ -86,28 +86,10 @@
 

 /*-----------------------------------------------------------*/

 

-#if( configCHECK_FOR_STACK_OVERFLOW == 0 )

-

-	/* FreeRTOSConfig.h is not set to check for stack overflows. */

-	#define taskFIRST_CHECK_FOR_STACK_OVERFLOW()

-	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()

-

-#endif /* configCHECK_FOR_STACK_OVERFLOW == 0 */

-/*-----------------------------------------------------------*/

-

-#if( configCHECK_FOR_STACK_OVERFLOW == 1 )

-

-	/* FreeRTOSConfig.h is only set to use the first method of

-	overflow checking. */

-	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()

-

-#endif

-/*-----------------------------------------------------------*/

-

-#if( ( configCHECK_FOR_STACK_OVERFLOW > 0 ) && ( portSTACK_GROWTH < 0 ) )

+#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) )

 

 	/* Only the current stack state is to be checked. */

-	#define taskFIRST_CHECK_FOR_STACK_OVERFLOW()														\

+	#define taskCHECK_FOR_STACK_OVERFLOW()																\

 	{																									\

 		/* Is the currently saved stack pointer within the stack limit? */								\

 		if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack )										\

@@ -116,13 +98,13 @@
 		}																								\

 	}

 

-#endif /* configCHECK_FOR_STACK_OVERFLOW > 0 */

+#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */

 /*-----------------------------------------------------------*/

 

-#if( ( configCHECK_FOR_STACK_OVERFLOW > 0 ) && ( portSTACK_GROWTH > 0 ) )

+#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) )

 

 	/* Only the current stack state is to be checked. */

-	#define taskFIRST_CHECK_FOR_STACK_OVERFLOW()														\

+	#define taskCHECK_FOR_STACK_OVERFLOW()																\

 	{																									\

 																										\

 		/* Is the currently saved stack pointer within the stack limit? */								\

@@ -137,20 +119,18 @@
 

 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) )

 

-	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()																						\

-	{																																	\

-	static const uint8_t ucExpectedStackBytes[] = {	tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\

-													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\

-													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\

-													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\

-													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE };	\

-																																		\

-																																		\

-		/* Has the extremity of the task stack ever been written over? */																\

-		if( memcmp( ( const void * ) pxCurrentTCB->pxStack, ( const void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 )			\

-		{																																\

-			vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );									\

-		}																																\

+	#define taskCHECK_FOR_STACK_OVERFLOW()																\

+	{																									\

+		const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack;							\

+		const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5;											\

+																										\

+		if( ( pulStack[ 0 ] != ulCheckValue ) ||												\

+			( pulStack[ 1 ] != ulCheckValue ) ||												\

+			( pulStack[ 2 ] != ulCheckValue ) ||												\

+			( pulStack[ 3 ] != ulCheckValue ) )												\

+		{																								\

+			vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );	\

+		}																								\

 	}

 

 #endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */

@@ -158,7 +138,7 @@
 

 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) )

 

-	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()																						\

+	#define taskCHECK_FOR_STACK_OVERFLOW()																								\

 	{																																	\

 	int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack;																		\

 	static const uint8_t ucExpectedStackBytes[] = {	tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\

@@ -180,5 +160,12 @@
 #endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */

 /*-----------------------------------------------------------*/

 

+/* Remove stack overflow macro if not being used. */

+#ifndef taskCHECK_FOR_STACK_OVERFLOW

+	#define taskCHECK_FOR_STACK_OVERFLOW()

+#endif

+

+

+

 #endif /* STACK_MACROS_H */

 

diff --git a/FreeRTOS/Source/include/task.h b/FreeRTOS/Source/include/task.h
index deda894..5ecd9af 100644
--- a/FreeRTOS/Source/include/task.h
+++ b/FreeRTOS/Source/include/task.h
@@ -1812,6 +1812,18 @@
  */

 uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;

 

+/**

+ * task. h

+ * <PRE>void vTaskNotifyClear( TaskHandle_t xTask );</pre>

+ *

+ * Clear the notification state of the task referenced by the handle xTask.  The

+ * task's notification value is not altered.  Set xTask to NULL to clear the

+ * notification state of the calling task.

+ * \defgroup vTaskNotifyClear vTaskNotifyClear

+ * \ingroup TaskNotifications

+ */

+void vTaskNotifyStateClear( TaskHandle_t xTask );

+

 /*-----------------------------------------------------------

  * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES

  *----------------------------------------------------------*/

diff --git a/FreeRTOS/Source/portable/IAR/RXv2/port.c b/FreeRTOS/Source/portable/IAR/RXv2/port.c
index 1ba4c92..4d5306d 100644
--- a/FreeRTOS/Source/portable/IAR/RXv2/port.c
+++ b/FreeRTOS/Source/portable/IAR/RXv2/port.c
@@ -79,7 +79,6 @@
 #include "string.h"

 

 /* Hardware specifics. */

-#warning RX600v1 port included chip specific header file here.

 #include <machine.h>

 

 /*-----------------------------------------------------------*/

diff --git a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/ISR_Support.h b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/ISR_Support.h
index a5b0fd4..6127054 100644
--- a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/ISR_Support.h
+++ b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/ISR_Support.h
@@ -69,9 +69,94 @@
 

 #include "FreeRTOSConfig.h"

 

-#define portCONTEXT_SIZE 160

-#define portEPC_STACK_LOCATION 152

-#define portSTATUS_STACK_LOCATION 156

+#define portCONTEXT_SIZE                160

+#define portEPC_STACK_LOCATION          152

+#define portSTATUS_STACK_LOCATION       156

+#define portFPCSR_STACK_LOCATION        0

+#define portTASK_HAS_FPU_STACK_LOCATION     0

+#define portFPU_CONTEXT_SIZE            264

+

+/******************************************************************/

+.macro  portSAVE_FPU_REGS    offset, base

+    /* Macro to assist with saving just the FPU registers to the

+     * specified address and base offset,

+     * offset is a constant, base is the base pointer register  */

+

+	sdc1		$f31, \offset + 248(\base)

+	sdc1		$f30, \offset + 240(\base)

+	sdc1		$f29, \offset + 232(\base)

+	sdc1		$f28, \offset + 224(\base)

+	sdc1		$f27, \offset + 216(\base)

+	sdc1		$f26, \offset + 208(\base)

+	sdc1		$f25, \offset + 200(\base)

+	sdc1		$f24, \offset + 192(\base)

+	sdc1		$f23, \offset + 184(\base)

+	sdc1		$f22, \offset + 176(\base)

+	sdc1		$f21, \offset + 168(\base)

+	sdc1		$f20, \offset + 160(\base)

+	sdc1		$f19, \offset + 152(\base)

+	sdc1		$f18, \offset + 144(\base)

+	sdc1		$f17, \offset + 136(\base)

+	sdc1		$f16, \offset + 128(\base)

+	sdc1		$f15, \offset + 120(\base)

+	sdc1		$f14, \offset + 112(\base)

+	sdc1		$f13, \offset + 104(\base)

+	sdc1		$f12, \offset + 96(\base)

+	sdc1		$f11, \offset + 88(\base)

+	sdc1		$f10, \offset + 80(\base)

+	sdc1		$f9, \offset + 72(\base)

+	sdc1		$f8, \offset + 64(\base)

+	sdc1		$f7, \offset + 56(\base)

+	sdc1		$f6, \offset + 48(\base)

+	sdc1		$f5, \offset + 40(\base)

+	sdc1		$f4, \offset + 32(\base)

+	sdc1		$f3, \offset + 24(\base)

+	sdc1		$f2, \offset + 16(\base)

+	sdc1		$f1, \offset + 8(\base)

+	sdc1		$f0, \offset + 0(\base)

+

+    .endm

+

+/******************************************************************/

+.macro  portLOAD_FPU_REGS    offset, base

+    /* Macro to assist with loading just the FPU registers from the

+     * specified address and base offset, offset is a constant,

+     * base is the base pointer register  */

+

+	ldc1		$f0, \offset + 0(\base)

+	ldc1		$f1, \offset + 8(\base)

+	ldc1		$f2, \offset + 16(\base)

+	ldc1		$f3, \offset + 24(\base)

+	ldc1		$f4, \offset + 32(\base)

+	ldc1		$f5, \offset + 40(\base)

+	ldc1		$f6, \offset + 48(\base)

+	ldc1		$f7, \offset + 56(\base)

+	ldc1		$f8, \offset + 64(\base)

+	ldc1		$f9, \offset + 72(\base)

+	ldc1		$f10, \offset + 80(\base)

+	ldc1		$f11, \offset + 88(\base)

+	ldc1		$f12, \offset + 96(\base)

+	ldc1		$f13, \offset + 104(\base)

+	ldc1		$f14, \offset + 112(\base)

+	ldc1		$f15, \offset + 120(\base)

+	ldc1		$f16, \offset + 128(\base)

+	ldc1		$f17, \offset + 136(\base)

+	ldc1		$f18, \offset + 144(\base)

+	ldc1		$f19, \offset + 152(\base)

+	ldc1		$f20, \offset + 160(\base)

+	ldc1		$f21, \offset + 168(\base)

+	ldc1		$f22, \offset + 176(\base)

+	ldc1		$f23, \offset + 184(\base)

+	ldc1		$f24, \offset + 192(\base)

+	ldc1		$f25, \offset + 200(\base)

+	ldc1		$f26, \offset + 208(\base)

+	ldc1		$f27, \offset + 216(\base)

+	ldc1		$f28, \offset + 224(\base)

+	ldc1		$f29, \offset + 232(\base)

+	ldc1		$f30, \offset + 240(\base)

+	ldc1		$f31, \offset + 248(\base)

+

+    .endm

 

 /******************************************************************/

 .macro	portSAVE_CONTEXT

@@ -81,10 +166,37 @@
 	captured. */

 	mfc0		k0, _CP0_CAUSE

 	addiu		sp, sp, -portCONTEXT_SIZE

+

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+		/* Test if we are already using the system stack. Only tasks may use the

+		FPU so if we are already in a nested interrupt then the FPU context does

+		not require saving. */

+		la			k1, uxInterruptNesting

+		lw			k1, 0(k1)

+		bne			k1, zero, 2f

+		nop

+

+		/* Test if the current task needs the FPU context saving. */

+		la			k1, ulTaskHasFPUContext

+		lw			k1, 0(k1)

+		beq			k1, zero, 1f

+		nop

+

+		/* Adjust the stack to account for the additional FPU context.*/

+		addiu		sp, sp, -portFPU_CONTEXT_SIZE

+

+	1:

+		/* Save the ulTaskHasFPUContext flag. */

+		sw			k1, portTASK_HAS_FPU_STACK_LOCATION(sp)

+

+	2:

+	#endif

+

 	mfc0		k1, _CP0_STATUS

 

-	/* Also save s6 and s5 so they can be used.  Any nesting interrupts should

-	maintain the values of these registers across the ISR. */

+	/* Also save s7, s6 and s5 so they can be used.  Any nesting interrupts

+	should maintain the values of these registers across the ISR. */

+	sw			s7, 48(sp)

 	sw			s6, 44(sp)

 	sw			s5, 40(sp)

 	sw			k1, portSTATUS_STACK_LOCATION(sp)

@@ -173,6 +285,29 @@
 	mflo		s6, $ac0

 	sw			s6, 8(s5)

 

+	/* Save the FPU context if the nesting count was zero. */

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+		la			s6, uxInterruptNesting

+		lw			s6, 0(s6)

+		addiu		s6, s6, -1

+		bne			s6, zero, 1f

+		nop

+

+		/* Test if the current task needs the FPU context saving. */

+		lw			s6, portTASK_HAS_FPU_STACK_LOCATION(s5)

+		beq			s6, zero, 1f

+		nop

+

+		/* Save the FPU registers. */

+		portSAVE_FPU_REGS ( portCONTEXT_SIZE + 8 ), s5

+

+		/* Save the FPU status register */

+		cfc1		s6, $f31

+		sw			s6, (portCONTEXT_SIZE + portFPCSR_STACK_LOCATION)(s5)

+

+		1:

+	#endif

+

 	/* Update the task stack pointer value if nesting is zero. */

 	la			s6, uxInterruptNesting

 	lw			s6, (s6)

@@ -199,8 +334,24 @@
 	la			s6, uxSavedTaskStackPointer

 	lw			s5, (s6)

 

+    #if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+		/* Restore the FPU context if required. */

+		lw			s6, portTASK_HAS_FPU_STACK_LOCATION(s5)

+		beq			s6, zero, 1f

+		nop

+

+		/* Restore the FPU registers. */

+		portLOAD_FPU_REGS   ( portCONTEXT_SIZE + 8 ), s5

+

+		/* Restore the FPU status register. */

+		lw			s6, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)

+		ctc1		s6, $f31

+   	#endif

+

+1:

+

 	/* Restore the context. */

-1:	lw			s6, 128(s5)

+	lw			s6, 128(s5)

 	mthi		s6, $ac1

 	lw			s6, 124(s5)

 	mtlo		s6, $ac1

@@ -213,7 +364,7 @@
 	lw			s6, 144(s5)

 	mthi		s6, $ac3

 	lw			s6, 140(s5)

-	mtlo			s6, $ac3

+	mtlo		s6, $ac3

 

 	/* Restore DSPControl. */

 	lw			s6, 148(s5)

@@ -227,6 +378,7 @@
 

 	/* s6 is loaded as it was used as a scratch register and therefore saved

 	as part of the interrupt context. */

+	lw			s7, 48(s5)

 	lw			s6, 44(s5)

 	lw			v0, 52(s5)

 	lw			v1, 56(s5)

@@ -257,14 +409,60 @@
 	addiu		k1, k1, -1

 	sw			k1, 0(k0)

 

-	lw			k0, portSTATUS_STACK_LOCATION(s5)

-	lw			k1, portEPC_STACK_LOCATION(s5)

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+		/* If the nesting count is now zero then the FPU context may be restored. */

+		bne			k1, zero, 1f

+		nop

 

-	/* Leave the stack in its original state.  First load sp from s5, then

-	restore s5 from the stack. */

-	add			sp, zero, s5

-	lw			s5, 40(sp)

-	addiu		sp, sp,	portCONTEXT_SIZE

+		/* Restore the value of ulTaskHasFPUContext */

+		la			k0, ulTaskHasFPUContext

+		lw			k1, 0(s5)

+		sw			k1, 0(k0)

+

+		/* If the task does not have an FPU context then adjust the stack normally. */

+		beq			k1, zero, 1f

+		nop

+

+		/* Restore the STATUS and EPC registers */

+		lw			k0, portSTATUS_STACK_LOCATION(s5)

+		lw			k1, portEPC_STACK_LOCATION(s5)

+

+		/* Leave the stack in its original state.  First load sp from s5, then

+		restore s5 from the stack. */

+		add			sp, zero, s5

+		lw			s5, 40(sp)

+

+		/* Adjust the stack pointer to remove the FPU context */

+		addiu		sp, sp,	portFPU_CONTEXT_SIZE

+		beq			zero, zero, 2f

+		nop

+

+		1:  /* Restore the STATUS and EPC registers */

+		lw			k0, portSTATUS_STACK_LOCATION(s5)

+		lw			k1, portEPC_STACK_LOCATION(s5)

+

+		/* Leave the stack in its original state.  First load sp from s5, then

+		restore s5 from the stack. */

+		add			sp, zero, s5

+		lw			s5, 40(sp)

+

+		2:  /* Adjust the stack pointer */

+		addiu		sp, sp, portCONTEXT_SIZE

+

+	#else

+

+		/* Restore the frame when there is no hardware FP support. */

+		lw			k0, portSTATUS_STACK_LOCATION(s5)

+		lw			k1, portEPC_STACK_LOCATION(s5)

+

+		/* Leave the stack in its original state.  First load sp from s5, then

+		restore s5 from the stack. */

+		add			sp, zero, s5

+		lw			s5, 40(sp)

+

+		addiu		sp, sp,	portCONTEXT_SIZE

+

+	#endif // ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

 

 	mtc0		k0, _CP0_STATUS

 	mtc0 		k1, _CP0_EPC

diff --git a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c
index db16867..26d7e85 100644
--- a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c
+++ b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c
@@ -93,6 +93,8 @@
 #define portIE_BIT					( 0x00000001 )

 #define portEXL_BIT					( 0x00000002 )

 #define portMX_BIT					( 0x01000000 ) /* Allow access to DSP instructions. */

+#define portCU1_BIT					( 0x20000000 ) /* enable CP1 for parts with hardware. */

+#define portFR_BIT					( 0x04000000 ) /* Enable 64 bit floating point registers. */

 

 /* Bits within the CAUSE register. */

 #define portCORE_SW_0				( 0x00000100 )

@@ -100,7 +102,16 @@
 

 /* The EXL bit is set to ensure interrupts do not occur while the context of

 the first task is being restored. */

-#define portINITIAL_SR				( portIE_BIT | portEXL_BIT | portMX_BIT )

+#if ( __mips_hard_float == 1 )

+    #define portINITIAL_SR			( portIE_BIT | portEXL_BIT | portMX_BIT | portFR_BIT | portCU1_BIT )

+#else

+    #define portINITIAL_SR			( portIE_BIT | portEXL_BIT | portMX_BIT )

+#endif

+

+/* The initial value to store into the FPU status and control register. This is

+ only used on parts that support a hardware FPU. */

+#define portINITIAL_FPSCR			(0x1000000) /* High perf on denormal ops */

+

 

 /*

 By default port.c generates its tick interrupt from TIMER1.  The user can

@@ -184,6 +195,12 @@
 the callers stack, as some functions seem to want to do this. */

 const StackType_t * const xISRStackTop = &( xISRStack[ configISR_STACK_SIZE - 7 ] );

 

+/* Saved as part of the task context. Set to pdFALSE if the task does not

+ require an FPU context. */

+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+	uint32_t ulTaskHasFPUContext = 0;

+#endif

+

 /*-----------------------------------------------------------*/

 

 /*

@@ -191,7 +208,8 @@
  */

 StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )

 {

-	/* Ensure byte alignment is maintained when leaving this function. */

+	/* Ensure 8 byte alignment is maintained when leaving this function. */

+	pxTopOfStack--;

 	pxTopOfStack--;

 

 	*pxTopOfStack = (StackType_t) 0xDEADBEEF;

@@ -207,10 +225,10 @@
 	pxTopOfStack--;

 

 	*pxTopOfStack = (StackType_t) pxCode; 		/* CP0_EPC */

-	pxTopOfStack -= 7;  							/* Includes space for AC1 - AC3. */

-

-	*pxTopOfStack = (StackType_t) 0x00000000;	/* DSPControl */

 	pxTopOfStack--;

+    

+	*pxTopOfStack = (StackType_t) 0x00000000;	/* DSPControl */    

+	pxTopOfStack -= 7;  						/* Includes space for AC1 - AC3. */

 

 	*pxTopOfStack = (StackType_t) portTASK_RETURN_ADDRESS;	/* ra */

 	pxTopOfStack -= 15;

@@ -218,6 +236,8 @@
 	*pxTopOfStack = (StackType_t) pvParameters; /* Parameters to pass in. */

 	pxTopOfStack -= 15;

 

+	*pxTopOfStack = (StackType_t) pdFALSE; /*by default disable FPU context save on parts with FPU */

+    

 	return pxTopOfStack;

 }

 /*-----------------------------------------------------------*/

@@ -361,6 +381,27 @@
 }

 /*-----------------------------------------------------------*/

 

+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+

+	void vPortTaskUsesFPU(void)

+	{

+	extern void vPortInitialiseFPSCR( uint32_t uxFPSCRInit );

+

+		portENTER_CRITICAL();

+    

+		/* Initialise the floating point status register. */

+		vPortInitialiseFPSCR(portINITIAL_FPSCR);  

+    

+		/* A task is registering the fact that it needs a FPU context. Set the

+		FPU flag (saved as part of the task context). */

+		ulTaskHasFPUContext = pdTRUE;

+    

+		portEXIT_CRITICAL();

+	}

+

+#endif /* __mips_hard_float == 1 */

+

+/*-----------------------------------------------------------*/

 

 

 

diff --git a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S
index 05da997..c6bf4a3 100644
--- a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S
+++ b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/port_asm.S
@@ -77,10 +77,12 @@
 	.extern vTaskSwitchContext

 	.extern vPortIncrementTick

 	.extern xISRStackTop

+	.extern ulTaskHasFPUContext

 

 	.global vPortStartFirstTask

 	.global vPortYieldISR

 	.global vPortTickInterruptHandler

+	.global vPortInitialiseFPSCR

 

 

 /******************************************************************/

@@ -189,228 +191,621 @@
 	.ent  vPortYieldISR

 vPortYieldISR:

 

-	/* Make room for the context. First save the current status so it can be

-	manipulated, and the cause and EPC registers so thier original values are

-	captured. */

-	addiu		sp, sp, -portCONTEXT_SIZE

-	mfc0		k1, _CP0_STATUS

+	#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+		/* Code sequence for FPU support, the context save requires advance

+		knowledge of the stack frame size and if the current task actually uses the 

+		FPU. */

 

-	/* Also save s6 and s5 so they can be used.  Any nesting interrupts should

-	maintain the values of these registers across the ISR. */

-	sw			s6, 44(sp)

-	sw			s5, 40(sp)

-	sw			k1, portSTATUS_STACK_LOCATION(sp)

+		/* Make room for the context. First save the current status so it can be

+		manipulated, and the cause and EPC registers so their original values are

+		captured. */

+		la		k0, ulTaskHasFPUContext

+		lw		k0, 0(k0)

+		beq		k0, zero, 1f

+		addiu	sp, sp, -portCONTEXT_SIZE	/* always reserve space for the context. */

+		addiu	sp, sp, -portFPU_CONTEXT_SIZE	/* reserve additional space for the FPU context. */

+	1:

+		mfc0	k1, _CP0_STATUS

 

-	/* Prepare to re-enabled interrupts above the kernel priority. */

-	ins 		k1, zero, 10, 7         /* Clear IPL bits 0:6. */

-    ins 		k1, zero, 18, 1         /* Clear IPL bit 7.  It would be an error here if this bit were set anyway. */

-	ori			k1, k1, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 )

-    ins			k1, zero, 1, 4          /* Clear EXL, ERL and UM. */

+		/* Also save s6 and s5 so they can be used.  Any nesting interrupts should

+		maintain the values of these registers across the ISR. */

+		sw		s6, 44(sp)

+		sw		s5, 40(sp)

+		sw		k1, portSTATUS_STACK_LOCATION(sp)

+		sw		k0, portTASK_HAS_FPU_STACK_LOCATION(sp)

 

-	/* s5 is used as the frame pointer. */

-	add			s5, zero, sp

+		/* Prepare to re-enabled interrupts above the kernel priority. */

+		ins 	k1, zero, 10, 7         /* Clear IPL bits 0:6. */

+		ins 	k1, zero, 18, 1         /* Clear IPL bit 7.  It would be an error here if this bit were set anyway. */

+		ori		k1, k1, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 )

+		ins		k1, zero, 1, 4          /* Clear EXL, ERL and UM. */

 

-	/* Swap to the system stack.  This is not conditional on the nesting

-	count as this interrupt is always the lowest priority and therefore

-	the nesting is always 0. */

-	la			sp, xISRStackTop

-	lw			sp, (sp)

+		/* s5 is used as the frame pointer. */

+		add		s5, zero, sp

 

-	/* Set the nesting count. */

-	la			k0, uxInterruptNesting

-	addiu		s6, zero, 1

-	sw			s6, 0(k0)

+		/* Swap to the system stack.  This is not conditional on the nesting

+		count as this interrupt is always the lowest priority and therefore

+		the nesting is always 0. */

+		la		sp, xISRStackTop

+		lw		sp, (sp)

 

-	/* s6 holds the EPC value, this is saved with the rest of the context

-	after interrupts are enabled. */

-	mfc0 		s6, _CP0_EPC

+		/* Set the nesting count. */

+		la		k0, uxInterruptNesting

+		addiu	s6, zero, 1

+		sw		s6, 0(k0)

 

-	/* Re-enable interrupts above configMAX_SYSCALL_INTERRUPT_PRIORITY. */

-	mtc0		k1, _CP0_STATUS

+		/* s6 holds the EPC value, this is saved with the rest of the context

+		after interrupts are enabled. */

+		mfc0 	s6, _CP0_EPC

 

-	/* Save the context into the space just created.  s6 is saved again

-	here as it now contains the EPC value. */

-	sw			ra, 120(s5)

-	sw			s8, 116(s5)

-	sw			t9, 112(s5)

-	sw			t8, 108(s5)

-	sw			t7, 104(s5)

-	sw			t6, 100(s5)

-	sw			t5, 96(s5)

-	sw			t4, 92(s5)

-	sw			t3, 88(s5)

-	sw			t2, 84(s5)

-	sw			t1, 80(s5)

-	sw			t0, 76(s5)

-	sw			a3, 72(s5)

-	sw			a2, 68(s5)

-	sw			a1, 64(s5)

-	sw			a0, 60(s5)

-	sw			v1, 56(s5)

-	sw			v0, 52(s5)

-	sw			s7, 48(s5)

-	sw			s6, portEPC_STACK_LOCATION(s5)

-	/* s5 and s6 has already been saved. */

-	sw			s4,	36(s5)

-	sw			s3, 32(s5)

-	sw			s2, 28(s5)

-	sw			s1, 24(s5)

-	sw			s0, 20(s5)

-	sw			$1, 16(s5)

+		/* Re-enable interrupts above configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+		mtc0	k1, _CP0_STATUS

 

-	/* s7 is used as a scratch register as this should always be saved across

-	nesting interrupts. */

+		/* Save the context into the space just created.  s6 is saved again

+		here as it now contains the EPC value. */

+		sw		ra, 120(s5)

+		sw		s8, 116(s5)

+		sw		t9, 112(s5)

+		sw		t8, 108(s5)

+		sw		t7, 104(s5)

+		sw		t6, 100(s5)

+		sw		t5, 96(s5)

+		sw		t4, 92(s5)

+		sw		t3, 88(s5)

+		sw		t2, 84(s5)

+		sw		t1, 80(s5)

+		sw		t0, 76(s5)

+		sw		a3, 72(s5)

+		sw		a2, 68(s5)

+		sw		a1, 64(s5)

+		sw		a0, 60(s5)

+		sw		v1, 56(s5)

+		sw		v0, 52(s5)

+		sw		s7, 48(s5)

+		sw		s6, portEPC_STACK_LOCATION(s5)

+		/* s5 and s6 has already been saved. */

+		sw		s4, 36(s5)

+		sw		s3, 32(s5)

+		sw		s2, 28(s5)

+		sw		s1, 24(s5)

+		sw		s0, 20(s5)

+		sw		$1, 16(s5)

 

-	/* Save the AC0, AC1, AC2 and AC3. */

-	mfhi		s7, $ac1

-	sw			s7, 128(s5)

-	mflo		s7, $ac1

-	sw			s7, 124(s5)

+		/* s7 is used as a scratch register as this should always be saved across

+		nesting interrupts. */

 

-	mfhi		s7, $ac2

-	sw			s7, 136(s5)

-	mflo		s7, $ac2

-	sw			s7, 132(s5)

+		/* Save the AC0, AC1, AC2 and AC3. */

+		mfhi	s7, $ac1

+		sw		s7, 128(s5)

+		mflo	s7, $ac1

+		sw		s7, 124(s5)

 

-	mfhi		s7, $ac3

-	sw			s7, 144(s5)

-	mflo		s7, $ac3

-	sw			s7, 140(s5)

+		mfhi	s7, $ac2

+		sw		s7, 136(s5)

+		mflo	s7, $ac2

+		sw		s7, 132(s5)

 

-	rddsp		s7

-	sw			s7, 148(s5)

+		mfhi	s7, $ac3

+		sw		s7, 144(s5)

+		mflo	s7, $ac3

+		sw		s7, 140(s5)

 

-	mfhi		s7, $ac0

-	sw			s7, 12(s5)

-	mflo		s7, $ac0

-	sw			s7, 8(s5)

+		rddsp	s7

+		sw		s7, 148(s5)

 

-	/* Save the stack pointer to the task. */

-	la			s7, pxCurrentTCB

-	lw			s7, (s7)

-	sw			s5, (s7)

+		mfhi	s7, $ac0

+		sw		s7, 12(s5)

+		mflo	s7, $ac0

+		sw		s7, 8(s5)

 

-	/* Set the interrupt mask to the max priority that can use the API.  The

-	yield handler will only be called at configKERNEL_INTERRUPT_PRIORITY which

-	is below configMAX_SYSCALL_INTERRUPT_PRIORITY - so this can only ever

-	raise the IPL value and never lower it. */

-	di

-	ehb

-	mfc0		s7, _CP0_STATUS

-	ins 		s7, zero, 10, 7

-    ins 		s7, zero, 18, 1

-	ori			s6, s7, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 ) | 1

+		/* Test if FPU context save is required. */

+		lw		s7, portTASK_HAS_FPU_STACK_LOCATION(s5)

+		beq		s7, zero, 1f

+		nop

 

-	/* This mtc0 re-enables interrupts, but only above

-	configMAX_SYSCALL_INTERRUPT_PRIORITY. */

-	mtc0		s6, _CP0_STATUS

-	ehb

+		/* Save the FPU registers above the normal context. */

+		portSAVE_FPU_REGS   (portCONTEXT_SIZE + 8), s5

 

-	/* Clear the software interrupt in the core. */

-	mfc0		s6, _CP0_CAUSE

-	ins			s6, zero, 8, 1

-	mtc0		s6, _CP0_CAUSE

-	ehb

+		/* Save the FPU status register */

+		cfc1	s7, $f31

+		sw		s7, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)

 

-	/* Clear the interrupt in the interrupt controller. */

-	la			s6, IFS0CLR

-	addiu		s4, zero, 2

-	sw			s4, (s6)

+	1:

+		/* Save the stack pointer to the task. */

+		la		s7, pxCurrentTCB

+		lw		s7, (s7)

+		sw		s5, (s7)

 

-	jal			vTaskSwitchContext

-	nop

+		/* Set the interrupt mask to the max priority that can use the API.  The

+		yield handler will only be called at configKERNEL_INTERRUPT_PRIORITY which

+		is below configMAX_SYSCALL_INTERRUPT_PRIORITY - so this can only ever

+		raise the IPL value and never lower it. */

+		di

+		ehb

+		mfc0	s7, _CP0_STATUS

+		ins 	s7, zero, 10, 7

+		ins 	s7, zero, 18, 1

+		ori		s6, s7, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 ) | 1

 

-	/* Clear the interrupt mask again.  The saved status value is still in s7. */

-	mtc0		s7, _CP0_STATUS

-	ehb

+		/* This mtc0 re-enables interrupts, but only above

+		configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+		mtc0	s6, _CP0_STATUS

+		ehb

 

-	/* Restore the stack pointer from the TCB. */

-	la			s0, pxCurrentTCB

-	lw			s0, (s0)

-	lw			s5, (s0)

+		/* Clear the software interrupt in the core. */

+		mfc0	s6, _CP0_CAUSE

+		ins		s6, zero, 8, 1

+		mtc0	s6, _CP0_CAUSE

+		ehb

 

-	/* Restore the rest of the context. */

-	lw			s0, 128(s5)

-	mthi		s0, $ac1

-	lw			s0, 124(s5)

-	mtlo		s0, $ac1

+		/* Clear the interrupt in the interrupt controller. */

+		la		s6, IFS0CLR

+		addiu	s4, zero, 2

+		sw		s4, (s6)

 

-	lw			s0, 136(s5)

-	mthi		s0, $ac2

-	lw			s0, 132(s5)

-	mtlo		s0, $ac2

+		jal		vTaskSwitchContext

+		nop

 

-	lw			s0, 144(s5)

-	mthi		s0, $ac3

-	lw			s0, 140(s5)

-	mtlo		s0, $ac3

+		/* Clear the interrupt mask again.  The saved status value is still in s7. */

+		mtc0	s7, _CP0_STATUS

+		ehb

 

-	lw			s0, 148(s5)

-	wrdsp		s0

+		/* Restore the stack pointer from the TCB. */

+		la		s0, pxCurrentTCB

+		lw		s0, (s0)

+		lw		s5, (s0)

 

-	lw			s0, 8(s5)

-	mtlo		s0, $ac0

-	lw			s0, 12(s5)

-	mthi		s0, $ac0

+		/* Test if the FPU context needs restoring. */

+		lw		s0, portTASK_HAS_FPU_STACK_LOCATION(s5)

+		beq		s0, zero, 1f

+		nop

 

-	lw			$1, 16(s5)

-	lw			s0, 20(s5)

-	lw			s1, 24(s5)

-	lw			s2, 28(s5)

-	lw			s3, 32(s5)

-	lw			s4, 36(s5)

+		/* Restore the FPU status register. */

+		lw		s0, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)

+		ctc1	s0, $f31

 

-	/* s5 is loaded later. */

-	lw			s6, 44(s5)

-	lw			s7, 48(s5)

-	lw			v0, 52(s5)

-	lw			v1, 56(s5)

-	lw			a0, 60(s5)

-	lw			a1, 64(s5)

-	lw			a2, 68(s5)

-	lw			a3, 72(s5)

-	lw			t0, 76(s5)

-	lw			t1, 80(s5)

-	lw			t2, 84(s5)

-	lw			t3, 88(s5)

-	lw			t4, 92(s5)

-	lw			t5, 96(s5)

-	lw			t6, 100(s5)

-	lw			t7, 104(s5)

-	lw			t8, 108(s5)

-	lw			t9, 112(s5)

-	lw			s8, 116(s5)

-	lw			ra, 120(s5)

+		/* Restore the FPU registers. */

+		portLOAD_FPU_REGS   ( portCONTEXT_SIZE + 8 ), s5

 

-	/* Protect access to the k registers, and others. */

-	di

-	ehb

+	1:

+		/* Restore the rest of the context. */

+		lw		s0, 128(s5)

+		mthi	s0, $ac1

+		lw		s0, 124(s5)

+		mtlo		s0, $ac1

 

-	/* Set nesting back to zero.  As the lowest priority interrupt this

-	interrupt cannot have nested. */

-	la			k0, uxInterruptNesting

-	sw			zero, 0(k0)

+		lw		s0, 136(s5)

+		mthi	s0, $ac2

+		lw		s0, 132(s5)

+		mtlo	s0, $ac2

 

-	/* Switch back to use the real stack pointer. */

-	add			sp, zero, s5

+		lw		s0, 144(s5)

+		mthi	s0, $ac3

+		lw		s0, 140(s5)

+		mtlo	s0, $ac3

 

-	/* Restore the real s5 value. */

-	lw			s5, 40(sp)

+		lw		s0, 148(s5)

+		wrdsp	s0

 

-	/* Pop the status and epc values. */

-	lw			k1, portSTATUS_STACK_LOCATION(sp)

-	lw			k0, portEPC_STACK_LOCATION(sp)

+		lw		s0, 8(s5)

+		mtlo	s0, $ac0

+		lw		s0, 12(s5)

+		mthi	s0, $ac0

 

-	/* Remove stack frame. */

-	addiu		sp, sp, portCONTEXT_SIZE

+		lw		$1, 16(s5)

+		lw		s0, 20(s5)

+		lw		s1, 24(s5)

+		lw		s2, 28(s5)

+		lw		s3, 32(s5)

+		lw		s4, 36(s5)

 

-	mtc0		k1, _CP0_STATUS

-	mtc0 		k0, _CP0_EPC

+		/* s5 is loaded later. */

+		lw		s6, 44(s5)

+		lw		s7, 48(s5)

+		lw		v0, 52(s5)

+		lw		v1, 56(s5)

+		lw		a0, 60(s5)

+		lw		a1, 64(s5)

+		lw		a2, 68(s5)

+		lw		a3, 72(s5)

+		lw		t0, 76(s5)

+		lw		t1, 80(s5)

+		lw		t2, 84(s5)

+		lw		t3, 88(s5)

+		lw		t4, 92(s5)

+		lw		t5, 96(s5)

+		lw		t6, 100(s5)

+		lw		t7, 104(s5)

+		lw		t8, 108(s5)

+		lw		t9, 112(s5)

+		lw		s8, 116(s5)

+		lw		ra, 120(s5)

+

+		/* Protect access to the k registers, and others. */

+		di

+		ehb

+

+		/* Set nesting back to zero.  As the lowest priority interrupt this

+		interrupt cannot have nested. */

+		la		k0, uxInterruptNesting

+		sw		zero, 0(k0)

+

+		/* Switch back to use the real stack pointer. */

+		add		sp, zero, s5

+

+		/* Restore the real s5 value. */

+		lw		s5, 40(sp)

+

+		/* Pop the FPU context value from the stack */

+		lw		k0, portTASK_HAS_FPU_STACK_LOCATION(sp)

+		la		k1, ulTaskHasFPUContext

+		sw		k0, 0(k1)

+		beq		k0, zero, 1f

+		nop

+

+		/* task has FPU context so adjust the stack frame after popping the

+		status and epc values. */

+		lw		k1, portSTATUS_STACK_LOCATION(sp)

+		lw		k0, portEPC_STACK_LOCATION(sp)

+		addiu	sp, sp, portFPU_CONTEXT_SIZE

+		beq		zero, zero, 2f

+		nop

+

+	1:

+		/* Pop the status and epc values. */

+		lw		k1, portSTATUS_STACK_LOCATION(sp)

+		lw		k0, portEPC_STACK_LOCATION(sp)

+

+	2:

+		/* Remove stack frame. */

+		addiu	sp, sp, portCONTEXT_SIZE

+

+	#else

+		/* Code sequence for no FPU support, the context save requires advance

+		knowledge of the stack frame size when no FPU is being used */

+

+		/* Make room for the context. First save the current status so it can be

+		manipulated, and the cause and EPC registers so thier original values are

+		captured. */

+		addiu	sp, sp, -portCONTEXT_SIZE

+		mfc0	k1, _CP0_STATUS

+

+		/* Also save s6 and s5 so they can be used.  Any nesting interrupts should

+		maintain the values of these registers across the ISR. */

+		sw		s6, 44(sp)

+		sw		s5, 40(sp)

+		sw		k1, portSTATUS_STACK_LOCATION(sp)

+

+		/* Prepare to re-enabled interrupts above the kernel priority. */

+		ins 	k1, zero, 10, 7         /* Clear IPL bits 0:6. */

+		ins 	k1, zero, 18, 1         /* Clear IPL bit 7.  It would be an error here if this bit were set anyway. */

+		ori		k1, k1, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 )

+		ins		k1, zero, 1, 4          /* Clear EXL, ERL and UM. */

+

+		/* s5 is used as the frame pointer. */

+		add		s5, zero, sp

+

+		/* Swap to the system stack.  This is not conditional on the nesting

+		count as this interrupt is always the lowest priority and therefore

+		the nesting is always 0. */

+		la		sp, xISRStackTop

+		lw		sp, (sp)

+

+		/* Set the nesting count. */

+		la		k0, uxInterruptNesting

+		addiu	s6, zero, 1

+		sw		s6, 0(k0)

+

+		/* s6 holds the EPC value, this is saved with the rest of the context

+		after interrupts are enabled. */

+		mfc0 	s6, _CP0_EPC

+

+		/* Re-enable interrupts above configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+		mtc0	k1, _CP0_STATUS

+

+		/* Save the context into the space just created.  s6 is saved again

+		here as it now contains the EPC value. */

+		sw		ra, 120(s5)

+		sw		s8, 116(s5)

+		sw		t9, 112(s5)

+		sw		t8, 108(s5)

+		sw		t7, 104(s5)

+		sw		t6, 100(s5)

+		sw		t5, 96(s5)

+		sw		t4, 92(s5)

+		sw		t3, 88(s5)

+		sw		t2, 84(s5)

+		sw		t1, 80(s5)

+		sw		t0, 76(s5)

+		sw		a3, 72(s5)

+		sw		a2, 68(s5)

+		sw		a1, 64(s5)

+		sw		a0, 60(s5)

+		sw		v1, 56(s5)

+		sw		v0, 52(s5)

+		sw		s7, 48(s5)

+		sw		s6, portEPC_STACK_LOCATION(s5)

+		/* s5 and s6 has already been saved. */

+		sw		s4, 36(s5)

+		sw		s3, 32(s5)

+		sw		s2, 28(s5)

+		sw		s1, 24(s5)

+		sw		s0, 20(s5)

+		sw		$1, 16(s5)

+

+		/* s7 is used as a scratch register as this should always be saved across

+		nesting interrupts. */

+

+		/* Save the AC0, AC1, AC2 and AC3. */

+		mfhi	s7, $ac1

+		sw		s7, 128(s5)

+		mflo	s7, $ac1

+		sw		s7, 124(s5)

+

+		mfhi	s7, $ac2

+		sw		s7, 136(s5)

+		mflo	s7, $ac2

+		sw		s7, 132(s5)

+

+		mfhi	s7, $ac3

+		sw		s7, 144(s5)

+		mflo	s7, $ac3

+		sw		s7, 140(s5)

+

+		rddsp	s7

+		sw		s7, 148(s5)

+

+		mfhi	s7, $ac0

+		sw		s7, 12(s5)

+		mflo	s7, $ac0

+		sw		s7, 8(s5)

+

+		/* Save the stack pointer to the task. */

+		la		s7, pxCurrentTCB

+		lw		s7, (s7)

+		sw		s5, (s7)

+

+		/* Set the interrupt mask to the max priority that can use the API.  The

+		yield handler will only be called at configKERNEL_INTERRUPT_PRIORITY which

+		is below configMAX_SYSCALL_INTERRUPT_PRIORITY - so this can only ever

+		raise the IPL value and never lower it. */

+		di

+		ehb

+		mfc0	s7, _CP0_STATUS

+		ins 	s7, zero, 10, 7

+		ins 	s7, zero, 18, 1

+		ori		s6, s7, ( configMAX_SYSCALL_INTERRUPT_PRIORITY << 10 ) | 1

+

+		/* This mtc0 re-enables interrupts, but only above

+		configMAX_SYSCALL_INTERRUPT_PRIORITY. */

+		mtc0	s6, _CP0_STATUS

+		ehb

+

+		/* Clear the software interrupt in the core. */

+		mfc0	s6, _CP0_CAUSE

+		ins		s6, zero, 8, 1

+		mtc0	s6, _CP0_CAUSE

+		ehb

+

+		/* Clear the interrupt in the interrupt controller. */

+		la		s6, IFS0CLR

+		addiu	s4, zero, 2

+		sw		s4, (s6)

+

+		jal		vTaskSwitchContext

+		nop

+

+		/* Clear the interrupt mask again.  The saved status value is still in s7. */

+		mtc0	s7, _CP0_STATUS

+		ehb

+

+		/* Restore the stack pointer from the TCB. */

+		la		s0, pxCurrentTCB

+		lw		s0, (s0)

+		lw		s5, (s0)

+

+		/* Restore the rest of the context. */

+		lw		s0, 128(s5)

+		mthi	s0, $ac1

+		lw		s0, 124(s5)

+		mtlo	s0, $ac1

+

+		lw		s0, 136(s5)

+		mthi	s0, $ac2

+		lw		s0, 132(s5)

+		mtlo	s0, $ac2

+

+		lw		s0, 144(s5)

+		mthi	s0, $ac3

+		lw		s0, 140(s5)

+		mtlo	s0, $ac3

+

+		lw		s0, 148(s5)

+		wrdsp	s0

+

+		lw		s0, 8(s5)

+		mtlo	s0, $ac0

+		lw		s0, 12(s5)

+		mthi	s0, $ac0

+

+		lw		$1, 16(s5)

+		lw		s0, 20(s5)

+		lw		s1, 24(s5)

+		lw		s2, 28(s5)

+		lw		s3, 32(s5)

+		lw		s4, 36(s5)

+

+		/* s5 is loaded later. */

+		lw		s6, 44(s5)

+		lw		s7, 48(s5)

+		lw		v0, 52(s5)

+		lw		v1, 56(s5)

+		lw		a0, 60(s5)

+		lw		a1, 64(s5)

+		lw		a2, 68(s5)

+		lw		a3, 72(s5)

+		lw		t0, 76(s5)

+		lw		t1, 80(s5)

+		lw		t2, 84(s5)

+		lw		t3, 88(s5)

+		lw		t4, 92(s5)

+		lw		t5, 96(s5)

+		lw		t6, 100(s5)

+		lw		t7, 104(s5)

+		lw		t8, 108(s5)

+		lw		t9, 112(s5)

+		lw		s8, 116(s5)

+		lw		ra, 120(s5)

+

+		/* Protect access to the k registers, and others. */

+		di

+		ehb

+

+		/* Set nesting back to zero.  As the lowest priority interrupt this

+		interrupt cannot have nested. */

+		la		k0, uxInterruptNesting

+		sw		zero, 0(k0)

+

+		/* Switch back to use the real stack pointer. */

+		add		sp, zero, s5

+

+		/* Restore the real s5 value. */

+		lw		s5, 40(sp)

+

+		/* Pop the status and epc values. */

+		lw		k1, portSTATUS_STACK_LOCATION(sp)

+		lw		k0, portEPC_STACK_LOCATION(sp)

+

+		/* Remove stack frame. */

+		addiu	sp, sp, portCONTEXT_SIZE

+

+	#endif /* ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 ) */

+

+	/* Restore the status and EPC registers and return */

+	mtc0	k1, _CP0_STATUS

+	mtc0 	k0, _CP0_EPC

 	ehb

 	eret

 	nop

 

-	.end		vPortYieldISR

+	.end	vPortYieldISR

+

+/******************************************************************/

+

+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+

+	.macro portFPUSetAndInc reg, dest

+	mtc1	\reg, \dest

+	cvt.d.w	\dest, \dest

+	addiu	\reg, \reg, 1

+	.endm

+

+	.set	noreorder

+	.set 	noat

+	.section .text, code

+	.ent	vPortInitialiseFPSCR

+

+vPortInitialiseFPSCR:

+

+	/* Initialize the floating point status register in CP1. The initial

+	value is passed in a0. */

+	ctc1		a0, $f31

+

+	/* Clear the FPU registers */

+	addiu			a0, zero, 0x0000

+	portFPUSetAndInc	a0, $f0

+	portFPUSetAndInc	a0, $f1

+	portFPUSetAndInc	a0, $f2

+	portFPUSetAndInc	a0, $f3

+	portFPUSetAndInc	a0, $f4

+	portFPUSetAndInc	a0, $f5

+	portFPUSetAndInc	a0, $f6

+	portFPUSetAndInc	a0, $f7

+	portFPUSetAndInc	a0, $f8

+	portFPUSetAndInc	a0, $f9

+	portFPUSetAndInc	a0, $f10

+	portFPUSetAndInc	a0, $f11

+	portFPUSetAndInc	a0, $f12

+	portFPUSetAndInc	a0, $f13

+	portFPUSetAndInc	a0, $f14

+	portFPUSetAndInc	a0, $f15

+	portFPUSetAndInc	a0, $f16

+	portFPUSetAndInc	a0, $f17

+	portFPUSetAndInc	a0, $f18

+	portFPUSetAndInc	a0, $f19

+	portFPUSetAndInc	a0, $f20

+	portFPUSetAndInc	a0, $f21

+	portFPUSetAndInc	a0, $f22

+	portFPUSetAndInc	a0, $f23

+	portFPUSetAndInc	a0, $f24

+	portFPUSetAndInc	a0, $f25

+	portFPUSetAndInc	a0, $f26

+	portFPUSetAndInc	a0, $f27

+	portFPUSetAndInc	a0, $f28

+	portFPUSetAndInc	a0, $f29

+	portFPUSetAndInc	a0, $f30

+	portFPUSetAndInc	a0, $f31

+

+	jr		ra

+	nop

+

+	.end vPortInitialiseFPSCR

+

+#endif /* ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 ) */

+	

+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+

+	/**********************************************************************/

+	/* Test read back								*/

+	/* a0 = address to store registers				*/

+

+	.set		noreorder

+	.set 		noat

+	.section	.text, code

+	.ent		vPortFPUReadback

+	.global		vPortFPUReadback

+

+vPortFPUReadback:

+	sdc1		$f0, 0(a0)

+	sdc1		$f1, 8(a0)

+	sdc1		$f2, 16(a0)

+	sdc1		$f3, 24(a0)

+	sdc1		$f4, 32(a0)

+	sdc1		$f5, 40(a0)

+	sdc1		$f6, 48(a0)

+	sdc1		$f7, 56(a0)

+	sdc1		$f8, 64(a0)

+	sdc1		$f9, 72(a0)

+	sdc1		$f10, 80(a0)

+	sdc1		$f11, 88(a0)

+	sdc1		$f12, 96(a0)

+	sdc1		$f13, 104(a0)

+	sdc1		$f14, 112(a0)

+	sdc1		$f15, 120(a0)

+	sdc1		$f16, 128(a0)

+	sdc1		$f17, 136(a0)

+	sdc1		$f18, 144(a0)

+	sdc1		$f19, 152(a0)

+	sdc1		$f20, 160(a0)

+	sdc1		$f21, 168(a0)

+	sdc1		$f22, 176(a0)

+	sdc1		$f23, 184(a0)

+	sdc1		$f24, 192(a0)

+	sdc1		$f25, 200(a0)

+	sdc1		$f26, 208(a0)

+	sdc1		$f27, 216(a0)

+	sdc1		$f28, 224(a0)

+	sdc1		$f29, 232(a0)

+	sdc1		$f30, 240(a0)

+	sdc1		$f31, 248(a0)

+

+	jr		ra

+	nop

+

+	.end vPortFPUReadback

+

+#endif /* ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 ) */

+

 

 

 

diff --git a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h
index 7b5034f..e400070 100644
--- a/FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h
+++ b/FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h
@@ -183,6 +183,15 @@
 #define portSET_INTERRUPT_MASK_FROM_ISR() uxPortSetInterruptMaskFromISR()

 #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) vPortClearInterruptMaskFromISR( uxSavedStatusRegister )

 

+#if ( __mips_hard_float == 0 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+    #error configUSE_TASK_FPU_SUPPORT can only be set to 1 when the part supports a hardware FPU module.

+#endif

+

+#if ( __mips_hard_float == 1 ) && ( configUSE_TASK_FPU_SUPPORT == 1 )

+    void vPortTaskUsesFPU( void );

+	#define portTASK_USES_FLOATING_POINT() vPortTaskUsesFPU()

+#endif

+

 #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION

 	#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1

 #endif

diff --git a/FreeRTOS/Source/timers.c b/FreeRTOS/Source/timers.c
index 9ede09f..663b60a 100644
--- a/FreeRTOS/Source/timers.c
+++ b/FreeRTOS/Source/timers.c
@@ -233,7 +233,7 @@
  * If a timer has expired, process it.  Otherwise, block the timer service task

  * until either a timer does expire or a command is received.

  */

-static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, const BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION;

+static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION;

 

 /*-----------------------------------------------------------*/

 

@@ -442,7 +442,7 @@
 }

 /*-----------------------------------------------------------*/

 

-static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, const BaseType_t xListWasEmpty )

+static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty )

 {

 TickType_t xTimeNow;

 BaseType_t xTimerListsWereSwitched;

@@ -471,6 +471,13 @@
 				received - whichever comes first.  The following line cannot

 				be reached unless xNextExpireTime > xTimeNow, except in the

 				case when the current timer list is empty. */

+				if( xListWasEmpty != pdFALSE )

+				{

+					/* The current timer list is empty - is the overflow list

+					also empty? */

+					xListWasEmpty = listLIST_IS_EMPTY( pxOverflowTimerList );

+				}

+

 				vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty );

 

 				if( xTaskResumeAll() == pdFALSE )