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.
This commit is contained in:
Richard Barry 2015-10-15 20:19:26 +00:00
parent 38cb08133d
commit 57cc3389a5
84 changed files with 4972 additions and 1813 deletions

View File

@ -69,7 +69,7 @@
<option id="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.DIAG_WRAP.2105562167" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.MSP432_5.2.compilerID.DIAG_WRAP.off" valueType="enumerated"/> <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.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_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__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__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"/> <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"/>

View File

@ -58,7 +58,7 @@
</linkedResources> </linkedResources>
<filteredResources> <filteredResources>
<filter> <filter>
<id>1427193581265</id> <id>1444926372795</id>
<name></name> <name></name>
<type>10</type> <type>10</type>
<matcher> <matcher>
@ -67,7 +67,7 @@
</matcher> </matcher>
</filter> </filter>
<filter> <filter>
<id>1427193581275</id> <id>1444926372800</id>
<name></name> <name></name>
<type>10</type> <type>10</type>
<matcher> <matcher>
@ -76,7 +76,7 @@
</matcher> </matcher>
</filter> </filter>
<filter> <filter>
<id>1427193581275</id> <id>1444926372806</id>
<name></name> <name></name>
<type>10</type> <type>10</type>
<matcher> <matcher>
@ -84,6 +84,69 @@
<arguments>1.0-name-matches-false-false-Keil_*</arguments> <arguments>1.0-name-matches-false-false-Keil_*</arguments>
</matcher> </matcher>
</filter> </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> <filter>
<id>1424106057421</id> <id>1424106057421</id>
<name>Full_Demo</name> <name>Full_Demo</name>

View File

@ -11,8 +11,6 @@ encoding//Debug/Full_Demo/Standard_Demo_Tasks/subdir_rules.mk=UTF-8
encoding//Debug/Full_Demo/Standard_Demo_Tasks/subdir_vars.mk=UTF-8 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_rules.mk=UTF-8
encoding//Debug/Full_Demo/subdir_vars.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_rules.mk=UTF-8
encoding//Debug/SimplyBlinkyDemo/subdir_vars.mk=UTF-8 encoding//Debug/SimplyBlinkyDemo/subdir_vars.mk=UTF-8
encoding//Debug/SystemFiles_CCS/subdir_rules.mk=UTF-8 encoding//Debug/SystemFiles_CCS/subdir_rules.mk=UTF-8

View File

@ -85,7 +85,7 @@
</option> </option>
<option> <option>
<name>OCDynDriverList</name> <name>OCDynDriverList</name>
<state>JLINK_ID</state> <state>IJET_ID</state>
</option> </option>
<option> <option>
<name>OCLastSavedByProductVersion</name> <name>OCLastSavedByProductVersion</name>
@ -538,7 +538,7 @@
<option> <option>
<name>IjetResetList</name> <name>IjetResetList</name>
<version>1</version> <version>1</version>
<state>10</state> <state>4</state>
</option> </option>
<option> <option>
<name>IjetHWResetDuration</name> <name>IjetHWResetDuration</name>
@ -603,7 +603,7 @@
</option> </option>
<option> <option>
<name>IjetCpuClockEdit</name> <name>IjetCpuClockEdit</name>
<state>72.0</state> <state></state>
</option> </option>
<option> <option>
<name>IjetSwoPrescalerList</name> <name>IjetSwoPrescalerList</name>

View File

@ -55,7 +55,7 @@
</Tab> </Tab>
</Tabs> </Tabs>
<SelectedTab>0</SelectedTab></Wnd1><Wnd4> <SelectedTab>0</SelectedTab></Wnd1><Wnd3>
<Tabs> <Tabs>
<Tab> <Tab>
<Identity>TabID-2417-20288</Identity> <Identity>TabID-2417-20288</Identity>
@ -67,20 +67,20 @@
</Tab> </Tab>
</Tabs> </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> <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> <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> </Desktop>
</Project> </Project>

View File

@ -9,21 +9,8 @@ TriggerName=main
LimitSize=0 LimitSize=0
ByteLimit=50 ByteLimit=50
[PlDriver] [PlDriver]
MemConfigValue= MemConfigValue=C:\DevTools\IAR Systems\Embedded Workbench 7.2\arm\CONFIG\debugger\TexasInstruments\MSP432P401R.svd
FirstRun=0 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] [Jet]
JetConnSerialNo=73866 JetConnSerialNo=73866
JetConnFoundProbes= JetConnFoundProbes=
@ -32,7 +19,7 @@ MultiCoreRunAll=0
OnlineReset=Software OnlineReset=Software
PrevWtdReset=System PrevWtdReset=System
[DebugChecksum] [DebugChecksum]
Checksum=701872400 Checksum=-1201177865
[Exceptions] [Exceptions]
StopOnUncaught=_ 0 StopOnUncaught=_ 0
StopOnThrow=_ 0 StopOnThrow=_ 0
@ -77,6 +64,19 @@ ITMportsLogFile=0
ITMlogFile=$PROJ_DIR$\ITM.log ITMlogFile=$PROJ_DIR$\ITM.log
[Breakpoints] [Breakpoints]
Count=0 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] [Trace2]
Enabled=0 Enabled=0
ShowSource=0 ShowSource=0
@ -90,36 +90,45 @@ EventFOLD=0
EventLSU=0 EventLSU=0
EventSLEEP=0 EventSLEEP=0
[PowerLog] [PowerLog]
Title_0=I0
Symbol_0=0 4 1
LogEnabled=0 LogEnabled=0
GraphEnabled=0 GraphEnabled=0
ShowTimeLog=1 ShowTimeLog=1
ShowTimeSum=0
Title_0=I0
Symbol_0=0 4 1
LiveEnabled=0 LiveEnabled=0
LiveFile=PowerLogLive.log LiveFile=PowerLogLive.log
[DataLog] [DataLog]
LogEnabled=0 LogEnabled=0
SumEnabled=0
GraphEnabled=0 GraphEnabled=0
ShowTimeLog=1 ShowTimeLog=1
SumEnabled=0
ShowTimeSum=1 ShowTimeSum=1
[EventLog] [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 LogEnabled=0
SumEnabled=0
GraphEnabled=0 GraphEnabled=0
ShowTimeLog=1 ShowTimeLog=1
SumEnabled=0
ShowTimeSum=1 ShowTimeSum=1
SumSortOrder=0 SumSortOrder=0
[InterruptLog] [InterruptLog]
LogEnabled=0 LogEnabled=0
SumEnabled=0
GraphEnabled=0 GraphEnabled=0
ShowTimeLog=1 ShowTimeLog=1
SumEnabled=0
ShowTimeSum=1 ShowTimeSum=1
SumSortOrder=0 SumSortOrder=0
[CallStackLog] [CallStackLog]
Enabled=0 Enabled=0
[CallStackStripe]
ShowTiming=1
[DriverProfiling] [DriverProfiling]
Enabled=0 Enabled=0
Mode=3 Mode=3

View File

@ -24,7 +24,7 @@
<Windows> <Windows>
<Wnd1> <Wnd2>
<Tabs> <Tabs>
<Tab> <Tab>
<Identity>TabID-2476-27879</Identity> <Identity>TabID-2476-27879</Identity>
@ -32,11 +32,11 @@
<Factory>Workspace</Factory> <Factory>Workspace</Factory>
<Session> <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> </Tab>
</Tabs> </Tabs>
<SelectedTab>0</SelectedTab></Wnd1><Wnd3> <SelectedTab>0</SelectedTab></Wnd2><Wnd3>
<Tabs> <Tabs>
<Tab> <Tab>
<Identity>TabID-28448-28006</Identity> <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> <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> </Desktop>
</Workspace> </Workspace>

View File

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

View File

@ -35,7 +35,7 @@
<Windows> <Windows>
<Wnd1> <Wnd0>
<Tabs> <Tabs>
<Tab> <Tab>
<Identity>TabID-31096-4084</Identity> <Identity>TabID-31096-4084</Identity>
@ -47,7 +47,7 @@
</Tab> </Tab>
</Tabs> </Tabs>
<SelectedTab>0</SelectedTab></Wnd1><Wnd3> <SelectedTab>0</SelectedTab></Wnd0><Wnd2>
<Tabs> <Tabs>
<Tab> <Tab>
<Identity>TabID-12820-6268</Identity> <Identity>TabID-12820-6268</Identity>
@ -69,20 +69,20 @@
</Tab> </Tab>
<Tab><Identity>TabID-6803-3328</Identity><TabName>Ambiguous Definitions</TabName><Factory>Select-Ambiguous-Definitions</Factory><Session/></Tab></Tabs> <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> <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> <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> </Desktop>
</Workspace> </Workspace>

View File

@ -196,12 +196,12 @@ ISRFunction_t pxISRToCall = pxISRFunction;
$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */ $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */
static void FreeRTOS_Tick_Handler_Entry( void ) static void FreeRTOS_Tick_Handler_Entry( void )
{ {
__asm volatile ( \ __asm volatile (
"PUSH {r0-r1} \t\n" \ "PUSH {r0-r1} \t\n"
"LDR r0, =pxISRFunction \t\n" \ "LDR r0, =pxISRFunction \t\n"
"LDR R1, =FreeRTOS_Tick_Handler \t\n" \ "LDR R1, =FreeRTOS_Tick_Handler \t\n"
"STR R1, [r0] \t\n" \ "STR R1, [r0] \t\n"
"POP {r0-r1} \t\n" \ "POP {r0-r1} \t\n"
"B FreeRTOS_IRQ_Handler " "B FreeRTOS_IRQ_Handler "
); );
} }

View File

@ -202,18 +202,20 @@ void vCMT_1_Channel_1_ISR( void )
* interrupt entry (including interrupt nesting), before calling the C function * interrupt entry (including interrupt nesting), before calling the C function
* saved in the pxISRFunction variable. NOTE: The entry points are naked * saved in the pxISRFunction variable. NOTE: The entry points are naked
* functions - do not add C code to these functions. * functions - do not add C code to these functions.
*
* See http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html
*/ */
#ifdef __GNUC__ #ifdef __GNUC__
/* The IAR equivalent is implemented in /* The IAR equivalent is implemented in
$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */ $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */
static void vCMT_1_Channel_0_ISR_Entry( void ) static void vCMT_1_Channel_0_ISR_Entry( void )
{ {
__asm volatile ( \ __asm volatile (
"PUSH {r0-r1} \t\n" \ "PUSH {r0-r1} \t\n"
"LDR r0, =pxISRFunction \t\n" \ "LDR r0, =pxISRFunction \t\n"
"LDR r1, =vCMT_1_Channel_0_ISR \t\n" \ "LDR r1, =vCMT_1_Channel_0_ISR \t\n"
"STR r1, [r0] \t\n" \ "STR r1, [r0] \t\n"
"POP {r0-r1} \t\n" \ "POP {r0-r1} \t\n"
"B FreeRTOS_IRQ_Handler " "B FreeRTOS_IRQ_Handler "
); );
} }
@ -225,12 +227,12 @@ void vCMT_1_Channel_1_ISR( void )
$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */ $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */
static void vCMT_1_Channel_1_ISR_Entry( void ) static void vCMT_1_Channel_1_ISR_Entry( void )
{ {
__asm volatile ( \ __asm volatile (
"PUSH {r0-r1} \t\n" \ "PUSH {r0-r1} \t\n"
"LDR r0, =pxISRFunction \t\n" \ "LDR r0, =pxISRFunction \t\n"
"LDR r1, =vCMT_1_Channel_1_ISR \t\n" \ "LDR r1, =vCMT_1_Channel_1_ISR \t\n"
"STR r1, [r0] \t\n" \ "STR r1, [r0] \t\n"
"POP {r0-r1} \t\n" \ "POP {r0-r1} \t\n"
"B FreeRTOS_IRQ_Handler " "B FreeRTOS_IRQ_Handler "
); );
} }

View File

@ -375,7 +375,7 @@ const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );
( void ) pxPort; ( void ) pxPort;
/* Don't send the string unless the previous string has been sent. */ /* 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 /* Ensure the calling task's notification state is not already
pending. */ pending. */
@ -433,12 +433,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */ $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */
void r_scifa2_txif2_interrupt_entry( void ) void r_scifa2_txif2_interrupt_entry( void )
{ {
__asm volatile ( \ __asm volatile (
"PUSH {r0-r1} \t\n" \ "PUSH {r0-r1} \t\n"
"LDR r0, =pxISRFunction \t\n" \ "LDR r0, =pxISRFunction \t\n"
"LDR r1, =r_scifa2_txif2_interrupt \t\n" \ "LDR r1, =r_scifa2_txif2_interrupt \t\n"
"STR r1, [r0] \t\n" \ "STR r1, [r0] \t\n"
"POP {r0-r1} \t\n" \ "POP {r0-r1} \t\n"
"B FreeRTOS_IRQ_Handler " "B FreeRTOS_IRQ_Handler "
); );
} }
@ -450,12 +450,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */ $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */
void r_scifa2_rxif2_interrupt_entry( void ) void r_scifa2_rxif2_interrupt_entry( void )
{ {
__asm volatile ( \ __asm volatile (
"PUSH {r0-r1} \t\n" \ "PUSH {r0-r1} \t\n"
"LDR r0, =pxISRFunction \t\n" \ "LDR r0, =pxISRFunction \t\n"
"LDR r1, =r_scifa2_rxif2_interrupt \t\n" \ "LDR r1, =r_scifa2_rxif2_interrupt \t\n"
"STR r1, [r0] \t\n" \ "STR r1, [r0] \t\n"
"POP {r0-r1} \t\n" \ "POP {r0-r1} \t\n"
"B FreeRTOS_IRQ_Handler " "B FreeRTOS_IRQ_Handler "
); );
} }
@ -467,12 +467,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */ $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */
void r_scifa2_drif2_interrupt_entry( void ) void r_scifa2_drif2_interrupt_entry( void )
{ {
__asm volatile ( \ __asm volatile (
"PUSH {r0-r1} \t\n" \ "PUSH {r0-r1} \t\n"
"LDR r0, =pxISRFunction \t\n" \ "LDR r0, =pxISRFunction \t\n"
"LDR r1, =r_scifa2_drif2_interrupt \t\n" \ "LDR r1, =r_scifa2_drif2_interrupt \t\n"
"STR r1, [r0] \t\n" \ "STR r1, [r0] \t\n"
"POP {r0-r1} \t\n" \ "POP {r0-r1} \t\n"
"B FreeRTOS_IRQ_Handler " "B FreeRTOS_IRQ_Handler "
); );
} }
@ -484,12 +484,12 @@ signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar
$PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */ $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */
void r_scifa2_brif2_interrupt_entry( void ) void r_scifa2_brif2_interrupt_entry( void )
{ {
__asm volatile ( \ __asm volatile (
"PUSH {r0-r1} \t\n" \ "PUSH {r0-r1} \t\n"
"LDR r0, =pxISRFunction \t\n" \ "LDR r0, =pxISRFunction \t\n"
"LDR r1, =r_scifa2_brif2_interrupt \t\n" \ "LDR r1, =r_scifa2_brif2_interrupt \t\n"
"STR r1, [r0] \t\n" \ "STR r1, [r0] \t\n"
"POP {r0-r1} \t\n" \ "POP {r0-r1} \t\n"
"B FreeRTOS_IRQ_Handler " "B FreeRTOS_IRQ_Handler "
); );
} }

