mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Demo application related:
+ Update the RZ IAR project so it targets the RZ RSK rather than custom hardware. + Update the RZ ARM/DS-5 project so it targets the RZ RSK rather than custom hardware. + Updated RX64M demos to use the new iodefine.h naming. Cortex-A9 port related: + Update IAR, ARM and GCC Cortex-A9 port layers to include a 'task exit error' function which is called if a task attempts to incorrectly exit its implementing function. + Moved the instruction which switches into system mode out of the restore context macro, as it is only needed when starting the first task. Core kernel files related: + Ensure there are no references to the mutexes held count when mutexes are excluded from the build.
This commit is contained in:
parent
162448f06b
commit
52e687086c
|
@ -1,7 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<?fileVersion 4.0.0?>
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
|
||||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.2085733085">
|
<cconfiguration id="com.arm.eclipse.build.config.baremetal.exe.debug.2085733085">
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.2085733085" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.arm.eclipse.build.config.baremetal.exe.debug.2085733085" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||||
|
@ -97,8 +95,10 @@
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<project id="FreeRTOS_Demo.com.arm.eclipse.build.project.baremetal.exe.508091358" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
|
<project id="FreeRTOS_Demo.com.arm.eclipse.build.project.baremetal.exe.508091358" name="Bare-metal Executable" projectType="com.arm.eclipse.build.project.baremetal.exe"/>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="refreshScope" versionNumber="1">
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
<resource resourceType="PROJECT" workspacePath="/FreeRTOS_Demo"/>
|
<configuration configurationName="Debug">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/FreeRTOS_Demo"/>
|
||||||
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="scannerConfiguration">
|
<storageModule moduleId="scannerConfiguration">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
@ -110,4 +110,5 @@
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
</cproject>
|
</cproject>
|
||||||
|
|
|
@ -45,11 +45,11 @@
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>MemFile</name>
|
<name>MemFile</name>
|
||||||
<state>$TOOLKIT_DIR$\CONFIG\debugger\Renesas\R7S721000.ddf</state>
|
<state>$TOOLKIT_DIR$\CONFIG\debugger\Renesas\R7S721001.ddf</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>RunToEnable</name>
|
<name>RunToEnable</name>
|
||||||
<state>1</state>
|
<state>0</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>RunToName</name>
|
<name>RunToName</name>
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>OCLastSavedByProductVersion</name>
|
<name>OCLastSavedByProductVersion</name>
|
||||||
<state>7.10.1.6733</state>
|
<state>7.20.2.7418</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>OCDownloadAttachToProgram</name>
|
<name>OCDownloadAttachToProgram</name>
|
||||||
|
@ -1259,7 +1259,7 @@
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>CCXds100InterfaceList</name>
|
<name>CCXds100InterfaceList</name>
|
||||||
<version>1</version>
|
<version>2</version>
|
||||||
<state>0</state>
|
<state>0</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
|
|
|
@ -87,7 +87,7 @@
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>OGLastSavedByProductVersion</name>
|
<name>OGLastSavedByProductVersion</name>
|
||||||
<state>7.10.1.6733</state>
|
<state>7.20.2.7418</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>GeneralEnableMisra</name>
|
<name>GeneralEnableMisra</name>
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>OGChipSelectEditMenu</name>
|
<name>OGChipSelectEditMenu</name>
|
||||||
<state>R7S721000 Renesas R7S721000</state>
|
<state>R7S721001 Renesas R7S721001</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>GenLowLevelInterface</name>
|
<name>GenLowLevelInterface</name>
|
||||||
|
@ -163,7 +163,7 @@
|
||||||
<name>ICCARM</name>
|
<name>ICCARM</name>
|
||||||
<archiveVersion>2</archiveVersion>
|
<archiveVersion>2</archiveVersion>
|
||||||
<data>
|
<data>
|
||||||
<version>30</version>
|
<version>31</version>
|
||||||
<wantNonLocal>1</wantNonLocal>
|
<wantNonLocal>1</wantNonLocal>
|
||||||
<debug>1</debug>
|
<debug>1</debug>
|
||||||
<option>
|
<option>
|
||||||
|
@ -413,6 +413,10 @@
|
||||||
<version>0</version>
|
<version>0</version>
|
||||||
<state>0</state>
|
<state>0</state>
|
||||||
</option>
|
</option>
|
||||||
|
<option>
|
||||||
|
<name>CCGuardCalls</name>
|
||||||
|
<state>1</state>
|
||||||
|
</option>
|
||||||
</data>
|
</data>
|
||||||
</settings>
|
</settings>
|
||||||
<settings>
|
<settings>
|
||||||
|
@ -714,11 +718,11 @@
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>IlinkIcfOverride</name>
|
<name>IlinkIcfOverride</name>
|
||||||
<state>1</state>
|
<state>0</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>IlinkIcfFile</name>
|
<name>IlinkIcfFile</name>
|
||||||
<state>$PROJ_DIR$\r7s721000.icf</state>
|
<state>$TOOLKIT_DIR$\config\linker\Renesas\r7s721001.icf</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>IlinkIcfFileSlave</name>
|
<name>IlinkIcfFileSlave</name>
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Wnd2>
|
<Wnd3>
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<Tab>
|
<Tab>
|
||||||
<Identity>TabID-6824-27546</Identity>
|
<Identity>TabID-6824-27546</Identity>
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
</Tab>
|
</Tab>
|
||||||
<Tab><Identity>TabID-11794-23690</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
|
<Tab><Identity>TabID-11794-23690</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
|
||||||
|
|
||||||
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
|
<SelectedTab>0</SelectedTab></Wnd3><Wnd4>
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<Tab>
|
<Tab>
|
||||||
<Identity>TabID-17573-27549</Identity>
|
<Identity>TabID-17573-27549</Identity>
|
||||||
|
@ -67,20 +67,20 @@
|
||||||
</Tab>
|
</Tab>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
<SelectedTab>0</SelectedTab></Wnd3></Windows>
|
<SelectedTab>0</SelectedTab></Wnd4><Wnd5><Tabs><Tab><Identity>TabID-8721-7680</Identity><TabName>Disassembly</TabName><Factory>Disassembly</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd5></Windows>
|
||||||
<Editor>
|
<Editor>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>122</YPos2><SelStart2>6677</SelStart2><SelEnd2>6677</SelEnd2></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\Full-Demo\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>410</YPos2><SelStart2>19389</SelStart2><SelEnd2>19389</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Common\Minimal\QueueOverwrite.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>178</YPos2><SelStart2>8141</SelStart2><SelEnd2>8141</SelEnd2></Tab></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$\..\Source\Full-Demo\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>64</YPos2><SelStart2>8123</SelStart2><SelEnd2>8123</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\Blinky-Demo\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>64</YPos2><SelStart2>9979</SelStart2><SelEnd2>9979</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>112</YPos2><SelStart2>6090</SelStart2><SelEnd2>6090</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\cstartup.s</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>132</YPos2><SelStart2>5456</SelStart2><SelEnd2>5456</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\LowLevelInitialise.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>24</YPos2><SelStart2>1341</SelStart2><SelEnd2>1341</SelEnd2></Tab><ActiveTab>4</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\modules\armv7a_cp15_drv.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>727</YPos2><SelStart2>20604</SelStart2><SelEnd2>20604</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-0134b418><key>iaridepm.enu1</key></Toolbar-0134b418></Sizes></Row0><Row1><Sizes><Toolbar-13399d38><key>debuggergui.enu1</key></Toolbar-13399d38></Sizes></Row1></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>716</Bottom><Right>302</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>180952</sizeVertCX><sizeVertCY>731161</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
<Top><Row0><Sizes><Toolbar-00D172A8><key>iaridepm.enu1</key></Toolbar-00D172A8></Sizes></Row0><Row1><Sizes><Toolbar-12B3ABF8><key>debuggergui.enu1</key></Toolbar-12B3ABF8></Sizes></Row1></Top><Left><Row0><Sizes><Wnd4><Rect><Top>-2</Top><Left>-2</Left><Bottom>718</Bottom><Right>302</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>180952</sizeVertCX><sizeVertCY>731707</sizeVertCY></Rect></Wnd4></Sizes></Row0></Left><Right><Row0><Sizes><Wnd5><Rect><Top>-2</Top><Left>-2</Left><Bottom>718</Bottom><Right>699</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>417262</sizeVertCX><sizeVertCY>731707</sizeVertCY></Rect></Wnd5></Sizes></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||||
</Desktop>
|
</Desktop>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
||||||
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
||||||
CStepIntDis=_ 0
|
CStepIntDis=_ 0
|
||||||
[DebugChecksum]
|
[DebugChecksum]
|
||||||
Checksum=1422761829
|
Checksum=-1045357403
|
||||||
[Jet]
|
[Jet]
|
||||||
JetConnSerialNo=73866
|
JetConnSerialNo=73866
|
||||||
JetConnFoundProbes=
|
JetConnFoundProbes=
|
||||||
|
|
|
@ -64,14 +64,14 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>62</YPos2><SelStart2>6677</SelStart2><SelEnd2>6677</SelEnd2></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\Full-Demo\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>410</YPos2><SelStart2>19389</SelStart2><SelEnd2>19389</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\Blinky-Demo\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>63</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>
|
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\Full-Demo\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>64</YPos2><SelStart2>8123</SelStart2><SelEnd2>8123</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\Blinky-Demo\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>64</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Source\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>112</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\cstartup.s</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>132</YPos2><SelStart2>5456</SelStart2><SelEnd2>5456</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\LowLevelInitialise.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>14</YPos2><SelStart2>1341</SelStart2><SelEnd2>1341</SelEnd2></Tab><ActiveTab>4</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\modules\armv7a_cp15_drv.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>727</YPos2><SelStart2>20604</SelStart2><SelEnd2>20604</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-013BA3C8><key>iaridepm.enu1</key></Toolbar-013BA3C8></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>692</Bottom><Right>380</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>227381</sizeVertCX><sizeVertCY>706721</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>246</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>248</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>252546</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
<Top><Row0><Sizes><Toolbar-00D172A8><key>iaridepm.enu1</key></Toolbar-00D172A8></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>693</Bottom><Right>380</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>227381</sizeVertCX><sizeVertCY>706301</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>247</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>249</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>253049</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||||
</Desktop>
|
</Desktop>
|
||||||
</Workspace>
|
</Workspace>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V8.0.1 - Copyright (C) 2014 Real Time Engineers Ltd.
|
FreeRTOS V8.0.1 - Copyright (C) 2014 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
@ -64,7 +64,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
/*-----------------------------------------------------------
|
||||||
* Simple IO routines to control the LEDs.
|
* Simple IO routines to control an LED.
|
||||||
*-----------------------------------------------------------*/
|
*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Scheduler includes. */
|
/* Scheduler includes. */
|
||||||
|
@ -81,17 +81,24 @@
|
||||||
|
|
||||||
void vParTestInitialise( void )
|
void vParTestInitialise( void )
|
||||||
{
|
{
|
||||||
/* Initialise P4_10 for LED1. */
|
/* Initialise P7_01 for LED0. */
|
||||||
PORT4.PMCn.BIT.PMCn10 = 0;
|
PORT7.PMCn.BIT.PMCn1 = 0;
|
||||||
PORT4.Pn.BIT.Pn10 = 1;
|
PORT7.Pn.BIT.Pn1 = 1;
|
||||||
PORT4.PMn.BIT.PMn10 = 0;
|
PORT7.PMn.BIT.PMn1 = 0;
|
||||||
PORT4.PIPCn.BIT.PIPCn10 = 0;
|
PORT7.PIPCn.BIT.PIPCn1 = 0;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Initialise P4_11 for LED2. */
|
void vParTestToggleLED( unsigned long ulLED )
|
||||||
PORT4.PMCn.BIT.PMCn11 = 0;
|
{
|
||||||
PORT4.Pn.BIT.Pn11 = 1;
|
if( ulLED == 0 )
|
||||||
PORT4.PMn.BIT.PMn11 = 0;
|
{
|
||||||
PORT4.PIPCn.BIT.PIPCn11 = 0;
|
taskENTER_CRITICAL();
|
||||||
|
{
|
||||||
|
PORT7.Pn.BIT.Pn1 = !PORT7.Pn.BIT.Pn1;
|
||||||
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -100,37 +107,13 @@ void vParTestSetLED( unsigned long ulLED, signed long xValue )
|
||||||
/* A high value turns the LED off. */
|
/* A high value turns the LED off. */
|
||||||
xValue = !xValue;
|
xValue = !xValue;
|
||||||
|
|
||||||
taskENTER_CRITICAL();
|
if( ulLED == 0 )
|
||||||
{
|
{
|
||||||
if( ulLED == 0 )
|
taskENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
PORT4.Pn.BIT.Pn10 = xValue;
|
PORT7.Pn.BIT.Pn1 = xValue;
|
||||||
}
|
|
||||||
|
|
||||||
if( ulLED == 1 )
|
|
||||||
{
|
|
||||||
PORT4.Pn.BIT.Pn11 = xValue;
|
|
||||||
}
|
}
|
||||||
|
taskEXIT_CRITICAL();
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vParTestToggleLED( unsigned long ulLED )
|
|
||||||
{
|
|
||||||
taskENTER_CRITICAL();
|
|
||||||
{
|
|
||||||
if( ulLED == 0 )
|
|
||||||
{
|
|
||||||
PORT4.Pn.BIT.Pn10 = !PORT4.Pn.BIT.Pn10;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ulLED == 1 )
|
|
||||||
{
|
|
||||||
PORT4.Pn.BIT.Pn11 = !PORT4.Pn.BIT.Pn11;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
taskEXIT_CRITICAL();
|
|
||||||
}
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,14 @@ VbarInit FUNCTION
|
||||||
; LDR r0, =||Image$$VECTOR_TABLE$$Base||
|
; LDR r0, =||Image$$VECTOR_TABLE$$Base||
|
||||||
MCR p15, 0, r0, c12, c0, 0
|
MCR p15, 0, r0, c12, c0, 0
|
||||||
|
|
||||||
|
;===================================================================
|
||||||
|
; Set low vectors
|
||||||
|
;===================================================================
|
||||||
|
|
||||||
|
MRC p15, 0, r0, c1, c0, 0 ;/* Read CP15 System Control register (SCTLR) */
|
||||||
|
BIC r0, r0, #(0x1 << 13) ;/* Clear V bit 13 to set Low Vectors */
|
||||||
|
MCR p15, 0, r0, c1, c0, 0 ;/* Write CP15 System Control register */
|
||||||
|
ISB
|
||||||
BX lr
|
BX lr
|
||||||
|
|
||||||
ENDFUNC
|
ENDFUNC
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V8.0.1 - Copyright (C) 2014 Real Time Engineers Ltd.
|
FreeRTOS V8.0.1 - Copyright (C) 2014 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
stop
|
|
||||||
pause 500
|
|
||||||
reset
|
reset
|
||||||
stop
|
stop
|
||||||
#reset
|
#reset
|
||||||
|
|
||||||
info memory
|
info memory
|
||||||
memory S:0x00000000 S:0x07ffffff ro
|
memory S:0x00000000 S:0x07ffffff ro
|
||||||
|
memory S:0x08000000 S:0x0fffffff cache
|
||||||
memory S:0x3fffff80 S:0x3fffffff nocache noverify
|
memory S:0x3fffff80 S:0x3fffffff nocache noverify
|
||||||
memory S:0xfcfe0000 S:0xfcfeffff nocache noverify
|
memory S:0xfcfe0000 S:0xfcfeffff nocache noverify
|
||||||
|
|
||||||
|
@ -21,7 +20,8 @@ mem set 0x3fffff80 32 0x00000001
|
||||||
|
|
||||||
# ;*Writing to On-Chip Data-Retention RAM is enabled.
|
# ;*Writing to On-Chip Data-Retention RAM is enabled.
|
||||||
# ;SYSCR3.RRAMWE3=RRAMWE2=RRAMWE1=RRAMWE0=1
|
# ;SYSCR3.RRAMWE3=RRAMWE2=RRAMWE1=RRAMWE0=1
|
||||||
mem set 0xfcfe0408 32 0xf
|
memory set S:0xFCFE0408 0 {(unsigned char)0x0F}
|
||||||
|
x/1b 0xfcfe0408
|
||||||
|
|
||||||
######################################
|
######################################
|
||||||
# CS0 Port Setting ##
|
# CS0 Port Setting ##
|
||||||
|
@ -39,12 +39,6 @@ mem set 0xfcfe3A20 16 0x0000 # PFCAE8
|
||||||
mem set 0xfcfe3620 16 0x0000 # PFCE8
|
mem set 0xfcfe3620 16 0x0000 # PFCE8
|
||||||
mem set 0xfcfe3520 16 0x0000 # PFC8
|
mem set 0xfcfe3520 16 0x0000 # PFC8
|
||||||
mem set 0xfcfe7220 16 0xffff # PIPC8
|
mem set 0xfcfe7220 16 0xffff # PIPC8
|
||||||
# P7_6(WE0#), P7_8(RD#), P7_0(CS0#),
|
|
||||||
mem set 0xfcfe341c 16 0xff41 # PMC7
|
|
||||||
mem set 0xfcfe3A1c 16 0x0000 # PFCAE7
|
|
||||||
mem set 0xfcfe361c 16 0x0000 # PFCE7
|
|
||||||
mem set 0xfcfe351c 16 0x0000 # PFC7
|
|
||||||
mem set 0xfcfe721c 16 0xff41 # PIPC7
|
|
||||||
# P3_7(CS1#),
|
# P3_7(CS1#),
|
||||||
mem set 0xfcfe340c 16 0x0080 # PMC3
|
mem set 0xfcfe340c 16 0x0080 # PMC3
|
||||||
mem set 0xfcfe3A0c 16 0x0080 # PFCAE3
|
mem set 0xfcfe3A0c 16 0x0080 # PFCAE3
|
||||||
|
@ -52,4 +46,47 @@ mem set 0xfcfe360c 16 0x0080 # PFCE3
|
||||||
mem set 0xfcfe350c 16 0x0000 # PFC3
|
mem set 0xfcfe350c 16 0x0000 # PFC3
|
||||||
mem set 0xfcfe720c 16 0x0080 # PIPC3
|
mem set 0xfcfe720c 16 0x0080 # PIPC3
|
||||||
|
|
||||||
|
# SRSR - SDRAM Setup?
|
||||||
|
# P7_8(RD#), P7_7(WE1#), P7_6(WE0#), P7_5(RD/WR#), P7_4(CKE), P7_3(CAS#), P7_2(RAS#), P7_1(CS3#), P7_0(CS0#)
|
||||||
|
mem set 0xfcfe341c 16 0xffff # PMC7
|
||||||
|
mem set 0xfcfe3A1c 16 0x0000 # PFCAE7
|
||||||
|
mem set 0xfcfe361c 16 0x0000 # PFCE7
|
||||||
|
mem set 0xfcfe351c 16 0x0000 # PFC7
|
||||||
|
mem set 0xfcfe721c 16 0xffff # PIPC7
|
||||||
|
# P5_8(CS2#),
|
||||||
|
mem set 0xfcfe3414 16 0x0100 # PMC5
|
||||||
|
mem set 0xfcfe3A14 16 0x0100 # PFCAE5
|
||||||
|
mem set 0xfcfe3614 16 0x0000 # PFCE5
|
||||||
|
mem set 0xfcfe3514 16 0x0100 # PFC5
|
||||||
|
mem set 0xfcfe7214 16 0x0100 # PIPC5
|
||||||
|
|
||||||
|
# disable verify on SDRAM setup registers
|
||||||
|
memory S:0x3fffc000 S:0x3fffffff nocache noverify
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# CS2 SDRAM Setting ##
|
||||||
|
######################################
|
||||||
|
mem set 0x3fffc00c 32 0x00004C00 # CS2BCR - SDRAM
|
||||||
|
mem set 0x3fffc030 32 0x00000080 # CS2WCR - SDRAM
|
||||||
|
mem set 0x3fffd040 16 0x0000 # SDRAM_MODE_CS2
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# CS3 SDRAM Setting ##
|
||||||
|
######################################
|
||||||
|
wait 0.5s
|
||||||
|
mem set 0x3fffc010 32 0x00004C00 # CS3BCR - SDRAM
|
||||||
|
mem set 0x3fffc034 32 0x00002492 # CS3WCR - SDRAM
|
||||||
|
mem set 0x3fffc04c 32 0x00120812 # SDCR
|
||||||
|
mem set 0x3fffc058 32 0xA55A0020 # RTCOR
|
||||||
|
mem set 0x3fffc050 32 0xA55A0010 # RTCSR
|
||||||
|
mem set 0x3fffe040 16 0x0000 # SDRAM_MODE_CS3
|
||||||
|
# SRSR - SDRAM Setup?
|
||||||
|
|
||||||
|
#SRSR - Not used - updated to include SDRAM setup
|
||||||
|
# P7_6(WE0#), P7_8(RD#), P7_0(CS0#),
|
||||||
|
#mem set 0xfcfe341c 16 0xff41 # PMC7
|
||||||
|
#mem set 0xfcfe3A1c 16 0x0000 # PFCAE7
|
||||||
|
#mem set 0xfcfe361c 16 0x0000 # PFCE7
|
||||||
|
#mem set 0xfcfe351c 16 0x0000 # PFC7
|
||||||
|
#mem set 0xfcfe721c 16 0xff41 # PIPC7
|
||||||
|
#SRSR - Not used - updated to include SDRAM setup
|
||||||
|
|
|
@ -179,6 +179,12 @@ header file. */
|
||||||
void vAssertCalled( const char * pcFile, unsigned long ulLine );
|
void vAssertCalled( const char * pcFile, unsigned long ulLine );
|
||||||
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ );
|
#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ );
|
||||||
|
|
||||||
|
/* If configTASK_RETURN_ADDRESS is not defined then a task that attempts to
|
||||||
|
return from its implementing function will end up in a "task exit error"
|
||||||
|
function - which contains a call to configASSERT(). However this can give GCC
|
||||||
|
some problems when it tries to unwind the stack, as the exit error function has
|
||||||
|
nothing to return to. To avoid this define configTASK_RETURN_ADDRESS to 0. */
|
||||||
|
#define configTASK_RETURN_ADDRESS NULL
|
||||||
|
|
||||||
|
|
||||||
/****** Hardware specific settings. *******************************************/
|
/****** Hardware specific settings. *******************************************/
|
||||||
|
|
|
@ -176,8 +176,6 @@ XScuGic xInterruptController;
|
||||||
|
|
||||||
int main( void )
|
int main( void )
|
||||||
{
|
{
|
||||||
extern void main_lwIP( void );
|
|
||||||
|
|
||||||
/* Configure the hardware ready to run the demo. */
|
/* Configure the hardware ready to run the demo. */
|
||||||
prvSetupHardware();
|
prvSetupHardware();
|
||||||
|
|
||||||
|
|
|
@ -124,12 +124,12 @@ typedef enum
|
||||||
ser115200
|
ser115200
|
||||||
} eBaud;
|
} eBaud;
|
||||||
|
|
||||||
xComPortHandle xSerialPortInitMinimal( uint32_t ulWantedBaud, UBaseType_t uxQueueLength );
|
xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength );
|
||||||
xComPortHandle xSerialPortInit( eCOMPort ePort, eBaud eWantedBaud, eParity eWantedParity, eDataBits eWantedDataBits, eStopBits eWantedStopBits, UBaseType_t uxBufferLength );
|
xComPortHandle xSerialPortInit( eCOMPort ePort, eBaud eWantedBaud, eParity eWantedParity, eDataBits eWantedDataBits, eStopBits eWantedStopBits, unsigned portBASE_TYPE uxBufferLength );
|
||||||
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, uint16_t usStringLength );
|
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength );
|
||||||
BaseType_t xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime );
|
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime );
|
||||||
BaseType_t xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime );
|
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime );
|
||||||
BaseType_t xSerialWaitForSemaphore( xComPortHandle xPort );
|
portBASE_TYPE xSerialWaitForSemaphore( xComPortHandle xPort );
|
||||||
void vSerialClose( xComPortHandle xPort );
|
void vSerialClose( xComPortHandle xPort );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,4 +4,4 @@ TC_INSTALL=C:\devtools\KPIT\GNURXv14.01-ELF\rx-ELF\rx-ELF\
|
||||||
GCC_STRING=4.7-GNURX_v14.01
|
GCC_STRING=4.7-GNURX_v14.01
|
||||||
VERSION_IDE=
|
VERSION_IDE=
|
||||||
ACTIVE_CONFIGURATION=HardwareDebug
|
ACTIVE_CONFIGURATION=HardwareDebug
|
||||||
E2STUDIO_VERSION=3.0.0.22
|
E2STUDIO_VERSION=3.0.1.09
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<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-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider class="com.renesas.cdt.common.build.spec.RXGCCBuiltinSpecsDetector" console="false" env-hash="-1879026215548195910" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="1142094570" parameter="rx-elf-gcc -E -P -v -dD ${INPUTS} -mcpu=rx600 -mlittle-endian-data" prefer-non-shared="true">
|
<provider class="com.renesas.cdt.common.build.spec.RXGCCBuiltinSpecsDetector" console="false" env-hash="982537399514949188" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="1142094570" parameter="rx-elf-gcc -E -P -v -dD ${INPUTS} -mcpu=rx600 -mlittle-endian-data" 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>
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
<stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F564ML"/>
|
<stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F564ML"/>
|
||||||
<booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/>
|
<booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/>
|
||||||
<booleanAttribute key="com.renesas.cdt.core.verboseMode" value="false"/>
|
<booleanAttribute key="com.renesas.cdt.core.verboseMode" value="false"/>
|
||||||
|
<stringAttribute key="com.renesas.cdt.debug.ioview.dsf.registerSelection" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <selectedRegisterList ioFilePath="C:\DevTools\Renesas\e2_studio\internal\IoFiles\RX\RX64M.sfrx"/> "/>
|
||||||
<stringAttribute key="com.renesas.cdt.debug.realtimemanager.memory.mruRanges" value=""/>
|
<stringAttribute key="com.renesas.cdt.debug.realtimemanager.memory.mruRanges" value=""/>
|
||||||
<stringAttribute key="com.renesas.cdt.launch.dsf.IO_MAP" value="${eclipse_home}..\internal\IoFiles\RX\RX64M.sfrx"/>
|
<stringAttribute key="com.renesas.cdt.launch.dsf.IO_MAP" value="${eclipse_home}..\internal\IoFiles\RX\RX64M.sfrx"/>
|
||||||
<booleanAttribute key="com.renesas.cdt.launch.dsf.USE_DEFAULT_IO_MAP" value="true"/>
|
<booleanAttribute key="com.renesas.cdt.launch.dsf.USE_DEFAULT_IO_MAP" value="true"/>
|
||||||
|
|
|
@ -66,9 +66,6 @@
|
||||||
#ifndef FREERTOS_CONFIG_H
|
#ifndef FREERTOS_CONFIG_H
|
||||||
#define FREERTOS_CONFIG_H
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
/* Hardware specifics. */
|
|
||||||
#include "iodefine.h"
|
|
||||||
|
|
||||||
/* Prevent Renesas headers redefining some stdint.h types. */
|
/* Prevent Renesas headers redefining some stdint.h types. */
|
||||||
#define __TYPEDEF__ 1
|
#define __TYPEDEF__ 1
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,10 @@
|
||||||
#include "IntQueueTimer.h"
|
#include "IntQueueTimer.h"
|
||||||
#include "IntQueue.h"
|
#include "IntQueue.h"
|
||||||
|
|
||||||
|
/* Hardware specifics. */
|
||||||
|
#include "iodefine.h"
|
||||||
|
#include "rskrx64mdef.h"
|
||||||
|
|
||||||
#define IPR_PERIB_INTB128 128
|
#define IPR_PERIB_INTB128 128
|
||||||
#define IPR_PERIB_INTB129 129
|
#define IPR_PERIB_INTB129 129
|
||||||
#define IER_PERIB_INTB128 0x10
|
#define IER_PERIB_INTB128 0x10
|
||||||
|
|
|
@ -75,6 +75,7 @@
|
||||||
#include "partest.h"
|
#include "partest.h"
|
||||||
|
|
||||||
/* Hardware specifics. */
|
/* Hardware specifics. */
|
||||||
|
#include "iodefine.h"
|
||||||
#include "rskrx64mdef.h"
|
#include "rskrx64mdef.h"
|
||||||
|
|
||||||
#define partestNUM_LEDS ( 4 )
|
#define partestNUM_LEDS ( 4 )
|
||||||
|
|
|
@ -91,6 +91,10 @@
|
||||||
#include "QueueOverwrite.h"
|
#include "QueueOverwrite.h"
|
||||||
#include "EventGroupsDemo.h"
|
#include "EventGroupsDemo.h"
|
||||||
|
|
||||||
|
/* Hardware specifics. */
|
||||||
|
#include "iodefine.h"
|
||||||
|
#include "rskrx64mdef.h"
|
||||||
|
|
||||||
/* Set option bytes */
|
/* Set option bytes */
|
||||||
#pragma address OFS0_location = 0xFFFFFF8CUL
|
#pragma address OFS0_location = 0xFFFFFF8CUL
|
||||||
#pragma address OFS1_location = 0xFFFFFF88UL
|
#pragma address OFS1_location = 0xFFFFFF88UL
|
||||||
|
|
|
@ -2,5 +2,5 @@ TOOL_CHAIN=Renesas RXC Toolchain
|
||||||
VERSION=v2.01.00
|
VERSION=v2.01.00
|
||||||
TC_INSTALL=C:\Devtools\Renesas\RX\2_1_0\
|
TC_INSTALL=C:\Devtools\Renesas\RX\2_1_0\
|
||||||
VERSION_IDE=
|
VERSION_IDE=
|
||||||
E2STUDIO_VERSION=3.0.0.22
|
|
||||||
ACTIVE_CONFIGURATION=HardwareDebug
|
ACTIVE_CONFIGURATION=HardwareDebug
|
||||||
|
E2STUDIO_VERSION=3.0.1.09
|
||||||
|
|
|
@ -66,9 +66,6 @@
|
||||||
#ifndef FREERTOS_CONFIG_H
|
#ifndef FREERTOS_CONFIG_H
|
||||||
#define FREERTOS_CONFIG_H
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
/* Hardware specifics. */
|
|
||||||
#include "r_cg_iodefine.h"
|
|
||||||
|
|
||||||
/* Prevent Renesas headers redefining some stdint.h types. */
|
/* Prevent Renesas headers redefining some stdint.h types. */
|
||||||
#define __TYPEDEF__ 1
|
#define __TYPEDEF__ 1
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* Author: WarnerR
|
* Author: WarnerR
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "r_cg_iodefine.h"
|
#include "../iodefine.h"
|
||||||
#include "stdint.h"
|
#include "stdint.h"
|
||||||
|
|
||||||
#define PRC0_BIT 0x0001
|
#define PRC0_BIT 0x0001
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
Includes
|
Includes
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
#include "r_cg_iodefine.h"
|
#include "../iodefine.h"
|
||||||
#include <machine.h>
|
#include <machine.h>
|
||||||
|
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
|
@ -138,7 +138,7 @@ void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );
|
||||||
void vApplicationTickHook( void );
|
void vApplicationTickHook( void );
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
uint32_t ul1, ul2;
|
|
||||||
int main( void )
|
int main( void )
|
||||||
{
|
{
|
||||||
/* Configure the hardware ready to run the demo. */
|
/* Configure the hardware ready to run the demo. */
|
||||||
|
|
|
@ -176,6 +176,15 @@ the CPU itself before modifying certain hardware registers. */
|
||||||
#define portMAX_8_BIT_VALUE ( ( uint8_t ) 0xff )
|
#define portMAX_8_BIT_VALUE ( ( uint8_t ) 0xff )
|
||||||
#define portBIT_0_SET ( ( uint8_t ) 0x01 )
|
#define portBIT_0_SET ( ( uint8_t ) 0x01 )
|
||||||
|
|
||||||
|
/* Let the user override the pre-loading of the initial LR with the address of
|
||||||
|
prvTaskExitError() in case is messes up unwinding of the stack in the
|
||||||
|
debugger. */
|
||||||
|
#ifdef configTASK_RETURN_ADDRESS
|
||||||
|
#define portTASK_RETURN_ADDRESS configTASK_RETURN_ADDRESS
|
||||||
|
#else
|
||||||
|
#define portTASK_RETURN_ADDRESS prvTaskExitError
|
||||||
|
#endif
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -184,6 +193,11 @@ the CPU itself before modifying certain hardware registers. */
|
||||||
*/
|
*/
|
||||||
extern void vPortRestoreTaskContext( void );
|
extern void vPortRestoreTaskContext( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Used to catch tasks that attempt to return from their implementing function.
|
||||||
|
*/
|
||||||
|
static void prvTaskExitError( void );
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* A variable is used to keep track of the critical section nesting. This
|
/* A variable is used to keep track of the critical section nesting. This
|
||||||
|
@ -243,7 +257,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
|
|
||||||
/* Next all the registers other than the stack pointer. */
|
/* Next all the registers other than the stack pointer. */
|
||||||
*pxTopOfStack = ( StackType_t ) 0x00000000; /* R14 */
|
*pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS; /* R14 */
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
|
*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
|
@ -286,6 +300,20 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvTaskExitError( void )
|
||||||
|
{
|
||||||
|
/* A function that implements a task must not exit or attempt to return to
|
||||||
|
its caller as there is nothing to return to. If a task wants to exit it
|
||||||
|
should instead call vTaskDelete( NULL ).
|
||||||
|
|
||||||
|
Artificially force an assert() to be triggered if configASSERT() is
|
||||||
|
defined, then stop here so application writers can catch the error. */
|
||||||
|
configASSERT( ulPortInterruptNesting == ~0UL );
|
||||||
|
portDISABLE_INTERRUPTS();
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
BaseType_t xPortStartScheduler( void )
|
BaseType_t xPortStartScheduler( void )
|
||||||
{
|
{
|
||||||
uint32_t ulAPSR;
|
uint32_t ulAPSR;
|
||||||
|
@ -380,7 +408,7 @@ void vPortEnterCritical( void )
|
||||||
ulCriticalNesting++;
|
ulCriticalNesting++;
|
||||||
|
|
||||||
/* This is not the interrupt safe version of the enter critical function so
|
/* This is not the interrupt safe version of the enter critical function so
|
||||||
assert() if it is being called from an interrupt context. Only API
|
assert() if it is being called from an interrupt context. Only API
|
||||||
functions that end in "FromISR" can be used in an interrupt. Only assert if
|
functions that end in "FromISR" can be used in an interrupt. Only assert if
|
||||||
the critical nesting count is 1 to protect against recursive calls if the
|
the critical nesting count is 1 to protect against recursive calls if the
|
||||||
assert function also uses a critical section. */
|
assert function also uses a critical section. */
|
||||||
|
|
|
@ -120,9 +120,6 @@
|
||||||
|
|
||||||
.macro portRESTORE_CONTEXT
|
.macro portRESTORE_CONTEXT
|
||||||
|
|
||||||
/* Switch to system mode. */
|
|
||||||
CPS #SYS_MODE
|
|
||||||
|
|
||||||
/* Set the SP to point to the stack of the task being restored. */
|
/* Set the SP to point to the stack of the task being restored. */
|
||||||
LDR R0, pxCurrentTCBConst
|
LDR R0, pxCurrentTCBConst
|
||||||
LDR R1, [R0]
|
LDR R1, [R0]
|
||||||
|
@ -168,7 +165,7 @@
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* SVC handler is used to start the scheduler and yield a task.
|
* SVC handler is used to start the scheduler.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
.align 4
|
.align 4
|
||||||
.type FreeRTOS_SWI_Handler, %function
|
.type FreeRTOS_SWI_Handler, %function
|
||||||
|
@ -177,9 +174,16 @@ FreeRTOS_SWI_Handler:
|
||||||
portSAVE_CONTEXT
|
portSAVE_CONTEXT
|
||||||
LDR R0, vTaskSwitchContextConst
|
LDR R0, vTaskSwitchContextConst
|
||||||
BLX R0
|
BLX R0
|
||||||
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* vPortRestoreTaskContext is used to start the scheduler.
|
||||||
|
*****************************************************************************/
|
||||||
.type vPortRestoreTaskContext, %function
|
.type vPortRestoreTaskContext, %function
|
||||||
vPortRestoreTaskContext:
|
vPortRestoreTaskContext:
|
||||||
|
/* Switch to system mode. */
|
||||||
|
CPS #SYS_MODE
|
||||||
portRESTORE_CONTEXT
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
|
|
|
@ -74,6 +74,9 @@
|
||||||
/* Library includes. */
|
/* Library includes. */
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
|
/* Hardware specifics. */
|
||||||
|
#include "iodefine.h"
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
||||||
|
|
|
@ -166,6 +166,11 @@ mode. */
|
||||||
*/
|
*/
|
||||||
extern void vPortRestoreTaskContext( void );
|
extern void vPortRestoreTaskContext( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Used to catch tasks that attempt to return from their implementing function.
|
||||||
|
*/
|
||||||
|
static void prvTaskExitError( void );
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* A variable is used to keep track of the critical section nesting. This
|
/* A variable is used to keep track of the critical section nesting. This
|
||||||
|
@ -175,8 +180,8 @@ the scheduler starts. As it is stored as part of the task context it will
|
||||||
automatically be set to 0 when the first task is started. */
|
automatically be set to 0 when the first task is started. */
|
||||||
volatile uint32_t ulCriticalNesting = 9999UL;
|
volatile uint32_t ulCriticalNesting = 9999UL;
|
||||||
|
|
||||||
/* Saved as part of the task context. If ulPortTaskHasFPUContext is non-zero then
|
/* Saved as part of the task context. If ulPortTaskHasFPUContext is non-zero
|
||||||
a floating point context must be saved and restored for the task. */
|
then a floating point context must be saved and restored for the task. */
|
||||||
uint32_t ulPortTaskHasFPUContext = pdFALSE;
|
uint32_t ulPortTaskHasFPUContext = pdFALSE;
|
||||||
|
|
||||||
/* Set to 1 to pend a context switch from an ISR. */
|
/* Set to 1 to pend a context switch from an ISR. */
|
||||||
|
@ -221,7 +226,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
|
|
||||||
/* Next all the registers other than the stack pointer. */
|
/* Next all the registers other than the stack pointer. */
|
||||||
*pxTopOfStack = ( StackType_t ) 0x00000000; /* R14 */
|
*pxTopOfStack = ( StackType_t ) prvTaskExitError; /* R14 */
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
|
*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
|
@ -264,6 +269,20 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvTaskExitError( void )
|
||||||
|
{
|
||||||
|
/* A function that implements a task must not exit or attempt to return to
|
||||||
|
its caller as there is nothing to return to. If a task wants to exit it
|
||||||
|
should instead call vTaskDelete( NULL ).
|
||||||
|
|
||||||
|
Artificially force an assert() to be triggered if configASSERT() is
|
||||||
|
defined, then stop here so application writers can catch the error. */
|
||||||
|
configASSERT( ulPortInterruptNesting == ~0UL );
|
||||||
|
portDISABLE_INTERRUPTS();
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
BaseType_t xPortStartScheduler( void )
|
BaseType_t xPortStartScheduler( void )
|
||||||
{
|
{
|
||||||
uint32_t ulAPSR;
|
uint32_t ulAPSR;
|
||||||
|
|
|
@ -97,9 +97,6 @@ portSAVE_CONTEXT macro
|
||||||
|
|
||||||
portRESTORE_CONTEXT macro
|
portRESTORE_CONTEXT macro
|
||||||
|
|
||||||
; Switch to system mode
|
|
||||||
CPS #SYS_MODE
|
|
||||||
|
|
||||||
; Set the SP to point to the stack of the task being restored.
|
; Set the SP to point to the stack of the task being restored.
|
||||||
LDR R0, =pxCurrentTCB
|
LDR R0, =pxCurrentTCB
|
||||||
LDR R1, [R0]
|
LDR R1, [R0]
|
||||||
|
|
|
@ -75,7 +75,7 @@ IRQ_MODE EQU 0x12
|
||||||
INCLUDE portASM.h
|
INCLUDE portASM.h
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; SVC handler is used to start the scheduler and yield a task.
|
; SVC handler is used to yield a task.
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
FreeRTOS_SWI_Handler
|
FreeRTOS_SWI_Handler
|
||||||
|
|
||||||
|
@ -85,10 +85,15 @@ FreeRTOS_SWI_Handler
|
||||||
portSAVE_CONTEXT
|
portSAVE_CONTEXT
|
||||||
LDR R0, =vTaskSwitchContext
|
LDR R0, =vTaskSwitchContext
|
||||||
BLX R0
|
BLX R0
|
||||||
|
|
||||||
vPortRestoreTaskContext
|
|
||||||
portRESTORE_CONTEXT
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; vPortRestoreTaskContext is used to start the scheduler.
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
vPortRestoreTaskContext
|
||||||
|
; Switch to system mode
|
||||||
|
CPS #SYS_MODE
|
||||||
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; PL390 GIC interrupt handler
|
; PL390 GIC interrupt handler
|
||||||
|
@ -167,7 +172,7 @@ exit_without_switch
|
||||||
MOVS PC, LR
|
MOVS PC, LR
|
||||||
|
|
||||||
switch_before_exit
|
switch_before_exit
|
||||||
; A context swtich is to be performed. Clear the context switch pending
|
; A context switch is to be performed. Clear the context switch pending
|
||||||
; flag.
|
; flag.
|
||||||
MOV r0, #0
|
MOV r0, #0
|
||||||
STR r0, [r1]
|
STR r0, [r1]
|
||||||
|
|
|
@ -198,6 +198,11 @@ mode. */
|
||||||
*/
|
*/
|
||||||
extern void vPortRestoreTaskContext( void );
|
extern void vPortRestoreTaskContext( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Used to catch tasks that attempt to return from their implementing function.
|
||||||
|
*/
|
||||||
|
static void prvTaskExitError( void );
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* A variable is used to keep track of the critical section nesting. This
|
/* A variable is used to keep track of the critical section nesting. This
|
||||||
|
@ -260,7 +265,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
|
|
||||||
/* Next all the registers other than the stack pointer. */
|
/* Next all the registers other than the stack pointer. */
|
||||||
*pxTopOfStack = ( StackType_t ) 0x00000000; /* R14 */
|
*pxTopOfStack = ( StackType_t ) prvTaskExitError; /* R14 */
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
|
*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
|
||||||
pxTopOfStack--;
|
pxTopOfStack--;
|
||||||
|
@ -303,6 +308,20 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void prvTaskExitError( void )
|
||||||
|
{
|
||||||
|
/* A function that implements a task must not exit or attempt to return to
|
||||||
|
its caller as there is nothing to return to. If a task wants to exit it
|
||||||
|
should instead call vTaskDelete( NULL ).
|
||||||
|
|
||||||
|
Artificially force an assert() to be triggered if configASSERT() is
|
||||||
|
defined, then stop here so application writers can catch the error. */
|
||||||
|
configASSERT( ulPortInterruptNesting == ~0UL );
|
||||||
|
portDISABLE_INTERRUPTS();
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
BaseType_t xPortStartScheduler( void )
|
BaseType_t xPortStartScheduler( void )
|
||||||
{
|
{
|
||||||
uint32_t ulAPSR;
|
uint32_t ulAPSR;
|
||||||
|
@ -354,6 +373,16 @@ void vPortEnterCritical( void )
|
||||||
directly. Increment ulCriticalNesting to keep a count of how many times
|
directly. Increment ulCriticalNesting to keep a count of how many times
|
||||||
portENTER_CRITICAL() has been called. */
|
portENTER_CRITICAL() has been called. */
|
||||||
ulCriticalNesting++;
|
ulCriticalNesting++;
|
||||||
|
|
||||||
|
/* This is not the interrupt safe version of the enter critical function so
|
||||||
|
assert() if it is being called from an interrupt context. Only API
|
||||||
|
functions that end in "FromISR" can be used in an interrupt. Only assert if
|
||||||
|
the critical nesting count is 1 to protect against recursive calls if the
|
||||||
|
assert function also uses a critical section. */
|
||||||
|
if( ulCriticalNesting == 1 )
|
||||||
|
{
|
||||||
|
configASSERT( ulPortInterruptNesting == 0 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; SVC handler is used to start the scheduler and yield a task.
|
; SVC handler is used to yield a task.
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
FreeRTOS_SWI_Handler
|
FreeRTOS_SWI_Handler
|
||||||
|
|
||||||
|
@ -81,10 +81,15 @@ FreeRTOS_SWI_Handler
|
||||||
portSAVE_CONTEXT
|
portSAVE_CONTEXT
|
||||||
LDR R0, =vTaskSwitchContext
|
LDR R0, =vTaskSwitchContext
|
||||||
BLX R0
|
BLX R0
|
||||||
|
|
||||||
vPortRestoreTaskContext
|
|
||||||
portRESTORE_CONTEXT
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; vPortRestoreTaskContext is used to start the scheduler.
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
vPortRestoreTaskContext
|
||||||
|
; Switch to system mode
|
||||||
|
CPS #SYS_MODE
|
||||||
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; PL390 GIC interrupt handler
|
; PL390 GIC interrupt handler
|
||||||
|
@ -132,7 +137,7 @@ FreeRTOS_IRQ_Handler
|
||||||
ADD sp, sp, r2
|
ADD sp, sp, r2
|
||||||
|
|
||||||
CPSID i
|
CPSID i
|
||||||
|
|
||||||
; Write the value read from ICCIAR to ICCEOIR
|
; Write the value read from ICCIAR to ICCEOIR
|
||||||
LDR r4, =ulICCEOIR
|
LDR r4, =ulICCEOIR
|
||||||
STR r0, [r4]
|
STR r0, [r4]
|
||||||
|
|
|
@ -104,9 +104,6 @@ IRQ_MODE EQU 0x12
|
||||||
MACRO
|
MACRO
|
||||||
portRESTORE_CONTEXT
|
portRESTORE_CONTEXT
|
||||||
|
|
||||||
; Switch to system mode
|
|
||||||
CPS #SYS_MODE
|
|
||||||
|
|
||||||
; Set the SP to point to the stack of the task being restored.
|
; Set the SP to point to the stack of the task being restored.
|
||||||
LDR R0, =pxCurrentTCB
|
LDR R0, =pxCurrentTCB
|
||||||
LDR R1, [R0]
|
LDR R1, [R0]
|
||||||
|
|
|
@ -74,6 +74,9 @@
|
||||||
/* Library includes. */
|
/* Library includes. */
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
|
/* Hardware specifics. */
|
||||||
|
#include "iodefine.h"
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
/* Tasks should start with interrupts enabled and in Supervisor mode, therefore
|
||||||
|
|
|
@ -3586,24 +3586,32 @@ TickType_t uxReturn;
|
||||||
|
|
||||||
void vTaskIncrementMutexHeldCount( void )
|
void vTaskIncrementMutexHeldCount( void )
|
||||||
{
|
{
|
||||||
/* If xSemaphoreCreateMutex() is called before any tasks have been created
|
#if ( configUSE_MUTEXES == 1 )
|
||||||
then pxCurrentTCB will be NULL. */
|
|
||||||
if( pxCurrentTCB != NULL )
|
|
||||||
{
|
{
|
||||||
( pxCurrentTCB->uxMutexesHeld )++;
|
/* If xSemaphoreCreateMutex() is called before any tasks have been created
|
||||||
|
then pxCurrentTCB will be NULL. */
|
||||||
|
if( pxCurrentTCB != NULL )
|
||||||
|
{
|
||||||
|
( pxCurrentTCB->uxMutexesHeld )++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vTaskDecrementMutexHeldCount( void )
|
void vTaskDecrementMutexHeldCount( void )
|
||||||
{
|
{
|
||||||
/* If xSemaphoreCreateMutex() is called before any tasks have been created
|
#if ( configUSE_MUTEXES == 1 )
|
||||||
then pxCurrentTCB will be NULL. */
|
|
||||||
if( pxCurrentTCB != NULL )
|
|
||||||
{
|
{
|
||||||
configASSERT( pxCurrentTCB->uxMutexesHeld );
|
/* If xSemaphoreCreateMutex() is called before any tasks have been created
|
||||||
( pxCurrentTCB->uxMutexesHeld )--;
|
then pxCurrentTCB will be NULL. */
|
||||||
|
if( pxCurrentTCB != NULL )
|
||||||
|
{
|
||||||
|
configASSERT( pxCurrentTCB->uxMutexesHeld );
|
||||||
|
( pxCurrentTCB->uxMutexesHeld )--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FREERTOS_MODULE_TEST
|
#ifdef FREERTOS_MODULE_TEST
|
||||||
|
|
Loading…
Reference in a new issue