View File

@ -83,6 +83,8 @@
* THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO * THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO
* APPLICATION, AND ITS ASSOCIATE FreeRTOS ARCHITECTURE PORT! * APPLICATION, AND ITS ASSOCIATE FreeRTOS ARCHITECTURE PORT!
* *
* http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html
*
*/ */
/* Standard includes. */ /* Standard includes. */
@ -136,6 +138,7 @@ extern void R_Systeminit( void );
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* See http://www.freertos.org/Renesas_RZ-T_Cortex-R4F-RTOS.html */
int main( void ) int main( void )
{ {
/* The start up code does not include a routine to clear the BSS segment to /* The start up code does not include a routine to clear the BSS segment to

View File

@ -22,3 +22,49 @@ encoding//Debug/objects.mk=UTF-8
encoding//Debug/sources.mk=UTF-8 encoding//Debug/sources.mk=UTF-8
encoding//Debug/subdir_rules.mk=UTF-8 encoding//Debug/subdir_rules.mk=UTF-8
encoding//Debug/subdir_vars.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

View File

@ -198,7 +198,7 @@ CLI. */
#else #else
/* Using the CCS pre-processor constants. */ /* Using the CCS pre-processor constants. */
#ifdef __LARGE_DATA_MODEL__ #ifdef __LARGE_DATA_MODEL__
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 85 )
#else #else
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 )
#endif #endif

View File

@ -96,6 +96,7 @@
#define configUSE_TRACE_FACILITY 0 #define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 1 #define configUSE_16_BIT_TICKS 1
#define configIDLE_SHOULD_YIELD 1 #define configIDLE_SHOULD_YIELD 1
#define configCHECK_FOR_STACK_OVERFLOW 2
/* Co-routine definitions. */ /* Co-routine definitions. */
#define configUSE_CO_ROUTINES 1 #define configUSE_CO_ROUTINES 1

View File

@ -165,6 +165,10 @@ static void vCheckTask( void *pvParameters );
*/ */
static void prvSetupHardware( void ); 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. */ /* The queue used to send messages to the LCD task. */
@ -290,3 +294,15 @@ void vApplicationIdleHook( void )
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
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( ;; );
}

View File

@ -44,6 +44,9 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
# Distribution Directory # Distribution Directory
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} 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 # 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 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 POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/897580706/heap_1.o.d ${OBJECTDIR}/_ext/410575107/port.o.d ${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d ${OBJECTDIR}/_ext/1787047461/list.o.d ${OBJECTDIR}/_ext/1787047461/queue.o.d ${OBJECTDIR}/_ext/1787047461/tasks.o.d ${OBJECTDIR}/_ext/1787047461/timers.o.d ${OBJECTDIR}/_ext/1787047461/croutine.o.d ${OBJECTDIR}/_ext/270959020/BlockQ.o.d ${OBJECTDIR}/_ext/270959020/blocktim.o.d ${OBJECTDIR}/_ext/270959020/comtest.o.d ${OBJECTDIR}/_ext/270959020/crflash.o.d ${OBJECTDIR}/_ext/270959020/integer.o.d ${OBJECTDIR}/timertest.o.d ${OBJECTDIR}/lcd.o.d ${OBJECTDIR}/main.o.d ${OBJECTDIR}/serial/serial.o.d ${OBJECTDIR}/ParTest/ParTest.o.d
@ -51,6 +54,9 @@ POSSIBLE_DEPFILES=${OBJECTDIR}/_ext/897580706/heap_1.o.d ${OBJECTDIR}/_ext/41057
# Object Files # 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 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= CFLAGS=
ASFLAGS= ASFLAGS=
@ -66,7 +72,10 @@ LDLIBSOPTIONS=
FIXDEPS=fixDeps FIXDEPS=fixDeps
.build-conf: ${BUILD_SUBPROJECTS} .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_PROCESSOR_OPTION=24FJ128GA010
MP_LINKER_FILE_OPTION=,--script=p24FJ128GA010.gld MP_LINKER_FILE_OPTION=,--script=p24FJ128GA010.gld
@ -74,207 +83,241 @@ MP_LINKER_FILE_OPTION=,--script=p24FJ128GA010.gld
# Rules for buildStep: compile # Rules for buildStep: compile
ifeq ($(TYPE_IMAGE), DEBUG_RUN) ifeq ($(TYPE_IMAGE), DEBUG_RUN)
${OBJECTDIR}/_ext/897580706/heap_1.o: ../../Source/portable/MemMang/heap_1.c nbproject/Makefile-${CND_CONF}.mk ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${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 ${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 @${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}../ @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/integer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/timertest.o: timertest.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/timertest.o: timertest.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR} @${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/timertest.o.d @${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}../ @${FIXDEPS} "${OBJECTDIR}/timertest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/lcd.o: lcd.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/lcd.o: lcd.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR} @${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/lcd.o.d @${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}../ @${FIXDEPS} "${OBJECTDIR}/lcd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR} @${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/main.o.d @${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}../ @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/serial/serial.o: serial/serial.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/serial/serial.o: serial/serial.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}/serial @${MKDIR} "${OBJECTDIR}/serial"
@${RM} ${OBJECTDIR}/serial/serial.o.d @${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}../ @${FIXDEPS} "${OBJECTDIR}/serial/serial.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/ParTest/ParTest.o: ParTest/ParTest.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/ParTest/ParTest.o: ParTest/ParTest.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}/ParTest @${MKDIR} "${OBJECTDIR}/ParTest"
@${RM} ${OBJECTDIR}/ParTest/ParTest.o.d @${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}../ @${FIXDEPS} "${OBJECTDIR}/ParTest/ParTest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
else else
${OBJECTDIR}/_ext/897580706/heap_1.o: ../../Source/portable/MemMang/heap_1.c nbproject/Makefile-${CND_CONF}.mk ${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 @${RM} ${OBJECTDIR}/_ext/897580706/heap_1.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/410575107/port.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/1787047461/list.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/1787047461/queue.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/1787047461/tasks.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/1787047461/timers.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/1787047461/croutine.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/270959020/BlockQ.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/270959020/blocktim.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/270959020/comtest.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/270959020/crflash.o.d
@${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 ${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}../ @${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 ${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 @${RM} ${OBJECTDIR}/_ext/270959020/integer.o.d
@${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 ${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}../ @${FIXDEPS} "${OBJECTDIR}/_ext/270959020/integer.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/timertest.o: timertest.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/timertest.o: timertest.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR} @${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/timertest.o.d @${RM} ${OBJECTDIR}/timertest.o.d
@${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 ${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}../ @${FIXDEPS} "${OBJECTDIR}/timertest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/lcd.o: lcd.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/lcd.o: lcd.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR} @${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/lcd.o.d @${RM} ${OBJECTDIR}/lcd.o.d
@${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 ${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}../ @${FIXDEPS} "${OBJECTDIR}/lcd.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR} @${MKDIR} "${OBJECTDIR}"
@${RM} ${OBJECTDIR}/main.o.d @${RM} ${OBJECTDIR}/main.o.d
@${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 ${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}../ @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/serial/serial.o: serial/serial.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/serial/serial.o: serial/serial.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}/serial @${MKDIR} "${OBJECTDIR}/serial"
@${RM} ${OBJECTDIR}/serial/serial.o.d @${RM} ${OBJECTDIR}/serial/serial.o.d
@${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 ${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}../ @${FIXDEPS} "${OBJECTDIR}/serial/serial.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/ParTest/ParTest.o: ParTest/ParTest.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/ParTest/ParTest.o: ParTest/ParTest.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} ${OBJECTDIR}/ParTest @${MKDIR} "${OBJECTDIR}/ParTest"
@${RM} ${OBJECTDIR}/ParTest/ParTest.o.d @${RM} ${OBJECTDIR}/ParTest/ParTest.o.d
@${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 ${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}../ @${FIXDEPS} "${OBJECTDIR}/ParTest/ParTest.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
@ -290,15 +333,17 @@ endif
# Rules for buildStep: assemblePreproc # Rules for buildStep: assemblePreproc
ifeq ($(TYPE_IMAGE), DEBUG_RUN) ifeq ($(TYPE_IMAGE), DEBUG_RUN)
${OBJECTDIR}/_ext/410575107/portasm_PIC24.o: ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S nbproject/Makefile-${CND_CONF}.mk ${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.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}../ @${FIXDEPS} "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d" "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../
else else
${OBJECTDIR}/_ext/410575107/portasm_PIC24.o: ../../Source/portable/MPLAB/PIC24_dsPIC/portasm_PIC24.S nbproject/Makefile-${CND_CONF}.mk ${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.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) ${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}../ @${FIXDEPS} "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.d" "${OBJECTDIR}/_ext/410575107/portasm_PIC24.o.asm.d" -t $(SILENT) -rsi ${MP_CC_DIR}../
@ -309,12 +354,12 @@ endif
ifeq ($(TYPE_IMAGE), DEBUG_RUN) ifeq ($(TYPE_IMAGE), DEBUG_RUN)
dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} @${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 else
dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} @${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} $(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 ${MP_CC_DIR}\\xc16-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/PIC24_MPLAB.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -a -omf=elf
endif endif

View File

@ -1,8 +1,9 @@
# #
#Sat Jun 08 17:32:26 BST 2013 #Thu Oct 15 21:03:35 BST 2015
default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=654ec2e9d4aec452652bf33d59c2beac default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=7b5555b9f3fac10bdeeaa71fff22c072
default.languagetoolchain.dir=C\:\\devtools\\Microchip\\xc16\\v1.11\\bin default.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc16\\v1.25\\bin
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=8fe1589514540343a5279c082104bce0 configurations-xml=e1668378027c43cfe57bea932c980e61
default.languagetoolchain.version=1.11 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=17a71d03e7d3823160f3e8681fc226e8
default.languagetoolchain.version=1.25
host.platform=windows host.platform=windows
conf.ids=default conf.ids=default

View File

@ -15,23 +15,23 @@
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
# #
SHELL=cmd.exe 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. # 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 # 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)" 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_CPPC is not defined
# MP_BC 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_LD is not defined
MP_AR="C:\devtools\Microchip\xc16\v1.11\bin\xc16-ar.exe" MP_AR="C:\DevTools\Microchip\xc16\v1.25\bin\xc16-ar.exe"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/devtools/Microchip/MPLABX/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" 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.11\bin" MP_CC_DIR="C:\DevTools\Microchip\xc16\v1.25\bin"
# MP_CPPC_DIR is not defined # MP_CPPC_DIR is not defined
# MP_BC_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_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 # MP_BC_DIR is not defined

View File

@ -63,9 +63,9 @@
<targetDevice>PIC24FJ128GA010</targetDevice> <targetDevice>PIC24FJ128GA010</targetDevice>
<targetHeader></targetHeader> <targetHeader></targetHeader>
<targetPluginBoard></targetPluginBoard> <targetPluginBoard></targetPluginBoard>
<platformTool>ICD3PlatformTool</platformTool> <platformTool>Simulator</platformTool>
<languageToolchain>XC16</languageToolchain> <languageToolchain>XC16</languageToolchain>
<languageToolchainVersion>1.11</languageToolchainVersion> <languageToolchainVersion>1.25</languageToolchainVersion>
<platform>3</platform> <platform>3</platform>
</toolsSet> </toolsSet>
<compileType> <compileType>
@ -73,8 +73,11 @@
<linkerLibItems> <linkerLibItems>
</linkerLibItems> </linkerLibItems>
</linkerTool> </linkerTool>
<archiverTool>
</archiverTool>
<loading> <loading>
<useAlternateLoadableFile>false</useAlternateLoadableFile> <useAlternateLoadableFile>false</useAlternateLoadableFile>
<parseOnProdLoad>false</parseOnProdLoad>
<alternateLoadableFile></alternateLoadableFile> <alternateLoadableFile></alternateLoadableFile>
</loading> </loading>
</compileType> </compileType>
@ -91,6 +94,7 @@
<property key="code-model" value="default"/> <property key="code-model" value="default"/>
<property key="const-model" value="default"/> <property key="const-model" value="default"/>
<property key="data-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-all-warnings" value="true"/>
<property key="enable-ansi-std" value="false"/> <property key="enable-ansi-std" value="false"/>
<property key="enable-ansi-warnings" value="false"/> <property key="enable-ansi-warnings" value="false"/>
@ -124,16 +128,350 @@
<property key="preprocessor-macros" value=""/> <property key="preprocessor-macros" value=""/>
<property key="scalar-model" value="default"/> <property key="scalar-model" value="default"/>
<property key="use-cci" value="false"/> <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"/> <appendMe value="-I ../../Source/include -I ../../Source/portable/MPLAB/PIC24_dsPIC -I ../Common/include -I . -Wextra"/>
</C30> </C30>
<C30-AR>
<property key="additional-options-chop-files" value="false"/>
</C30-AR>
<C30-AS> <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-AS>
<C30-LD> <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> </C30-LD>
<C30Global> <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> </C30Global>
<ICD3PlatformTool> <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> </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> </conf>
</confs> </confs>
</configurationDescriptor> </configurationDescriptor>

View File

@ -5,7 +5,7 @@
<confs> <confs>
<conf name="default" type="2"> <conf name="default" type="2">
<platformToolSN></platformToolSN> <platformToolSN></platformToolSN>
<languageToolchainDir>C:\devtools\Microchip\xc16\v1.11\bin</languageToolchainDir> <languageToolchainDir>C:\DevTools\Microchip\xc16\v1.25\bin</languageToolchainDir>
<mdbdebugger version="1"> <mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1> <placeholder1>place holder 1</placeholder1>
<placeholder2>place holder 2</placeholder2> <placeholder2>place holder 2</placeholder2>

View File

@ -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/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> </project-private>

View File

@ -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> <type>com.microchip.mplab.nbide.embedded.makeproject</type>
<configuration> <configuration>
<data xmlns="http://www.netbeans.org/ns/make-project/1"> <data xmlns="http://www.netbeans.org/ns/make-project/1">
@ -9,6 +10,7 @@
<cpp-extensions/> <cpp-extensions/>
<header-extensions>h</header-extensions> <header-extensions>h</header-extensions>
<sourceEncoding>ISO-8859-1</sourceEncoding> <sourceEncoding>ISO-8859-1</sourceEncoding>
<asminc-extensions/>
<make-dep-projects/> <make-dep-projects/>
</data> </data>
</configuration> </configuration>

View File

@ -94,14 +94,14 @@
#define configPERIPHERAL_CLOCK_HZ ( 40000000UL ) #define configPERIPHERAL_CLOCK_HZ ( 40000000UL )
#define configMAX_PRIORITIES ( 5UL ) #define configMAX_PRIORITIES ( 5UL )
#define configMINIMAL_STACK_SIZE ( 190 ) #define configMINIMAL_STACK_SIZE ( 190 )
#define configISR_STACK_SIZE ( 300 ) #define configISR_STACK_SIZE ( 400 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 56000 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) 60000 )
#define configMAX_TASK_NAME_LEN ( 8 ) #define configMAX_TASK_NAME_LEN ( 8 )
#define configUSE_TRACE_FACILITY 0 #define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1 #define configIDLE_SHOULD_YIELD 1
#define configUSE_MUTEXES 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 configQUEUE_REGISTRY_SIZE 0
#define configUSE_RECURSIVE_MUTEXES 1 #define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_MALLOC_FAILED_HOOK 1 #define configUSE_MALLOC_FAILED_HOOK 1
@ -109,6 +109,13 @@
#define configUSE_COUNTING_SEMAPHORES 1 #define configUSE_COUNTING_SEMAPHORES 1
#define configGENERATE_RUN_TIME_STATS 0 #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. */ /* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0 #define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

View File

@ -45,17 +45,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
# Source Files Quoted if spaced # 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 # 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 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 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 # 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 # 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= CFLAGS=
@ -326,6 +326,12 @@ ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o: ../ISRTriggeredTask.c nbproject/Make
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o @${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 @${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 else
${OBJECTDIR}/_ext/1163846883/GenQTest.o: ../../Common/Minimal/GenQTest.c nbproject/Makefile-${CND_CONF}.mk ${OBJECTDIR}/_ext/1163846883/GenQTest.o: ../../Common/Minimal/GenQTest.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/_ext/1163846883" @${MKDIR} "${OBJECTDIR}/_ext/1163846883"
@ -489,6 +495,12 @@ ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o: ../ISRTriggeredTask.c nbproject/Make
@${RM} ${OBJECTDIR}/_ext/1472/ISRTriggeredTask.o @${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 @${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 endif
# ------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------
@ -502,12 +514,12 @@ endif
ifeq ($(TYPE_IMAGE), DEBUG_RUN) ifeq ($(TYPE_IMAGE), DEBUG_RUN)
dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} @${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 else
dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} @${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} ${MP_CC_DIR}\\xc32-bin2hex dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}
endif endif

View File

@ -1,9 +1,15 @@
# #
#Wed Jun 24 18:51:30 BST 2015 #Thu Oct 15 18:30:50 BST 2015
PIC32MZ2048_SK.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.34\\bin PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b
PIC32MZ2048_SK.languagetoolchain.version=1.34 PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin
configurations-xml=68562b6839a3ad04af65579a10c3115b conf.ids=PIC32MZ2048_SK,PIC32MZ2048EF_SK_SOFT_FLOAT,PIC32MZ2048EF_SK_HARD_FLOAT
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=47805b5596804b87cda41e61096929be 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 host.platform=windows
conf.ids=PIC32MZ2048_SK
PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a29d9df60dd9a7849837c8f5ca17a004

View File

@ -27,11 +27,11 @@ CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
PROJECTNAME=RTOSDemo.X PROJECTNAME=RTOSDemo.X
# Active Configuration # Active Configuration
DEFAULTCONF=PIC32MZ2048_SK DEFAULTCONF=PIC32MZ2048EF_SK_HARD_FLOAT
CONF=${DEFAULTCONF} CONF=${DEFAULTCONF}
# All Configurations # All Configurations
ALLCONFS=PIC32MZ2048_SK ALLCONFS=PIC32MZ2048_SK PIC32MZ2048EF_SK_SOFT_FLOAT PIC32MZ2048EF_SK_HARD_FLOAT
# build # build
@ -46,12 +46,16 @@ ALLCONFS=PIC32MZ2048_SK
# clobber # clobber
.clobber-impl: .clobber-pre .depcheck-impl .clobber-impl: .clobber-pre .depcheck-impl
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048_SK clean ${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
.all-impl: .all-pre .depcheck-impl .all-impl: .all-pre .depcheck-impl
${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=PIC32MZ2048_SK build ${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

View File

@ -15,23 +15,23 @@
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
# #
SHELL=cmd.exe 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. # 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 # 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)" OS_CURRENT="$(shell uname -s)"
MP_CC="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-gcc.exe" MP_CC="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-gcc.exe"
MP_CPPC="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-g++.exe" MP_CPPC="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-g++.exe"
# MP_BC is not defined # MP_BC is not defined
MP_AS="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-as.exe" MP_AS="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-as.exe"
MP_LD="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-ld.exe" MP_LD="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-ld.exe"
MP_AR="C:\DevTools\Microchip\xc32\v1.34\bin\xc32-ar.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.05/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar" 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.34\bin" MP_CC_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
MP_CPPC_DIR="C:\DevTools\Microchip\xc32\v1.34\bin" MP_CPPC_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
# MP_BC_DIR is not defined # MP_BC_DIR is not defined
MP_AS_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.34\bin" MP_LD_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
MP_AR_DIR="C:\DevTools\Microchip\xc32\v1.34\bin" MP_AR_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
# MP_BC_DIR is not defined # MP_BC_DIR is not defined

View File

@ -11,3 +11,17 @@ CND_ARTIFACT_PATH_PIC32MZ2048_SK=dist/PIC32MZ2048_SK/production/RTOSDemo.X.produ
CND_PACKAGE_DIR_PIC32MZ2048_SK=${CND_DISTDIR}/PIC32MZ2048_SK/package CND_PACKAGE_DIR_PIC32MZ2048_SK=${CND_DISTDIR}/PIC32MZ2048_SK/package
CND_PACKAGE_NAME_PIC32MZ2048_SK=rtosdemo.x.tar CND_PACKAGE_NAME_PIC32MZ2048_SK=rtosdemo.x.tar
CND_PACKAGE_PATH_PIC32MZ2048_SK=${CND_DISTDIR}/PIC32MZ2048_SK/package/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

View File

@ -63,6 +63,7 @@
<itemPath>../timertest_isr.S</itemPath> <itemPath>../timertest_isr.S</itemPath>
<itemPath>../ISRTriggeredTask.c</itemPath> <itemPath>../ISRTriggeredTask.c</itemPath>
<itemPath>../ISRTriggeredTask_isr.S</itemPath> <itemPath>../ISRTriggeredTask_isr.S</itemPath>
<itemPath>../flop_mz.c</itemPath>
</logicalFolder> </logicalFolder>
<logicalFolder name="ExternalFiles" <logicalFolder name="ExternalFiles"
displayName="Important Files" displayName="Important Files"
@ -74,6 +75,9 @@
<Elem>../</Elem> <Elem>../</Elem>
<Elem>../../Common/Minimal</Elem> <Elem>../../Common/Minimal</Elem>
<Elem>../../../Source</Elem> <Elem>../../../Source</Elem>
<Elem>../../Common/Full</Elem>
<Elem>../../../../FreeRTOS-MPLAB_X-PIC32MZ/GenericRecorderLibSrc</Elem>
<Elem>../../FreeRTOS-Plus-Trace</Elem>
</sourceRootList> </sourceRootList>
<projectmakefile>Makefile</projectmakefile> <projectmakefile>Makefile</projectmakefile>
<confs> <confs>
@ -85,7 +89,7 @@
<targetPluginBoard></targetPluginBoard> <targetPluginBoard></targetPluginBoard>
<platformTool>PKOBSKDEPlatformTool</platformTool> <platformTool>PKOBSKDEPlatformTool</platformTool>
<languageToolchain>XC32</languageToolchain> <languageToolchain>XC32</languageToolchain>
<languageToolchainVersion>1.34</languageToolchainVersion> <languageToolchainVersion>1.40</languageToolchainVersion>
<platform>3</platform> <platform>3</platform>
</toolsSet> </toolsSet>
<compileType> <compileType>
@ -236,7 +240,6 @@
<property key="memories.programmemory.end" value="0x1d1fffff"/> <property key="memories.programmemory.end" value="0x1d1fffff"/>
<property key="memories.programmemory.start" value="0x1d000000"/> <property key="memories.programmemory.start" value="0x1d000000"/>
<property key="memories.userotp" value="true"/> <property key="memories.userotp" value="true"/>
<property key="poweroptions.powerenable" value="false"/>
<property key="programoptions.donoteraseauxmem" value="false"/> <property key="programoptions.donoteraseauxmem" value="false"/>
<property key="programoptions.eraseb4program" value="true"/> <property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.preservedataflash" value="false"/> <property key="programoptions.preservedataflash" value="false"/>
@ -246,8 +249,903 @@
<property key="programoptions.preserveprogramrange.start" value="0x1d000000"/> <property key="programoptions.preserveprogramrange.start" value="0x1d000000"/>
<property key="programoptions.usehighvoltageonmclr" value="false"/> <property key="programoptions.usehighvoltageonmclr" value="false"/>
<property key="programoptions.uselvpprogramming" value="false"/> <property key="programoptions.uselvpprogramming" value="false"/>
<property key="voltagevalue" value="3.25"/>
</PKOBSKDEPlatformTool> </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> </conf>
</confs> </confs>
</configurationDescriptor> </configurationDescriptor>

View File

@ -1,11 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configurationDescriptor version="62"> <configurationDescriptor version="62">
<projectmakefile>Makefile</projectmakefile> <projectmakefile>Makefile</projectmakefile>
<defaultConf>0</defaultConf> <defaultConf>2</defaultConf>
<confs> <confs>
<conf name="PIC32MZ2048_SK" type="2"> <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> <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.34\bin</languageToolchainDir> <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"> <mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1> <placeholder1>place holder 1</placeholder1>
<placeholder2>place holder 2</placeholder2> <placeholder2>place holder 2</placeholder2>

View File

@ -4,6 +4,17 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <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"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <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> <file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c</file>
</group> </group>
</open-files> </open-files>

View File

@ -70,6 +70,7 @@
#include <xc.h> #include <xc.h>
#include <sys/asm.h> #include <sys/asm.h>
#include "FreeRTOSConfig.h"
.set nomips16 .set nomips16
.set noreorder .set noreorder
@ -78,6 +79,44 @@
.global vRegTest1 .global vRegTest1
.global vRegTest2 .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 noreorder
.set noat .set noat
.ent error_loop .ent error_loop
@ -136,178 +175,101 @@ vRegTest1:
addiu $22, $0, 0x136 addiu $22, $0, 0x136
mtlo $22, $ac3 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: vRegTest1Loop:
/* Check each register maintains the value assigned to it for the lifetime portREG_TEST $22, $1, 0x11
of the task. */ portREG_TEST $22, $2, 0x12
addiu $22, $0, 0x00 portREG_TEST $22, $3, 0x13
addiu $22, $1, -0x11 /* Do not test r4 as we are using it as a loop counter */
beq $22, $0, .+16 portREG_TEST $22, $5, 0x15
nop portREG_TEST $22, $6, 0x16
/* The register value was not that expected. Jump to the error loop so the portREG_TEST $22, $7, 0x17
cycle counter stops incrementing. */ portREG_TEST $22, $8, 0x18
b error_loop portREG_TEST $22, $9, 0x19
nop portREG_TEST $22, $10, 0x110
portREG_TEST $22, $11, 0x111
addiu $22, $0, 0x00 portREG_TEST $22, $12, 0x112
addiu $22, $2, -0x12 portREG_TEST $22, $13, 0x113
beq $22, $0, .+16 portREG_TEST $22, $14, 0x114
nop portREG_TEST $22, $15, 0x115
b error_loop portREG_TEST $22, $16, 0x116
nop portREG_TEST $22, $17, 0x117
portREG_TEST $22, $18, 0x118
addiu $22, $0, 0x00 portREG_TEST $22, $19, 0x119
addiu $22, $3, -0x13 portREG_TEST $22, $20, 0x120
beq $22, $0, .+16 portREG_TEST $22, $21, 0x121
nop /* Do not test r22, used as a helper */
b error_loop portREG_TEST $22, $23, 0x123
nop portREG_TEST $22, $24, 0x124
portREG_TEST $22, $25, 0x125
addiu $22, $0, 0x00 portREG_TEST $22, $30, 0x130
addiu $22, $5, -0x15
beq $22, $0, .+16
nop
b error_loop
nop
addiu $22, $0, 0x00
addiu $22, $6, -0x16
beq $22, $0, .+16
nop
b error_loop
nop
addiu $22, $0, 0x00
addiu $22, $7, -0x17
beq $22, $0, .+16
nop
b error_loop
nop
addiu $22, $0, 0x00
addiu $22, $8, -0x18
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 mfhi $22, $ac1
addiu $22, $22, -0x131 addiu $22, $22, -0x131
@ -351,6 +313,42 @@ vRegTest1Loop:
b error_loop b error_loop
nop 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 /* 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 this task is still running without error, then loop back to do it all
again. The address of the loop counter is in $4. */ again. The address of the loop counter is in $4. */
@ -362,7 +360,7 @@ vRegTest1Loop:
.end vRegTest1 .end vRegTest1
/************************************************************************/
.set noreorder .set noreorder
.set noat .set noat
.ent vRegTest2 .ent vRegTest2
@ -406,174 +404,101 @@ vRegTest2:
addiu $22, $0, 0x236 addiu $22, $0, 0x236
mtlo $22, $ac3 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: vRegTest2Loop:
addiu $22, $0, 0x00 portREG_TEST $22, $1, 0x21
addiu $22, $1, -0x21 portREG_TEST $22, $2, 0x22
beq $22, $0, .+16 portREG_TEST $22, $3, 0x23
nop /* Do not test r4 as we are using it as a loop counter */
b error_loop portREG_TEST $22, $5, 0x25
nop portREG_TEST $22, $6, 0x26
portREG_TEST $22, $7, 0x27
addiu $22, $0, 0x00 portREG_TEST $22, $8, 0x28
addiu $22, $2, -0x22 portREG_TEST $22, $9, 0x29
beq $22, $0, .+16 portREG_TEST $22, $10, 0x210
nop portREG_TEST $22, $11, 0x211
b error_loop portREG_TEST $22, $12, 0x212
nop portREG_TEST $22, $13, 0x213
portREG_TEST $22, $14, 0x214
addiu $22, $0, 0x00 portREG_TEST $22, $15, 0x215
addiu $22, $3, -0x23 portREG_TEST $22, $16, 0x216
beq $22, $0, .+16 portREG_TEST $22, $17, 0x217
nop portREG_TEST $22, $18, 0x218
b error_loop portREG_TEST $22, $19, 0x219
nop portREG_TEST $22, $20, 0x220
portREG_TEST $22, $21, 0x221
addiu $22, $0, 0x00 /* Do not test r22, used as a helper */
addiu $22, $5, -0x25 portREG_TEST $22, $23, 0x223
beq $22, $0, .+16 portREG_TEST $22, $24, 0x224
nop portREG_TEST $22, $25, 0x225
b error_loop portREG_TEST $22, $30, 0x230
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
mfhi $22, $ac1 mfhi $22, $ac1
addiu $22, $22, -0x231 addiu $22, $22, -0x231
@ -617,6 +542,42 @@ vRegTest2Loop:
b error_loop b error_loop
nop 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 /* 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 this task is still running without error, then loop back to do it all
again. The address of the loop counter is in $4. */ again. The address of the loop counter is in $4. */

View File

@ -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;
}

View File

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

View File

@ -93,18 +93,31 @@
#include "ConfigPerformance.h" #include "ConfigPerformance.h"
/* Core configuration fuse settings */ /* Core configuration fuse settings */
#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF #if defined(__32MZ2048ECM144) || defined(__32MZ2048ECH144)
#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC #pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF
#pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF #pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC
#pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL #pragma config OSCIOFNC = OFF, FCKSM = CSECMD, FWDTEN = OFF, FDMTEN = OFF
#pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31 #pragma config DMTINTV = WIN_127_128, WDTSPGM = STOP, WINDIS= NORMAL
#pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC #pragma config WDTPS = PS1048576, FWDTWINSZ = WINSZ_25, DMTCNT = DMT31
#pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ, UPLLEN = OFF #pragma config FPLLIDIV = DIV_3, FPLLRNG = RANGE_13_26_MHZ, FPLLICLK = PLL_POSC
#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED #pragma config FPLLMULT = MUL_50, FPLLODIV = DIV_2, UPLLFSEL = FREQ_12MHZ, UPLLEN = OFF
#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON #pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED
#pragma config CP = OFF #pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON
#pragma config_alt FWDTEN=OFF #pragma config CP = OFF
#pragma config_alt USERID = 0x1234u #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,9 +287,11 @@ static enum {
EXCEP_CpU, /* coprocessor unusable */ EXCEP_CpU, /* coprocessor unusable */
EXCEP_Overflow, /* arithmetic overflow */ EXCEP_Overflow, /* arithmetic overflow */
EXCEP_Trap, /* trap (possible divide by zero) */ EXCEP_Trap, /* trap (possible divide by zero) */
EXCEP_FPE = 15, /* floating point exception */
EXCEP_IS1 = 16, /* implementation specfic 1 */ EXCEP_IS1 = 16, /* implementation specfic 1 */
EXCEP_CEU, /* CorExtend Unuseable */ EXCEP_CEU, /* CorExtend Unuseable */
EXCEP_C2E /* coprocessor 2 */ EXCEP_C2E, /* coprocessor 2 */
EXCEP_DSPDis = 26 /* DSP module disabled */
} _excep_code; } _excep_code;
static unsigned long _epc_code; static unsigned long _epc_code;
@ -289,6 +304,9 @@ static unsigned long _excep_addr;
for( ;; ) for( ;; )
{ {
/* prevent compiler warning */
(void) _excep_code;
/* Examine _excep_code to identify the type of exception. Examine /* Examine _excep_code to identify the type of exception. Examine
_excep_addr to find the address that caused the exception */ _excep_addr to find the address that caused the exception */
LATHSET = 0x0007; LATHSET = 0x0007;
@ -297,4 +315,16 @@ static unsigned long _excep_addr;
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( ;; );
}

View File

@ -143,6 +143,7 @@
#include "QueueSet.h" #include "QueueSet.h"
#include "recmutex.h" #include "recmutex.h"
#include "EventGroupsDemo.h" #include "EventGroupsDemo.h"
#include "flop_mz.h"
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -163,6 +164,7 @@ in ticks using the portTICK_PERIOD_MS constant. */
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainQUEUE_OVERWRITE_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. */ /* The LED controlled by the 'check' software timer. */
#define mainCHECK_LED ( 2 ) #define mainCHECK_LED ( 2 )
@ -242,6 +244,7 @@ TimerHandle_t xTimer = NULL;
vStartQueueSetTasks(); vStartQueueSetTasks();
vStartRecursiveMutexTasks(); vStartRecursiveMutexTasks();
vStartEventGroupTasks(); vStartEventGroupTasks();
vStartMathTasks( mainFLOP_TASK_PRIORITY );
/* Create the tasks defined within this file. */ /* Create the tasks defined within this file. */
xTaskCreate( prvRegTestTask1, /* The function that implements the task. */ xTaskCreate( prvRegTestTask1, /* The function that implements the task. */
@ -294,6 +297,11 @@ extern void vRegTest1( volatile unsigned long * );
/* Avoid compiler warnings. */ /* Avoid compiler warnings. */
( void ) pvParameters; ( 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, /* Pass the address of the RegTest1 loop counter into the test function,
which is necessarily implemented in assembler. */ which is necessarily implemented in assembler. */
vRegTest1( &ulRegTest1Cycles ); vRegTest1( &ulRegTest1Cycles );
@ -310,6 +318,11 @@ extern void vRegTest2( volatile unsigned long * );
/* Avoid compiler warnings. */ /* Avoid compiler warnings. */
( void ) pvParameters; ( 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, /* Pass the address of the RegTest2 loop counter into the test function,
which is necessarily implemented in assembler. */ which is necessarily implemented in assembler. */
vRegTest2( &ulRegTest2Cycles ); vRegTest2( &ulRegTest2Cycles );
@ -393,6 +406,10 @@ extern unsigned long ulHighFrequencyTimerInterrupts;
{ {
ulErrorOccurred |= ( 0x01UL << 13UL ); ulErrorOccurred |= ( 0x01UL << 13UL );
} }
else if( xAreMathsTaskStillRunning() != pdTRUE )
{
ulErrorOccurred |= ( 0x01UL << 15UL );
}
/* Ensure the expected number of high frequency interrupts have occurred. */ /* Ensure the expected number of high frequency interrupts have occurred. */
if( ulLastHighFrequencyTimerInterrupts != 0 ) if( ulLastHighFrequencyTimerInterrupts != 0 )

View File

@ -319,7 +319,7 @@ const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );
sci1_txdone = FALSE; sci1_txdone = FALSE;
/* Don't send the string unless the previous string has been sent. */ /* 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 /* Ensure the calling task's notification state is not already
pending. */ pending. */

View File

@ -330,7 +330,7 @@ const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );
sci1_txdone = FALSE; sci1_txdone = FALSE;
/* Don't send the string unless the previous string has been sent. */ /* 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 /* Ensure the calling task's notification state is not already
pending. */ pending. */

View File

@ -330,7 +330,7 @@ const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );
sci1_txdone = FALSE; sci1_txdone = FALSE;
/* Don't send the string unless the previous string has been sent. */ /* 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 /* Ensure the calling task's notification state is not already
pending. */ pending. */

View File

@ -46,6 +46,7 @@
<option id="com.renesas.cdt.core.Compiler.option.deviceShortName.339321196" name="DeviceShortName" superClass="com.renesas.cdt.core.Compiler.option.deviceShortName" value="R5F571MLCxFC" valueType="string"/> <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"> <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;${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}&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/Full_Demo/Standard_Demo_Tasks/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/cg_src}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/cg_src}&quot;"/>
@ -120,7 +121,7 @@
</toolChain> </toolChain>
</folderInfo> </folderInfo>
<sourceEntries> <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> </sourceEntries>
</configuration> </configuration>
</storageModule> </storageModule>

View File

@ -30,11 +30,26 @@
<type>2</type> <type>2</type>
<locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI> <locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI>
</link> </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> <link>
<name>src/Full_Demo/Standard_Demo_Tasks</name> <name>src/Full_Demo/Standard_Demo_Tasks</name>
<type>2</type> <type>2</type>
<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI> <locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI>
</link> </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> <link>
<name>src/Full_Demo/Standard_Demo_Tasks/include</name> <name>src/Full_Demo/Standard_Demo_Tasks/include</name>
<type>2</type> <type>2</type>
@ -43,7 +58,7 @@
</linkedResources> </linkedResources>
<filteredResources> <filteredResources>
<filter> <filter>
<id>1442924121510</id> <id>1444769735116</id>
<name></name> <name></name>
<type>10</type> <type>10</type>
<matcher> <matcher>
@ -51,6 +66,69 @@
<arguments>1.0-name-matches-false-false-RTOSDemo</arguments> <arguments>1.0-name-matches-false-false-RTOSDemo</arguments>
</matcher> </matcher>
</filter> </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> <filter>
<id>1442756186478</id> <id>1442756186478</id>
<name>src/FreeRTOS_Source</name> <name>src/FreeRTOS_Source</name>

View File

@ -3,7 +3,7 @@
<configuration id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.363159113" name="HardwareDebug"> <configuration id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.363159113" name="HardwareDebug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <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.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

View File

@ -9,7 +9,7 @@
<stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/> <stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>
<intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/> <intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>
<stringAttribute key="com.renesas.cdt.core.runCommands" value=""/> <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.setResume" value="true"/>
<booleanAttribute key="com.renesas.cdt.core.setStopAt" value="true"/> <booleanAttribute key="com.renesas.cdt.core.setStopAt" value="true"/>
<booleanAttribute key="com.renesas.cdt.core.startServer" 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"/> <booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>
<intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/> <intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>
<stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" 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.hot.plug" value="false"/>
<booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/> <booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/>
<booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" 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"/> <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.doHalt" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" 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.imageOffset" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/> <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.setResume" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" 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.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=""/> <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.useFileForImage" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/> <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>

View File

@ -29,7 +29,7 @@
</option> </option>
<option> <option>
<name>CRunToEnable</name> <name>CRunToEnable</name>
<state>0</state> <state>1</state>
</option> </option>
<option> <option>
<name>CRunToName</name> <name>CRunToName</name>

View File

@ -76,20 +76,20 @@
<option> <option>
<name>GenLibInFormatter</name> <name>GenLibInFormatter</name>
<version>1</version> <version>1</version>
<state>1</state> <state>0</state>
</option> </option>
<option> <option>
<name>GenLibInFormatterDescription</name> <name>GenLibInFormatterDescription</name>
<state>Full formatting.</state> <state>Automatic choice of formatter.</state>
</option> </option>
<option> <option>
<name>GenLibOutFormatter</name> <name>GenLibOutFormatter</name>
<version>1</version> <version>1</version>
<state>1</state> <state>0</state>
</option> </option>
<option> <option>
<name>GenLibOutFormatterDescription</name> <name>GenLibOutFormatterDescription</name>
<state>Full formatting.</state> <state>Automatic choice of formatter.</state>
</option> </option>
<option> <option>
<name>GeneralEnableMisra</name> <name>GeneralEnableMisra</name>
@ -255,7 +255,7 @@
</option> </option>
<option> <option>
<name>CCDefines</name> <name>CCDefines</name>
<state></state> <state>__RX</state>
</option> </option>
<option> <option>
<name>CCPreprocFile</name> <name>CCPreprocFile</name>
@ -329,6 +329,7 @@
<state>$PROJ_DIR$\..\..\Source\portable\IAR\RXv2</state> <state>$PROJ_DIR$\..\..\Source\portable\IAR\RXv2</state>
<state>$PROJ_DIR$\..\Common\include</state> <state>$PROJ_DIR$\..\Common\include</state>
<state>$PROJ_DIR$\src\Full_Demo</state> <state>$PROJ_DIR$\src\Full_Demo</state>
<state>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI</state>
</option> </option>
<option> <option>
<name>CCStdIncCheck</name> <name>CCStdIncCheck</name>
@ -1978,6 +1979,12 @@
</group> </group>
<group> <group>
<name>Full_Demo</name> <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> <group>
<name>Standard_Demo_Tasks</name> <name>Standard_Demo_Tasks</name>
<file> <file>
@ -2035,6 +2042,12 @@
<file> <file>
<name>$PROJ_DIR$\src\Full_Demo\RegTest_IAR.s</name> <name>$PROJ_DIR$\src\Full_Demo\RegTest_IAR.s</name>
</file> </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> </group>
<file> <file>
<name>$PROJ_DIR$\src\FreeRTOSConfig.h</name> <name>$PROJ_DIR$\src\FreeRTOSConfig.h</name>
@ -2042,6 +2055,9 @@
<file> <file>
<name>$PROJ_DIR$\src\main.c</name> <name>$PROJ_DIR$\src\main.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\src\cg_src\r_cg_intprg_iar.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\src\rskrx71mdef.h</name> <name>$PROJ_DIR$\src\rskrx71mdef.h</name>
</file> </file>

View File

@ -4,9 +4,9 @@
<Desktop> <Desktop>
<Static> <Static>
<Debug-Log> <Debug-Log>
<ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>1622</ColumnWidth1>
</Debug-Log> <ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>
<Build> <Build>
<ColumnWidth0>20</ColumnWidth0> <ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>1216</ColumnWidth1> <ColumnWidth1>1216</ColumnWidth1>
@ -15,31 +15,31 @@
</Build> </Build>
<Workspace> <Workspace>
<ColumnWidths> <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> </Workspace>
<Disassembly> <Disassembly>
<col-names> <col-names>
<item>Disassembly</item>
<item>_I0</item>
</col-names> <item>Disassembly</item><item>_I0</item></col-names>
<col-widths> <col-widths>
<item>500</item>
<item>20</item>
</col-widths> <item>500</item><item>20</item></col-widths>
<DisasmHistory/> <DisasmHistory/>
<PreferedWindows> <PreferedWindows>
<Position>2</Position>
<ScreenPosX>0</ScreenPosX>
<ScreenPosY>0</ScreenPosY>
<Windows/>
</PreferedWindows> <Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
<ShowCodeCoverage>1</ShowCodeCoverage>
<ShowInstrProfiling>1</ShowInstrProfiling>
</Disassembly> <ShowCodeCoverage>1</ShowCodeCoverage><ShowInstrProfiling>1</ShowInstrProfiling></Disassembly>
<Register> <Register>
<PreferedWindows> <PreferedWindows>
<Position>2</Position> <Position>2</Position>
@ -48,9 +48,11 @@
<Windows/> <Windows/>
</PreferedWindows> </PreferedWindows>
</Register> </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> <Windows>
<Wnd1>
<Wnd3>
<Tabs> <Tabs>
<Tab> <Tab>
<Identity>TabID-6594-3339</Identity> <Identity>TabID-6594-3339</Identity>
@ -64,180 +66,34 @@
<Factory>Build</Factory> <Factory>Build</Factory>
<Session/> <Session/>
</Tab> </Tab>
</Tabs> <Tab><Identity>TabID-19467-29965</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
<SelectedTab>0</SelectedTab>
</Wnd1> <SelectedTab>0</SelectedTab></Wnd3><Wnd4>
<Wnd4>
<Tabs> <Tabs>
<Tab> <Tab>
<Identity>TabID-17343-3342</Identity> <Identity>TabID-17343-3342</Identity>
<TabName>Workspace</TabName> <TabName>Workspace</TabName>
<Factory>Workspace</Factory> <Factory>Workspace</Factory>
<Session> <Session>
<NodeDict>
<ExpandedNode>RTOSDemo</ExpandedNode> <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>
</NodeDict>
</Session>
</Tab> </Tab>
</Tabs> </Tabs>
<SelectedTab>0</SelectedTab>
</Wnd4> <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>
</Windows>
<Editor> <Editor>
<Pane>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\src\main.c</Filename>
<XPos>0</XPos> <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>
<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>
<Positions> <Positions>
<Top>
<Row0>
<Sizes>
<Toolbar-026E7B08>
<key>iaridepm.enu1</key>
</Toolbar-026E7B08> <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>
</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>
</Desktop> </Desktop>
</Project> </Project>

View File

@ -1,5 +1,5 @@
[DebugChecksum] [DebugChecksum]
Checksum=-126027898 Checksum=-1340739960
[CodeCoverage] [CodeCoverage]
Enabled=_ 0 Enabled=_ 0
[Stack] [Stack]

View File

@ -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> </Workspace>
<Build> <Build>
@ -25,7 +25,7 @@
<ColumnWidth0>20</ColumnWidth0> <ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>1622</ColumnWidth1> <ColumnWidth1>1622</ColumnWidth1>
</Debug-Log> </Debug-Log>
</Static> <Find-in-Files><ColumnWidth0>497</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>746</ColumnWidth2><ColumnWidth3>331</ColumnWidth3></Find-in-Files></Static>
<Windows> <Windows>
@ -37,7 +37,7 @@
<Factory>Workspace</Factory> <Factory>Workspace</Factory>
<Session> <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> </Tab>
</Tabs> </Tabs>
@ -55,7 +55,7 @@
<Factory>Debug-Log</Factory> <Factory>Debug-Log</Factory>
<Session/> <Session/>
</Tab> </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> <SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor> <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> <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> </Desktop>
</Workspace> </Workspace>

View File

@ -1,2 +1,2 @@
[MainWindow] [MainWindow]
WindowPlacement=_ 519 0 1619 872 3 WindowPlacement=_ 250 0 1350 872 3

View File

@ -84,24 +84,14 @@
* *
* The Queue Send Task: * The Queue Send Task:
* The queue send task is implemented by the prvQueueSendTask() function in * The queue send task is implemented by the prvQueueSendTask() function in
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly * this file. It sends the value 100 to the queue every 200 milliseconds.
* 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.
* *
* The Queue Receive Task: * The Queue Receive Task:
* The queue receive task is implemented by the prvQueueReceiveTask() function * The queue receive task is implemented by the prvQueueReceiveTask() function
* in this file. prvQueueReceiveTask() sits in a loop where it repeatedly * in this file. It blocks on the queue to wait for data to arrive from the
* blocks on attempts to read data from the queue that was created within * queue send task - toggling the LED each time it receives the value 100. The
* main_blinky(). When data is received, the task checks the value of the * queue send task writes to the queue every 200ms, so the LED should toggle
* data, and if the value equals the expected 100, toggles an LED. The 'block * every 200ms.
* 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.
*/ */
/* Kernel includes. */ /* Kernel includes. */
@ -120,7 +110,7 @@
/* The rate at which data is sent to the queue. The 200ms value is converted /* The rate at which data is sent to the queue. The 200ms value is converted
to ticks using the portTICK_PERIOD_MS constant. */ 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 /* 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 will remove items as they are added, meaning the send task should always find

View File

@ -95,11 +95,11 @@
#define configUSE_PREEMPTION 1 #define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 1 #define configUSE_IDLE_HOOK 1
#define configUSE_TICK_HOOK 1 #define configUSE_TICK_HOOK 1
#define configCPU_CLOCK_HZ ( 120000000UL ) /*_RB_ guess*/ #define configCPU_CLOCK_HZ ( 120000000UL )
#define configPERIPHERAL_CLOCK_HZ ( 60000000UL ) /*_RB_ guess*/ #define configPERIPHERAL_CLOCK_HZ ( 60000000UL )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 40 * 1024 ) ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 12 ) #define configMAX_TASK_NAME_LEN ( 12 )
#define configUSE_TRACE_FACILITY 1 #define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0
@ -117,6 +117,12 @@
#define configMAX_PRIORITIES ( 7 ) #define configMAX_PRIORITIES ( 7 )
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) #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. */ /* Software timer definitions. */
#define configUSE_TIMERS 1 #define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) #define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
@ -152,9 +158,14 @@ to exclude the API function. */
#define INCLUDE_eTaskGetState 1 #define INCLUDE_eTaskGetState 1
#define INCLUDE_xTimerPendFunctionCall 1 #define INCLUDE_xTimerPendFunctionCall 1
void vAssertCalled( void );
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } #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 /* Override some of the priorities set in the common demo tasks. This is
required to ensure flase positive timing errors are not reported. */ required to ensure flase positive timing errors are not reported. */
#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) #define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 )
@ -162,28 +173,4 @@ required to ensure flase positive timing errors are not reported. */
#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) #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 */ #endif /* FREERTOS_CONFIG_H */

View File

@ -71,8 +71,8 @@
#define INT_QUEUE_TIMER_H #define INT_QUEUE_TIMER_H
void vInitialiseTimerForIntQueueTest( void ); void vInitialiseTimerForIntQueueTest( void );
portBASE_TYPE xTimer0Handler( void ); BaseType_t xTimer0Handler( void );
portBASE_TYPE xTimer1Handler( void ); BaseType_t xTimer1Handler( void );
#endif #endif

View File

@ -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 * starts the scheduler. The web documentation provides more details of the
* standard demo application tasks, which provide no particular functionality, * standard demo application tasks, which provide no particular functionality,
* but do provide a good example of how to use the FreeRTOS API. * 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 * In addition to the standard demo tasks, the following tasks and tests are
* defined and/or created within this file: * 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 * "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 * 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 * 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. * error in the context switching mechanism.
* *
* "Check" task - The check task period is initially set to three seconds. The * "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, * task checks that all the standard demo tasks are not only still executing,
* are not only still executing, but are executing without reporting any errors. * but are executing without reporting any errors. If the check task discovers
* If the check task discovers that a task has either stalled, or reported an * that a task has either stalled, or reported an error, then it changes its own
* error, then it changes its own execution period from the initial three * execution period from the initial three seconds, to just 200ms. The check
* seconds, to just 200ms. The check task also toggles an LED each time it is * task also toggles an LED on each iteration of its loop. This provides a
* called. This provides a visual indication of the system status: If the LED * visual indication of the system status: If the LED toggles every three
* toggles every three seconds, then no issues have been discovered. If the LED * seconds, then no issues have been discovered. If the LED toggles every
* toggles every 200ms, then an issue has been discovered with at least one * 200ms, then an issue has been discovered with at least one task.
* task.
*/ */
/* Standard includes. */ /* Standard includes. */
#include <rskrx71mdef.h>
#include <stdio.h> #include <stdio.h>
/* Kernel includes. */ /* Kernel includes. */
@ -139,6 +143,7 @@
#include "IntSemTest.h" #include "IntSemTest.h"
/* Renesas includes. */ /* Renesas includes. */
#include <rskrx71mdef.h>
#include "r_cg_macrodriver.h" #include "r_cg_macrodriver.h"
#include "r_cg_userdefine.h" #include "r_cg_userdefine.h"
@ -148,25 +153,21 @@
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3UL ) #define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3UL )
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainUART_COMMAND_CONSOLE_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3UL ) #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 mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
#define mainQUEUE_OVERWRITE_PRIORITY ( tskIDLE_PRIORITY ) #define mainQUEUE_OVERWRITE_PRIORITY ( tskIDLE_PRIORITY )
/* The priority used by the UART command console task. */ /* The priority used by the UART command console task. */
#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( configMAX_PRIORITIES - 2 ) #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 /* 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 have been reported by any of the standard demo tasks. ms are converted to the
equivalent in ticks using the portTICK_PERIOD_MS constant. */ 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 /* 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 reported in one of the standard demo tasks. ms are converted to the equivalent
in ticks using the portTICK_PERIOD_MS constant. */ 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 /* Parameters that are passed into the register check tasks solely for the
purpose of ensuring parameters are passed into tasks correctly. */ purpose of ensuring parameters are passed into tasks correctly. */
@ -212,6 +213,17 @@ void vRegTest2Implementation( void );
*/ */
static void prvPseudoRandomiser( void *pvParameters ); 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 /* The following two variables are used to communicate the status of the
@ -220,9 +232,6 @@ then the register check tasks have not discovered any errors. If a variable
stops incrementing, then an error has been found. */ stops incrementing, then an error has been found. */
volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL; 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 ) void main_full( void )
@ -250,7 +259,14 @@ void main_full( void )
xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );
/* Create the task that just adds a little random behaviour. */ /* 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 /* Create the task that performs the 'check' functionality, as described at
the top of this file. */ the top of this file. */
@ -404,7 +420,6 @@ unsigned long ulErrorFound = pdFALSE;
gone wrong (it might just be that the loop back connector required gone wrong (it might just be that the loop back connector required
by the comtest tasks has not been fitted). */ by the comtest tasks has not been fitted). */
xDelayPeriod = mainERROR_CHECK_TASK_PERIOD; xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;
pcStatusMessage = "Error found in at least one task.";
} }
} }
} }
@ -412,7 +427,7 @@ unsigned long ulErrorFound = pdFALSE;
static void prvPseudoRandomiser( void *pvParameters ) 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; volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;
/* This task does nothing other than ensure there is a little bit of /* This task does nothing other than ensure there is a little bit of

View File

@ -16,6 +16,7 @@
/* Date Generated: 18/12/2014 */ /* Date Generated: 18/12/2014 */
/************************************************************************/ /************************************************************************/
#include "interrupt_handlers.h" #include "interrupt_handlers.h"
#include "iodefine.h"
// Exception(Supervisor Instruction) // Exception(Supervisor Instruction)
void INT_Excep_SuperVisorInst(void){/* brk(); */} void INT_Excep_SuperVisorInst(void){/* brk(); */}
@ -328,7 +329,20 @@ void INT_Excep_ICU_GROUPBE0(void){ }
//;0x01B4 Reserved //;0x01B4 Reserved
//;0x01B8 GROUPBL0 //;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 //;0x01BC GROUPBL1
void INT_Excep_ICU_GROUPBL1(void){ } void INT_Excep_ICU_GROUPBL1(void){ }

View File

@ -25,6 +25,8 @@ extern void vTickISR( void );
extern void vSoftwareInterruptISR( void ); extern void vSoftwareInterruptISR( void );
extern void vIntQTimerISR0( void ); extern void vIntQTimerISR0( void );
extern void vIntQTimerISR1( void ); extern void vIntQTimerISR1( void );
void r_sci7_transmit_interrupt(void);
void r_sci7_receive_interrupt(void);
#define EXVECT_SECT __attribute__ ((section (".exvectors"))) #define EXVECT_SECT __attribute__ ((section (".exvectors")))
@ -365,10 +367,10 @@ const fp RelocatableVectors[] RVECT_SECT = {
(fp)INT_Excep_PDC_PCDFI, (fp)INT_Excep_PDC_PCDFI,
//;0x0188 RXI7 //;0x0188 RXI7
(fp)INT_Excep_SCI7_RXI7, (fp)r_sci7_receive_interrupt,
//;0x018C TXI7 //;0x018C TXI7
(fp)INT_Excep_SCI7_TXI7, (fp)r_sci7_transmit_interrupt,
//;0x0190 RXIF8 //;0x0190 RXIF8
(fp)INT_Excep_SCIFA8_RXIF8, (fp)INT_Excep_SCIFA8_RXIF8,

View File

@ -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 */

View File

@ -33,6 +33,7 @@ Includes
#ifdef __ICCRX__ #ifdef __ICCRX__
#include <iorx71m.h> #include <iorx71m.h>
#include <machine.h> #include <machine.h>
#include <stdint.h>
#endif #endif
#ifdef __GNUC__ #ifdef __GNUC__

View File

@ -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 */

View File

@ -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 */

View File

@ -36,6 +36,16 @@
Pragma directive Pragma directive
***********************************************************************************************************************/ ***********************************************************************************************************************/
/* Start user code for pragma. Do not edit comment generated here */ /* 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 */ /* End user code. Do not edit comment generated here */
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -45,7 +55,10 @@ Includes
#include "r_cg_sci.h" #include "r_cg_sci.h"
/* Start user code for include. Do not edit comment generated here */ /* Start user code for include. Do not edit comment generated here */
#include "rskrx71mdef.h" #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 */ /* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h" #include "r_cg_userdefine.h"
@ -65,7 +78,21 @@ uint8_t g_rx_char;
/* Flag used to control transmission to PC terminal */ /* Flag used to control transmission to PC terminal */
volatile uint8_t g_tx_flag = FALSE; 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; static volatile uint8_t sci7_txdone;
/* End user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */
@ -156,7 +183,20 @@ void r_sci7_receiveerror_interrupt(void)
static void r_sci7_callback_transmitend(void) static void r_sci7_callback_transmitend(void)
{ {
/* Start user code. Do not edit comment generated here */ /* 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; 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 */ /* End user code. Do not edit comment generated here */
} }
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -168,30 +208,30 @@ static void r_sci7_callback_transmitend(void)
static void r_sci7_callback_receiveend(void) static void r_sci7_callback_receiveend(void)
{ {
/* Start user code. Do not edit comment generated here */ /* Start user code. Do not edit comment generated here */
/* Check the contents of g_rx_char */ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
if ('z' == g_rx_char)
{
/* Stop the timer used to control transmission to PC terminal*/
// R_CMT1_Stop();
/* Turn off LED0 and turn on LED1 to indicate serial transmission configASSERT( xRxQueue );
inactive */
LED0 = LED_OFF;
LED1 = LED_ON;
}
else
{
/* Start the timer used to control transmission to PC terminal*/
//_RB_ R_CMT1_Start();
/* Turn on LED0 and turn off LED1 to indicate serial transmission /* Transmitting generates an interrupt for each character, which consumes
active */ CPU time, and can cause standard demo RTOS tasks that monitor their own
LED0 = LED_ON; performance to fail asserts - so don't receive new CLI commands if a
LED1 = LED_OFF; 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 */ /* Set up SCI7 receive buffer again */
R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1); 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 */ /* End user code. Do not edit comment generated here */
} }
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -237,5 +277,91 @@ MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
* End of function R_SCI7_AsyncTransmit * 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 */ /* End user code. Do not edit comment generated here */

View File

@ -144,6 +144,7 @@ int main( void )
} }
#endif #endif
/* Should never get reached. */
return 0; return 0;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -205,6 +206,7 @@ volatile size_t xFreeHeapSpace;
void vApplicationTickHook( void ) 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 #if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0
{ {
extern void vFullDemoTickHook( void ); extern void vFullDemoTickHook( void );
@ -216,7 +218,9 @@ void vApplicationTickHook( void )
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* The RX port uses this callback function to configure its tick interrupt. /* 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 ) void vApplicationSetupTimerInterrupt( void )
{ {
const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL; const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;

View File

@ -41,6 +41,7 @@
<option id="com.renesas.cdt.renesas.Compiler.option.deviceShortName.2099068857" name="DeviceShortName" superClass="com.renesas.cdt.renesas.Compiler.option.deviceShortName" value="R5F571MLCxFC" valueType="string"/> <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"> <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;${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/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/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/Renesas/RX600v2}&quot;"/> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/Renesas/RX600v2}&quot;"/>

View File

@ -30,11 +30,26 @@
<type>2</type> <type>2</type>
<locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI> <locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI>
</link> </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> <link>
<name>src/Full_Demo/Standard_Demo_Tasks</name> <name>src/Full_Demo/Standard_Demo_Tasks</name>
<type>2</type> <type>2</type>
<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI> <locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI>
</link> </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> <link>
<name>src/Full_Demo/Standard_Demo_Tasks/Include</name> <name>src/Full_Demo/Standard_Demo_Tasks/Include</name>
<type>2</type> <type>2</type>

View File

@ -8,7 +8,7 @@
<stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/> <stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>
<intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/> <intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>
<stringAttribute key="com.renesas.cdt.core.runCommands" value=""/> <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"/> <booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>
<stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F571ML"/> <stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F571ML"/>
<booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/> <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"/> <booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>
<intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/> <intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>
<stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" 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.hot.plug" value="false"/>
<booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/> <booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/>
<booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" 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"/> <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.doHalt" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" 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.imageOffset" value="0"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/> <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.setResume" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" 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.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"/> <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.useFileForImage" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/> <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>

View File

@ -84,24 +84,14 @@
* *
* The Queue Send Task: * The Queue Send Task:
* The queue send task is implemented by the prvQueueSendTask() function in * The queue send task is implemented by the prvQueueSendTask() function in
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly * this file. It sends the value 100 to the queue every 200 milliseconds.
* 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.
* *
* The Queue Receive Task: * The Queue Receive Task:
* The queue receive task is implemented by the prvQueueReceiveTask() function * The queue receive task is implemented by the prvQueueReceiveTask() function
* in this file. prvQueueReceiveTask() sits in a loop where it repeatedly * in this file. It blocks on the queue to wait for data to arrive from the
* blocks on attempts to read data from the queue that was created within * queue send task - toggling the LED each time it receives the value 100. The
* main_blinky(). When data is received, the task checks the value of the * queue send task writes to the queue every 200ms, so the LED should toggle
* data, and if the value equals the expected 100, toggles an LED. The 'block * every 200ms.
* 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.
*/ */
/* Kernel includes. */ /* Kernel includes. */
@ -120,7 +110,7 @@
/* The rate at which data is sent to the queue. The 200ms value is converted /* The rate at which data is sent to the queue. The 200ms value is converted
to ticks using the portTICK_PERIOD_MS constant. */ 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 /* 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 will remove items as they are added, meaning the send task should always find

View File

@ -88,11 +88,11 @@
#define configUSE_PREEMPTION 1 #define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 1 #define configUSE_IDLE_HOOK 1
#define configUSE_TICK_HOOK 1 #define configUSE_TICK_HOOK 1
#define configCPU_CLOCK_HZ ( 120000000UL ) /*_RB_ guess cg shows 240 and 120*/ #define configCPU_CLOCK_HZ ( 120000000UL )
#define configPERIPHERAL_CLOCK_HZ ( 60000000UL ) /*_RB_ guess*/ #define configPERIPHERAL_CLOCK_HZ ( 60000000UL )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 40 * 1024 ) ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 12 ) #define configMAX_TASK_NAME_LEN ( 12 )
#define configUSE_TRACE_FACILITY 1 #define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0
@ -110,6 +110,12 @@
#define configMAX_PRIORITIES ( 7 ) #define configMAX_PRIORITIES ( 7 )
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) #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. */ /* Software timer definitions. */
#define configUSE_TIMERS 1 #define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) #define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
@ -148,6 +154,12 @@ to exclude the API function. */
void vAssertCalled( void ); void vAssertCalled( void );
#define configASSERT( x ) if( ( x ) == 0 ) { brk(); taskDISABLE_INTERRUPTS(); for( ;; ); } #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 /* Override some of the priorities set in the common demo tasks. This is
required to ensure flase positive timing errors are not reported. */ required to ensure flase positive timing errors are not reported. */
#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) #define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 )
@ -155,28 +167,4 @@ required to ensure flase positive timing errors are not reported. */
#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) #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 */ #endif /* FREERTOS_CONFIG_H */

View File

@ -68,9 +68,9 @@
*/ */
/* /*
* This file contains the non-portable and therefore RX62N specific parts of * This file contains the non-portable and therefore RX specific parts of the
* the IntQueue standard demo task - namely the configuration of the timers * IntQueue standard demo task - namely the configuration of the timers that
* that generate the interrupts and the interrupt entry points. * generate the interrupts and the interrupt entry points.
*/ */
/* Scheduler includes. */ /* Scheduler includes. */
@ -92,6 +92,7 @@ void vInitialiseTimerForIntQueueTest( void )
/* Ensure interrupts do not start until full configuration is complete. */ /* Ensure interrupts do not start until full configuration is complete. */
portENTER_CRITICAL(); portENTER_CRITICAL();
{ {
/* Give write access. */
SYSTEM.PRCR.WORD = 0xa502; SYSTEM.PRCR.WORD = 0xa502;
/* Cascade two 8bit timer channels to generate the interrupts. /* Cascade two 8bit timer channels to generate the interrupts.
@ -130,9 +131,7 @@ void vInitialiseTimerForIntQueueTest( void )
TMR0.TCR.BIT.CMIEA = 1; TMR0.TCR.BIT.CMIEA = 1;
TMR2.TCR.BIT.CMIEA = 1; TMR2.TCR.BIT.CMIEA = 1;
/* Map TMR0 CMIA0 interrupt to vector slot B number 128 and set /* Set priority and enable interrupt. */
priority above the kernel's priority, but below the max syscall
priority. */
ICU.SLIBXR128.BYTE = 3; /* Three is TMR0 compare match A. */ ICU.SLIBXR128.BYTE = 3; /* Three is TMR0 compare match A. */
IPR( PERIB, INTB128 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; IPR( PERIB, INTB128 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;
IEN( PERIB, INTB128 ) = 1; IEN( PERIB, INTB128 ) = 1;

View File

@ -71,8 +71,8 @@
#define INT_QUEUE_TIMER_H #define INT_QUEUE_TIMER_H
void vInitialiseTimerForIntQueueTest( void ); void vInitialiseTimerForIntQueueTest( void );
portBASE_TYPE xTimer0Handler( void ); BaseType_t xTimer0Handler( void );
portBASE_TYPE xTimer1Handler( void ); BaseType_t xTimer1Handler( void );
#endif #endif

View File

@ -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 * starts the scheduler. The web documentation provides more details of the
* standard demo application tasks, which provide no particular functionality, * standard demo application tasks, which provide no particular functionality,
* but do provide a good example of how to use the FreeRTOS API. * 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 * In addition to the standard demo tasks, the following tasks and tests are
* defined and/or created within this file: * 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 * "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 * 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 * 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. * error in the context switching mechanism.
* *
* "Check" task - The check task period is initially set to three seconds. The * "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, * task checks that all the standard demo tasks are not only still executing,
* are not only still executing, but are executing without reporting any errors. * but are executing without reporting any errors. If the check task discovers
* If the check task discovers that a task has either stalled, or reported an * that a task has either stalled, or reported an error, then it changes its own
* error, then it changes its own execution period from the initial three * execution period from the initial three seconds, to just 200ms. The check
* seconds, to just 200ms. The check task also toggles an LED each time it is * task also toggles an LED on each iteration of its loop. This provides a
* called. This provides a visual indication of the system status: If the LED * visual indication of the system status: If the LED toggles every three
* toggles every three seconds, then no issues have been discovered. If the LED * seconds, then no issues have been discovered. If the LED toggles every
* toggles every 200ms, then an issue has been discovered with at least one * 200ms, then an issue has been discovered with at least one task.
* task.
*/ */
/* Standard includes. */ /* Standard includes. */
#include <rskrx71mdef.h>
#include <stdio.h> #include <stdio.h>
/* Kernel includes. */ /* Kernel includes. */
@ -139,6 +143,7 @@
#include "IntSemTest.h" #include "IntSemTest.h"
/* Renesas includes. */ /* Renesas includes. */
#include <rskrx71mdef.h>
#include "r_cg_macrodriver.h" #include "r_cg_macrodriver.h"
#include "r_cg_userdefine.h" #include "r_cg_userdefine.h"
@ -148,25 +153,21 @@
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3UL ) #define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3UL )
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainUART_COMMAND_CONSOLE_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3UL ) #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 mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
#define mainQUEUE_OVERWRITE_PRIORITY ( tskIDLE_PRIORITY ) #define mainQUEUE_OVERWRITE_PRIORITY ( tskIDLE_PRIORITY )
/* The priority used by the UART command console task. */ /* The priority used by the UART command console task. */
#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( configMAX_PRIORITIES - 2 ) #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 /* 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 have been reported by any of the standard demo tasks. ms are converted to the
equivalent in ticks using the portTICK_PERIOD_MS constant. */ 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 /* 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 reported in one of the standard demo tasks. ms are converted to the equivalent
in ticks using the portTICK_PERIOD_MS constant. */ 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 /* Parameters that are passed into the register check tasks solely for the
purpose of ensuring parameters are passed into tasks correctly. */ purpose of ensuring parameters are passed into tasks correctly. */
@ -212,6 +213,17 @@ static void prvRegTest2Implementation( void );
*/ */
static void prvPseudoRandomiser( void *pvParameters ); 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 /* The following two variables are used to communicate the status of the
@ -220,9 +232,6 @@ then the register check tasks have not discovered any errors. If a variable
stops incrementing, then an error has been found. */ stops incrementing, then an error has been found. */
volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL; 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 ) void main_full( void )
@ -250,7 +259,14 @@ void main_full( void )
xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );
/* Create the task that just adds a little random behaviour. */ /* 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 /* Create the task that performs the 'check' functionality, as described at
the top of this file. */ the top of this file. */
@ -404,7 +420,6 @@ unsigned long ulErrorFound = pdFALSE;
gone wrong (it might just be that the loop back connector required gone wrong (it might just be that the loop back connector required
by the comtest tasks has not been fitted). */ by the comtest tasks has not been fitted). */
xDelayPeriod = mainERROR_CHECK_TASK_PERIOD; xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;
pcStatusMessage = "Error found in at least one task.";
} }
} }
} }
@ -412,7 +427,7 @@ unsigned long ulErrorFound = pdFALSE;
static void prvPseudoRandomiser( void *pvParameters ) 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; volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;
/* This task does nothing other than ensure there is a little bit of /* This task does nothing other than ensure there is a little bit of

View File

@ -30,6 +30,16 @@
Pragma directive Pragma directive
***********************************************************************************************************************/ ***********************************************************************************************************************/
/* Start user code for pragma. Do not edit comment generated here */ /* 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 */ /* End user code. Do not edit comment generated here */
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -38,6 +48,11 @@ Includes
#include "r_cg_macrodriver.h" #include "r_cg_macrodriver.h"
#include "r_cg_sci.h" #include "r_cg_sci.h"
/* Start user code for include. Do not edit comment generated here */ /* 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 */ /* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h" #include "r_cg_userdefine.h"
@ -50,7 +65,6 @@ extern uint8_t * gp_sci7_rx_address; /* SCI7 receive buffer addre
extern uint16_t g_sci7_rx_count; /* SCI7 receive data number */ extern uint16_t g_sci7_rx_count; /* SCI7 receive data number */
extern uint16_t g_sci7_rx_length; /* SCI7 receive data length */ extern uint16_t g_sci7_rx_length; /* SCI7 receive data length */
/* Start user code for global. Do not edit comment generated here */ /* 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 */ /* Global used to receive a character from the PC terminal */
uint8_t g_rx_char; uint8_t g_rx_char;
@ -58,8 +72,21 @@ uint8_t g_rx_char;
/* Flag used to control transmission to PC terminal */ /* Flag used to control transmission to PC terminal */
volatile uint8_t g_tx_flag = FALSE; 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
static volatile uint8_t sci6_txdone; 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; static volatile uint8_t sci7_txdone;
/* End user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */
@ -98,7 +125,7 @@ static void r_sci7_transmit_interrupt(void)
***********************************************************************************************************************/ ***********************************************************************************************************************/
void r_sci7_transmitend_interrupt(void) void r_sci7_transmitend_interrupt(void)
{ {
/* Set TXD7 pin */ MPC.P90PFS.BYTE = 0x00U;
PORT9.PMR.BYTE &= 0xFEU; PORT9.PMR.BYTE &= 0xFEU;
SCI7.SCR.BIT.TIE = 0U; SCI7.SCR.BIT.TIE = 0U;
SCI7.SCR.BIT.TE = 0U; SCI7.SCR.BIT.TE = 0U;
@ -158,8 +185,20 @@ void r_sci7_receiveerror_interrupt(void)
static void r_sci7_callback_transmitend(void) static void r_sci7_callback_transmitend(void)
{ {
/* Start user code. Do not edit comment generated here */ /* 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; 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 */ /* End user code. Do not edit comment generated here */
} }
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -171,15 +210,30 @@ static void r_sci7_callback_transmitend(void)
static void r_sci7_callback_receiveend(void) static void r_sci7_callback_receiveend(void)
{ {
/* Start user code. Do not edit comment generated here */ /* Start user code. Do not edit comment generated here */
/* Check the contents of g_rx_char */ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
if (('c' == g_rx_char) || ('C' == g_rx_char))
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); 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 */ /* End user code. Do not edit comment generated here */
} }
/*********************************************************************************************************************** /***********************************************************************************************************************
@ -228,5 +282,91 @@ MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
* End of function R_SCI7_AsyncTransmit * 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 */ /* End user code. Do not edit comment generated here */

View File

@ -96,7 +96,7 @@
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo, /* 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. */ 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 @@ int main( void )
} }
#endif #endif
/* Should never get reached. */
return 0; return 0;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -202,6 +203,7 @@ volatile size_t xFreeHeapSpace;
void vApplicationTickHook( void ) 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 #if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0
{ {
extern void vFullDemoTickHook( void ); extern void vFullDemoTickHook( void );
@ -213,7 +215,9 @@ void vApplicationTickHook( void )
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* The RX port uses this callback function to configure its tick interrupt. /* 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 ) void vApplicationSetupTimerInterrupt( void )
{ {
const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL; const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;

View File

@ -819,6 +819,14 @@ V8 if desired. */
#define xList List_t #define xList List_t
#endif /* configENABLE_BACKWARD_COMPATIBILITY */ #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 #ifdef __cplusplus
} }
#endif #endif

View File

@ -86,28 +86,10 @@
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if( configCHECK_FOR_STACK_OVERFLOW == 0 ) #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 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 ) )
/* Only the current stack state is to be checked. */ /* 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? */ \ /* Is the currently saved stack pointer within the stack limit? */ \
if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \ 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. */ /* 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? */ \ /* Is the currently saved stack pointer within the stack limit? */ \
@ -137,17 +119,15 @@
#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) )
#define taskSECOND_CHECK_FOR_STACK_OVERFLOW() \ #define taskCHECK_FOR_STACK_OVERFLOW() \
{ \ { \
static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \
tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \
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 }; \
\ \
\ if( ( pulStack[ 0 ] != ulCheckValue ) || \
/* Has the extremity of the task stack ever been written over? */ \ ( pulStack[ 1 ] != ulCheckValue ) || \
if( memcmp( ( const void * ) pxCurrentTCB->pxStack, ( const void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \ ( pulStack[ 2 ] != ulCheckValue ) || \
( pulStack[ 3 ] != ulCheckValue ) ) \
{ \ { \
vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \
} \ } \
@ -158,7 +138,7 @@
#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) #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; \ int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \
static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ 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 ) */ #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 */ #endif /* STACK_MACROS_H */

View File

@ -1812,6 +1812,18 @@ void vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPri
*/ */
uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; 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 * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES
*----------------------------------------------------------*/ *----------------------------------------------------------*/

View File

@ -79,7 +79,6 @@
#include "string.h" #include "string.h"
/* Hardware specifics. */ /* Hardware specifics. */
#warning RX600v1 port included chip specific header file here.
#include <machine.h> #include <machine.h>
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View File

@ -72,6 +72,91 @@
#define portCONTEXT_SIZE 160 #define portCONTEXT_SIZE 160
#define portEPC_STACK_LOCATION 152 #define portEPC_STACK_LOCATION 152
#define portSTATUS_STACK_LOCATION 156 #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 .macro portSAVE_CONTEXT
@ -81,10 +166,37 @@
captured. */ captured. */
mfc0 k0, _CP0_CAUSE mfc0 k0, _CP0_CAUSE
addiu sp, sp, -portCONTEXT_SIZE 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 mfc0 k1, _CP0_STATUS
/* Also save s6 and s5 so they can be used. Any nesting interrupts should /* Also save s7, s6 and s5 so they can be used. Any nesting interrupts
maintain the values of these registers across the ISR. */ should maintain the values of these registers across the ISR. */
sw s7, 48(sp)
sw s6, 44(sp) sw s6, 44(sp)
sw s5, 40(sp) sw s5, 40(sp)
sw k1, portSTATUS_STACK_LOCATION(sp) sw k1, portSTATUS_STACK_LOCATION(sp)
@ -173,6 +285,29 @@
mflo s6, $ac0 mflo s6, $ac0
sw s6, 8(s5) 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. */ /* Update the task stack pointer value if nesting is zero. */
la s6, uxInterruptNesting la s6, uxInterruptNesting
lw s6, (s6) lw s6, (s6)
@ -199,8 +334,24 @@
la s6, uxSavedTaskStackPointer la s6, uxSavedTaskStackPointer
lw s5, (s6) 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. */ /* Restore the context. */
1: lw s6, 128(s5) lw s6, 128(s5)
mthi s6, $ac1 mthi s6, $ac1
lw s6, 124(s5) lw s6, 124(s5)
mtlo s6, $ac1 mtlo s6, $ac1
@ -227,6 +378,7 @@
/* s6 is loaded as it was used as a scratch register and therefore saved /* s6 is loaded as it was used as a scratch register and therefore saved
as part of the interrupt context. */ as part of the interrupt context. */
lw s7, 48(s5)
lw s6, 44(s5) lw s6, 44(s5)
lw v0, 52(s5) lw v0, 52(s5)
lw v1, 56(s5) lw v1, 56(s5)
@ -257,6 +409,21 @@
addiu k1, k1, -1 addiu k1, k1, -1
sw k1, 0(k0) sw k1, 0(k0)
#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
/* 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 k0, portSTATUS_STACK_LOCATION(s5)
lw k1, portEPC_STACK_LOCATION(s5) lw k1, portEPC_STACK_LOCATION(s5)
@ -264,8 +431,39 @@
restore s5 from the stack. */ restore s5 from the stack. */
add sp, zero, s5 add sp, zero, s5
lw s5, 40(sp) 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 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 k0, _CP0_STATUS
mtc0 k1, _CP0_EPC mtc0 k1, _CP0_EPC
ehb ehb

View File

@ -93,6 +93,8 @@
#define portIE_BIT ( 0x00000001 ) #define portIE_BIT ( 0x00000001 )
#define portEXL_BIT ( 0x00000002 ) #define portEXL_BIT ( 0x00000002 )
#define portMX_BIT ( 0x01000000 ) /* Allow access to DSP instructions. */ #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. */ /* Bits within the CAUSE register. */
#define portCORE_SW_0 ( 0x00000100 ) #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 EXL bit is set to ensure interrupts do not occur while the context of
the first task is being restored. */ 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 By default port.c generates its tick interrupt from TIMER1. The user can
@ -184,6 +195,12 @@ StackType_t xISRStack[ configISR_STACK_SIZE ] = { 0 };
the callers stack, as some functions seem to want to do this. */ the callers stack, as some functions seem to want to do this. */
const StackType_t * const xISRStackTop = &( xISRStack[ configISR_STACK_SIZE - 7 ] ); 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 @@ const StackType_t * const xISRStackTop = &( xISRStack[ configISR_STACK_SIZE - 7
*/ */
StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) 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--;
*pxTopOfStack = (StackType_t) 0xDEADBEEF; *pxTopOfStack = (StackType_t) 0xDEADBEEF;
@ -207,10 +225,10 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
pxTopOfStack--; pxTopOfStack--;
*pxTopOfStack = (StackType_t) pxCode; /* CP0_EPC */ *pxTopOfStack = (StackType_t) pxCode; /* CP0_EPC */
pxTopOfStack -= 7; /* Includes space for AC1 - AC3. */ pxTopOfStack--;
*pxTopOfStack = (StackType_t) 0x00000000; /* DSPControl */ *pxTopOfStack = (StackType_t) 0x00000000; /* DSPControl */
pxTopOfStack--; pxTopOfStack -= 7; /* Includes space for AC1 - AC3. */
*pxTopOfStack = (StackType_t) portTASK_RETURN_ADDRESS; /* ra */ *pxTopOfStack = (StackType_t) portTASK_RETURN_ADDRESS; /* ra */
pxTopOfStack -= 15; pxTopOfStack -= 15;
@ -218,6 +236,8 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
*pxTopOfStack = (StackType_t) pvParameters; /* Parameters to pass in. */ *pxTopOfStack = (StackType_t) pvParameters; /* Parameters to pass in. */
pxTopOfStack -= 15; pxTopOfStack -= 15;
*pxTopOfStack = (StackType_t) pdFALSE; /*by default disable FPU context save on parts with FPU */
return pxTopOfStack; return pxTopOfStack;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -361,6 +381,27 @@ void vPortClearInterruptMaskFromISR( UBaseType_t uxSavedStatusRegister )
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#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 */
/*-----------------------------------------------------------*/

View File

@ -77,10 +77,12 @@
.extern vTaskSwitchContext .extern vTaskSwitchContext
.extern vPortIncrementTick .extern vPortIncrementTick
.extern xISRStackTop .extern xISRStackTop
.extern ulTaskHasFPUContext
.global vPortStartFirstTask .global vPortStartFirstTask
.global vPortYieldISR .global vPortYieldISR
.global vPortTickInterruptHandler .global vPortTickInterruptHandler
.global vPortInitialiseFPSCR
/******************************************************************/ /******************************************************************/
@ -189,6 +191,279 @@ vPortStartFirstTask:
.ent vPortYieldISR .ent vPortYieldISR
vPortYieldISR: vPortYieldISR:
#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. */
/* 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
/* 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)
/* 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)
/* Test if FPU context save is required. */
lw s7, portTASK_HAS_FPU_STACK_LOCATION(s5)
beq s7, zero, 1f
nop
/* Save the FPU registers above the normal context. */
portSAVE_FPU_REGS (portCONTEXT_SIZE + 8), s5
/* Save the FPU status register */
cfc1 s7, $f31
sw s7, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)
1:
/* 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)
/* Test if the FPU context needs restoring. */
lw s0, portTASK_HAS_FPU_STACK_LOCATION(s5)
beq s0, zero, 1f
nop
/* Restore the FPU status register. */
lw s0, ( portCONTEXT_SIZE + portFPCSR_STACK_LOCATION )(s5)
ctc1 s0, $f31
/* Restore the FPU registers. */
portLOAD_FPU_REGS ( portCONTEXT_SIZE + 8 ), s5
1:
/* 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 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 /* 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 manipulated, and the cause and EPC registers so thier original values are
captured. */ captured. */
@ -404,6 +679,9 @@ vPortYieldISR:
/* Remove stack frame. */ /* Remove stack frame. */
addiu sp, sp, portCONTEXT_SIZE 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 k1, _CP0_STATUS
mtc0 k0, _CP0_EPC mtc0 k0, _CP0_EPC
ehb ehb
@ -412,5 +690,122 @@ vPortYieldISR:
.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 ) */

View File

@ -183,6 +183,15 @@ extern void vPortClearInterruptMaskFromISR( UBaseType_t );
#define portSET_INTERRUPT_MASK_FROM_ISR() uxPortSetInterruptMaskFromISR() #define portSET_INTERRUPT_MASK_FROM_ISR() uxPortSetInterruptMaskFromISR()
#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusRegister ) vPortClearInterruptMaskFromISR( uxSavedStatusRegister ) #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 #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
#endif #endif

View File

@ -233,7 +233,7 @@ static TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) PRIV
* If a timer has expired, process it. Otherwise, block the timer service task * If a timer has expired, process it. Otherwise, block the timer service task
* until either a timer does expire or a command is received. * 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 @@ BaseType_t xListWasEmpty;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, const BaseType_t xListWasEmpty ) static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty )
{ {
TickType_t xTimeNow; TickType_t xTimeNow;
BaseType_t xTimerListsWereSwitched; BaseType_t xTimerListsWereSwitched;
@ -471,6 +471,13 @@ BaseType_t xTimerListsWereSwitched;
received - whichever comes first. The following line cannot received - whichever comes first. The following line cannot
be reached unless xNextExpireTime > xTimeNow, except in the be reached unless xNextExpireTime > xTimeNow, except in the
case when the current timer list is empty. */ 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 ); vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty );
if( xTaskResumeAll() == pdFALSE ) if( xTaskResumeAll() == pdFALSE )