\r
/* This demo makes use of one or more example stats formatting functions. These\r
format the raw data provided by the uxTaskGetSystemState() function in to human\r
-readable ASCII form. See the notes in the implementation of vTaskList() within \r
+readable ASCII form. See the notes in the implementation of vTaskList() within\r
FreeRTOS/Source/tasks.c for limitations. */\r
#define configUSE_STATS_FORMATTING_FUNCTIONS 1\r
\r
#ifdef __NVIC_PRIO_BITS\r
#define configPRIO_BITS __NVIC_PRIO_BITS\r
#else\r
- #define configPRIO_BITS 5 /* 15 priority levels */\r
+ #define configPRIO_BITS 5 /* 31 priority levels */\r
#endif\r
\r
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x1f\r
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!\r
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */\r
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )\r
- \r
-#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } \r
- \r
+\r
+#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }\r
+\r
#define vPortSVCHandler SVC_Handler\r
#define xPortPendSVHandler PendSV_Handler\r
#define vPortSVCHandler SVC_Handler\r
*/\r
\r
\r
-/* \r
+/*\r
* The following #error directive is to remind users that a batch file must be\r
- * executed prior to this project being built. The batch file *cannot* be \r
- * executed from within the IDE! Once it has been executed, re-open or refresh \r
+ * executed prior to this project being built. The batch file *cannot* be\r
+ * executed from within the IDE! Once it has been executed, re-open or refresh\r
* the Eclipse project and remove the #error line below.\r
*/\r
#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above.\r
\r
/* This demo makes use of one or more example stats formatting functions. These\r
format the raw data provided by the uxTaskGetSystemState() function in to human\r
-readable ASCII form. See the notes in the implementation of vTaskList() within \r
+readable ASCII form. See the notes in the implementation of vTaskList() within\r
FreeRTOS/Source/tasks.c for limitations. */\r
#define configUSE_STATS_FORMATTING_FUNCTIONS 1\r
\r
#ifdef __NVIC_PRIO_BITS\r
#define configPRIO_BITS __NVIC_PRIO_BITS\r
#else\r
- #define configPRIO_BITS 5 /* 15 priority levels */\r
+ #define configPRIO_BITS 5 /* 31 priority levels */\r
#endif\r
\r
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x1f\r
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!\r
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */\r
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )\r
- \r
-#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } \r
- \r
+\r
+#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }\r
+\r
#define vPortSVCHandler SVC_Handler\r
#define xPortPendSVHandler PendSV_Handler\r
#define vPortSVCHandler SVC_Handler\r
<name>C-SPY</name>\r
<archiveVersion>2</archiveVersion>\r
<data>\r
- <version>23</version>\r
+ <version>28</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
<option>\r
</option>\r
<option>\r
<name>MemFile</name>\r
- <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\iostm32f10xxb.ddf</state>\r
+ <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32F103ZG.ddf</state>\r
</option>\r
<option>\r
<name>RunToEnable</name>\r
</option>\r
<option>\r
<name>OCLastSavedByProductVersion</name>\r
- <state>6.30.7.53437</state>\r
- </option>\r
- <option>\r
- <name>OCDownloadAttachToProgram</name>\r
- <state>0</state>\r
+ <state>7.60.1.11206</state>\r
</option>\r
<option>\r
<name>UseFlashLoader</name>\r
</option>\r
<option>\r
<name>FlashLoadersV3</name>\r
- <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F10xxB.board</state>\r
+ <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F10xxG.board</state>\r
</option>\r
<option>\r
<name>OCImagesSuppressCheck1</name>\r
<name>OCDeviceConfigMacroFile</name>\r
<state>1</state>\r
</option>\r
+ <option>\r
+ <name>OCDebuggerExtraOption</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>OCAllMTBOptions</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>OCMulticoreNrOfCores</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>OCMulticoreMaster</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>OCMulticorePort</name>\r
+ <state>53461</state>\r
+ </option>\r
+ <option>\r
+ <name>OCMulticoreWorkspace</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>OCMulticoreSlaveProject</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>OCMulticoreSlaveConfiguration</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>OCDownloadExtraImage</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>OCAttachSlave</name>\r
+ <state>0</state>\r
+ </option>\r
</data>\r
</settings>\r
<settings>\r
</option>\r
</data>\r
</settings>\r
+ <settings>\r
+ <name>CMSISDAP_ID</name>\r
+ <archiveVersion>2</archiveVersion>\r
+ <data>\r
+ <version>4</version>\r
+ <wantNonLocal>1</wantNonLocal>\r
+ <debug>1</debug>\r
+ <option>\r
+ <name>OCDriverInfo</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>OCIarProbeScriptFile</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPResetList</name>\r
+ <version>1</version>\r
+ <state>10</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPHWResetDuration</name>\r
+ <state>300</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPHWResetDelay</name>\r
+ <state>200</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPDoLogfile</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPLogFile</name>\r
+ <state>$PROJ_DIR$\cspycomm.log</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPInterfaceRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPInterfaceCmdLine</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPMultiTargetEnable</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPMultiTarget</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPJtagSpeedList</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPBreakpointRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPRestoreBreakpointsCheck</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPUpdateBreakpointsEdit</name>\r
+ <state>_call_main</state>\r
+ </option>\r
+ <option>\r
+ <name>RDICatchReset</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>RDICatchUndef</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>RDICatchSWI</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>RDICatchData</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>RDICatchPrefetch</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>RDICatchIRQ</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>RDICatchFIQ</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchCORERESET</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchMMERR</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchNOCPERR</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchCHKERR</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchSTATERR</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchBUSERR</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchINTERR</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchHARDERR</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CatchDummy</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPMultiCPUEnable</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPMultiCPUNumber</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>OCProbeCfgOverride</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>OCProbeConfig</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPProbeConfigRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CMSISDAPSelectedCPUBehaviour</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>ICpuName</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>OCJetEmuParams</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCMSISDAPUsbSerialNo</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>CCCMSISDAPUsbSerialNoSelect</name>\r
+ <state>0</state>\r
+ </option>\r
+ </data>\r
+ </settings>\r
<settings>\r
<name>GDBSERVER_ID</name>\r
<archiveVersion>2</archiveVersion>\r
</data>\r
</settings>\r
<settings>\r
- <name>JLINK_ID</name>\r
+ <name>IJET_ID</name>\r
<archiveVersion>2</archiveVersion>\r
<data>\r
- <version>14</version>\r
+ <version>8</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
<option>\r
- <name>JLinkSpeed</name>\r
- <state>32</state>\r
+ <name>OCDriverInfo</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCJLinkDoLogfile</name>\r
- <state>0</state>\r
+ <name>OCIarProbeScriptFile</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCJLinkLogFile</name>\r
- <state>$TOOLKIT_DIR$\cspycomm.log</state>\r
+ <name>IjetResetList</name>\r
+ <version>1</version>\r
+ <state>10</state>\r
</option>\r
<option>\r
- <name>CCJLinkHWResetDelay</name>\r
- <state>0</state>\r
+ <name>IjetHWResetDuration</name>\r
+ <state>300</state>\r
</option>\r
<option>\r
- <name>OCDriverInfo</name>\r
- <state>1</state>\r
+ <name>IjetHWResetDelay</name>\r
+ <state>200</state>\r
</option>\r
<option>\r
- <name>JLinkInitialSpeed</name>\r
- <state>32</state>\r
+ <name>IjetPowerFromProbe</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCDoJlinkMultiTarget</name>\r
+ <name>IjetPowerRadio</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCScanChainNonARMDevices</name>\r
+ <name>IjetDoLogfile</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkMultiTarget</name>\r
- <state>0</state>\r
+ <name>IjetLogFile</name>\r
+ <state>$PROJ_DIR$\cspycomm.log</state>\r
</option>\r
<option>\r
- <name>CCJLinkIRLength</name>\r
+ <name>IjetInterfaceRadio</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkCommRadio</name>\r
+ <name>IjetInterfaceCmdLine</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkTCPIP</name>\r
- <state>aaa.bbb.ccc.ddd</state>\r
- </option>\r
- <option>\r
- <name>CCJLinkSpeedRadioV2</name>\r
+ <name>IjetMultiTargetEnable</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCUSBDevice</name>\r
- <version>1</version>\r
- <state>1</state>\r
+ <name>IjetMultiTarget</name>\r
+ <state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchReset</name>\r
+ <name>IjetScanChainNonARMDevices</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchUndef</name>\r
+ <name>IjetIRLength</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchSWI</name>\r
+ <name>IjetJtagSpeedList</name>\r
+ <version>0</version>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchData</name>\r
+ <name>IjetProtocolRadio</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchPrefetch</name>\r
+ <name>IjetSwoPin</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchIRQ</name>\r
- <state>0</state>\r
+ <name>IjetCpuClockEdit</name>\r
+ <state></state>\r
</option>\r
<option>\r
- <name>CCRDICatchFIQ</name>\r
+ <name>IjetSwoPrescalerList</name>\r
+ <version>1</version>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkBreakpointRadio</name>\r
+ <name>IjetBreakpointRadio</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkDoUpdateBreakpoints</name>\r
+ <name>IjetRestoreBreakpointsCheck</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkUpdateBreakpoints</name>\r
- <state>main</state>\r
+ <name>IjetUpdateBreakpointsEdit</name>\r
+ <state>_call_main</state>\r
</option>\r
<option>\r
- <name>CCJLinkInterfaceRadio</name>\r
+ <name>RDICatchReset</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>OCJLinkAttachSlave</name>\r
+ <name>RDICatchUndef</name>\r
<state>1</state>\r
</option>\r
<option>\r
- <name>CCJLinkResetList</name>\r
- <version>6</version>\r
- <state>7</state>\r
+ <name>RDICatchSWI</name>\r
+ <state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkInterfaceCmdLine</name>\r
- <state>0</state>\r
+ <name>RDICatchData</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCCatchCORERESET</name>\r
- <state>0</state>\r
+ <name>RDICatchPrefetch</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCCatchMMERR</name>\r
+ <name>RDICatchIRQ</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCCatchNOCPERR</name>\r
+ <name>RDICatchFIQ</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCCatchCHRERR</name>\r
+ <name>CatchCORERESET</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCCatchSTATERR</name>\r
- <state>0</state>\r
+ <name>CatchMMERR</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCCatchBUSERR</name>\r
- <state>0</state>\r
+ <name>CatchNOCPERR</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCCatchINTERR</name>\r
- <state>0</state>\r
+ <name>CatchCHKERR</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCCatchHARDERR</name>\r
- <state>0</state>\r
+ <name>CatchSTATERR</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCCatchDummy</name>\r
- <state>0</state>\r
+ <name>CatchBUSERR</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>OCJLinkScriptFile</name>\r
+ <name>CatchINTERR</name>\r
<state>1</state>\r
</option>\r
<option>\r
- <name>CCJLinkUsbSerialNo</name>\r
- <state></state>\r
+ <name>CatchHARDERR</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CCTcpIpAlt</name>\r
- <version>0</version>\r
+ <name>CatchDummy</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCJLinkTcpIpSerialNo</name>\r
- <state></state>\r
+ <name>OCProbeCfgOverride</name>\r
+ <state>0</state>\r
</option>\r
<option>\r
- <name>CCCpuClockEdit</name>\r
- <state>72.0</state>\r
+ <name>OCProbeConfig</name>\r
+ <state></state>\r
</option>\r
<option>\r
- <name>CCSwoClockAuto</name>\r
+ <name>IjetProbeConfigRadio</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCSwoClockEdit</name>\r
- <state>2000</state>\r
+ <name>IjetMultiCPUEnable</name>\r
+ <state>0</state>\r
</option>\r
<option>\r
- <name>OCJLinkTraceSource</name>\r
+ <name>IjetMultiCPUNumber</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>IjetSelectedCPUBehaviour</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>ICpuName</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>OCJetEmuParams</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>IjetPreferETB</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>IjetTraceSettingsList</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>IjetTraceSizeList</name>\r
+ <version>0</version>\r
+ <state>2</state>\r
+ </option>\r
+ <option>\r
+ <name>FlashBoardPathSlave</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCIjetUsbSerialNo</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>CCIjetUsbSerialNoSelect</name>\r
+ <state>0</state>\r
+ </option>\r
+ </data>\r
+ </settings>\r
+ <settings>\r
+ <name>JLINK_ID</name>\r
+ <archiveVersion>2</archiveVersion>\r
+ <data>\r
+ <version>16</version>\r
+ <wantNonLocal>1</wantNonLocal>\r
+ <debug>1</debug>\r
+ <option>\r
+ <name>JLinkSpeed</name>\r
+ <state>32</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkDoLogfile</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkLogFile</name>\r
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkHWResetDelay</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>OCDriverInfo</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>JLinkInitialSpeed</name>\r
+ <state>32</state>\r
+ </option>\r
+ <option>\r
+ <name>CCDoJlinkMultiTarget</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCScanChainNonARMDevices</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkMultiTarget</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkIRLength</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkCommRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkTCPIP</name>\r
+ <state>aaa.bbb.ccc.ddd</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkSpeedRadioV2</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCUSBDevice</name>\r
+ <version>1</version>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CCRDICatchReset</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCRDICatchUndef</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCRDICatchSWI</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCRDICatchData</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCRDICatchPrefetch</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCRDICatchIRQ</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCRDICatchFIQ</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkBreakpointRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkDoUpdateBreakpoints</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkUpdateBreakpoints</name>\r
+ <state>main</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkInterfaceRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkResetList</name>\r
+ <version>6</version>\r
+ <state>7</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkInterfaceCmdLine</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchCORERESET</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchMMERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchNOCPERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchCHRERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchSTATERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchBUSERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchINTERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchHARDERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCCatchDummy</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>OCJLinkScriptFile</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkUsbSerialNo</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>CCTcpIpAlt</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCJLinkTcpIpSerialNo</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>CCCpuClockEdit</name>\r
+ <state>72.0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCSwoClockAuto</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCSwoClockEdit</name>\r
+ <state>2000</state>\r
+ </option>\r
+ <option>\r
+ <name>OCJLinkTraceSource</name>\r
<state>0</state>\r
</option>\r
<option>\r
<name>OCJLinkTraceSourceDummy</name>\r
<state>0</state>\r
</option>\r
+ <option>\r
+ <name>OCJLinkDeviceName</name>\r
+ <state>1</state>\r
+ </option>\r
</data>\r
</settings>\r
<settings>\r
<name>PEMICRO_ID</name>\r
<archiveVersion>2</archiveVersion>\r
<data>\r
- <version>0</version>\r
+ <version>3</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
<option>\r
<name>OCDriverInfo</name>\r
<state>1</state>\r
</option>\r
- <option>\r
- <name>OCPEMicroAttachSlave</name>\r
- <state>1</state>\r
- </option>\r
- <option>\r
- <name>CCPEMicroInterfaceList</name>\r
- <version>0</version>\r
- <state>0</state>\r
- </option>\r
- <option>\r
- <name>CCPEMicroResetDelay</name>\r
- <state></state>\r
- </option>\r
- <option>\r
- <name>CCPEMicroJtagSpeed</name>\r
- <state>#UNINITIALIZED#</state>\r
- </option>\r
<option>\r
<name>CCJPEMicroShowSettings</name>\r
<state>0</state>\r
<name>LogFile</name>\r
<state>$PROJ_DIR$\cspycomm.log</state>\r
</option>\r
- <option>\r
- <name>CCPEMicroUSBDevice</name>\r
- <version>0</version>\r
- <state>0</state>\r
- </option>\r
- <option>\r
- <name>CCPEMicroSerialPort</name>\r
- <version>0</version>\r
- <state>0</state>\r
- </option>\r
- <option>\r
- <name>CCJPEMicroTCPIPAutoScanNetwork</name>\r
- <state>1</state>\r
- </option>\r
- <option>\r
- <name>CCPEMicroTCPIP</name>\r
- <state>10.0.0.1</state>\r
- </option>\r
- <option>\r
- <name>CCPEMicroCommCmdLineProducer</name>\r
- <state>0</state>\r
- </option>\r
</data>\r
</settings>\r
<settings>\r
</data>\r
</settings>\r
<settings>\r
- <name>RDIJTAGJET_ID</name>\r
- <archiveVersion>0</archiveVersion>\r
+ <name>STLINK_ID</name>\r
+ <archiveVersion>2</archiveVersion>\r
<data>\r
- <version>1</version>\r
+ <version>3</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
<option>\r
- <name>CRDILogFileCheck</name>\r
- <state>0</state>\r
+ <name>OCDriverInfo</name>\r
+ <state>1</state>\r
</option>\r
<option>\r
- <name>CRDILogFileEdit</name>\r
- <state>$PROJ_DIR$\cspycomm.log</state>\r
+ <name>CCSTLinkInterfaceRadio</name>\r
+ <state>0</state>\r
</option>\r
<option>\r
- <name>CCRDIHWReset</name>\r
+ <name>CCSTLinkInterfaceCmdLine</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchReset</name>\r
+ <name>CCSTLinkResetList</name>\r
+ <version>1</version>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchUndef</name>\r
+ <name>CCCpuClockEdit</name>\r
+ <state>72.0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCSwoClockAuto</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchSWI</name>\r
+ <name>CCSwoClockEdit</name>\r
+ <state>2000</state>\r
+ </option>\r
+ <option>\r
+ <name>DoLogfile</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchData</name>\r
+ <name>LogFile</name>\r
+ <state>$PROJ_DIR$\cspycomm.log</state>\r
+ </option>\r
+ <option>\r
+ <name>CCSTLinkDoUpdateBreakpoints</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchPrefetch</name>\r
+ <name>CCSTLinkUpdateBreakpoints</name>\r
+ <state>_call_main</state>\r
+ </option>\r
+ <option>\r
+ <name>CCSTLinkCatchCORERESET</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchIRQ</name>\r
+ <name>CCSTLinkCatchMMERR</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCRDICatchFIQ</name>\r
+ <name>CCSTLinkCatchNOCPERR</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>OCDriverInfo</name>\r
- <state>1</state>\r
+ <name>CCSTLinkCatchCHRERR</name>\r
+ <state>0</state>\r
</option>\r
<option>\r
- <name>JTAGjetConfigure</name>\r
- <state></state>\r
+ <name>CCSTLinkCatchSTATERR</name>\r
+ <state>0</state>\r
</option>\r
- </data>\r
- </settings>\r
- <settings>\r
- <name>STLINK_ID</name>\r
- <archiveVersion>2</archiveVersion>\r
- <data>\r
- <version>2</version>\r
- <wantNonLocal>1</wantNonLocal>\r
- <debug>1</debug>\r
<option>\r
- <name>OCDriverInfo</name>\r
- <state>1</state>\r
+ <name>CCSTLinkCatchBUSERR</name>\r
+ <state>0</state>\r
</option>\r
<option>\r
- <name>CCSTLinkInterfaceRadio</name>\r
+ <name>CCSTLinkCatchINTERR</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCSTLinkInterfaceCmdLine</name>\r
+ <name>CCSTLinkCatchHARDERR</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCSTLinkResetList</name>\r
- <version>1</version>\r
+ <name>CCSTLinkCatchDummy</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCCpuClockEdit</name>\r
- <state>72.0</state>\r
+ <name>CCSTLinkUsbSerialNo</name>\r
+ <state></state>\r
</option>\r
<option>\r
- <name>CCSwoClockAuto</name>\r
+ <name>CCSTLinkUsbSerialNoSelect</name>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>CCSwoClockEdit</name>\r
- <state>2000</state>\r
+ <name>CCSTLinkJtagSpeedList</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
</option>\r
</data>\r
</settings>\r
</data>\r
</settings>\r
<settings>\r
- <name>XDS100_ID</name>\r
+ <name>TIFET_ID</name>\r
<archiveVersion>2</archiveVersion>\r
<data>\r
<version>1</version>\r
<state>1</state>\r
</option>\r
<option>\r
- <name>OCXDS100AttachSlave</name>\r
+ <name>CCMSPFetResetList</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetInterfaceRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetInterfaceCmdLine</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetTargetVccTypeDefault</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetTargetVoltage</name>\r
+ <state>###Uninitialized###</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetVCCDefault</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetTargetSettlingtime</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetRadioJtagSpeedType</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetConnection</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetUsbComPort</name>\r
+ <state>Automatic</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetAllowAccessToBSL</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetDoLogfile</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetLogFile</name>\r
+ <state>$PROJ_DIR$\cspycomm.log</state>\r
+ </option>\r
+ <option>\r
+ <name>CCMSPFetRadioEraseFlash</name>\r
+ <state>1</state>\r
+ </option>\r
+ </data>\r
+ </settings>\r
+ <settings>\r
+ <name>XDS100_ID</name>\r
+ <archiveVersion>2</archiveVersion>\r
+ <data>\r
+ <version>5</version>\r
+ <wantNonLocal>1</wantNonLocal>\r
+ <debug>1</debug>\r
+ <option>\r
+ <name>OCDriverInfo</name>\r
<state>1</state>\r
</option>\r
<option>\r
<state></state>\r
</option>\r
<option>\r
- <name>CCXds100InterfaceList</name>\r
+ <name>BoardFile</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>DoLogfile</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>LogFile</name>\r
+ <state>$PROJ_DIR$\cspycomm.log</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100BreakpointRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100DoUpdateBreakpoints</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100UpdateBreakpoints</name>\r
+ <state>_call_main</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchReset</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchUndef</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchSWI</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchData</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchPrefetch</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchIRQ</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchFIQ</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchCORERESET</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchMMERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchNOCPERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchCHRERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchSTATERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchBUSERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchINTERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchHARDERR</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CatchDummy</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100CpuClockEdit</name>\r
+ <state></state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100SwoClockAuto</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100SwoClockEdit</name>\r
+ <state>1000</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100HWResetDelay</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100ResetList</name>\r
<version>0</version>\r
<state>0</state>\r
</option>\r
<option>\r
- <name>BoardFile</name>\r
+ <name>CCXds100UsbSerialNo</name>\r
<state></state>\r
</option>\r
+ <option>\r
+ <name>CCXds100UsbSerialNoSelect</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100JtagSpeedList</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100InterfaceRadio</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100InterfaceCmdLine</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCXds100ProbeList</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
</data>\r
</settings>\r
<debuggerPlugins>\r
+ <plugin>\r
+ <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>\r
+ <loadFlag>0</loadFlag>\r
+ </plugin>\r
+ <plugin>\r
+ <file>$TOOLKIT_DIR$\plugins\middleware\PercepioTraceExporter\PercepioTraceExportPlugin.ewplugin</file>\r
+ <loadFlag>0</loadFlag>\r
+ </plugin>\r
<plugin>\r
<file>$TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
<plugin>\r
- <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>\r
+ <file>$TOOLKIT_DIR$\plugins\rtos\FreeRTOS\FreeRtosPlugin.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
<plugin>\r
- <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>\r
+ <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
<plugin>\r
- <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>\r
+ <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
<plugin>\r
- <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>\r
+ <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB7_Plugin.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
<plugin>\r
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
+ <plugin>\r
+ <file>$TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin</file>\r
+ <loadFlag>0</loadFlag>\r
+ </plugin>\r
<plugin>\r
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
<plugin>\r
- <file>$EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin</file>\r
+ <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>\r
<loadFlag>0</loadFlag>\r
</plugin>\r
- <plugin>\r
- <file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>\r
- <loadFlag>1</loadFlag>\r
- </plugin>\r
</debuggerPlugins>\r
</configuration>\r
</project>\r
<name>General</name>\r
<archiveVersion>3</archiveVersion>\r
<data>\r
- <version>21</version>\r
+ <version>24</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
<option>\r
<name>ListPath</name>\r
<state>Debug\List</state>\r
</option>\r
- <option>\r
- <name>Variant</name>\r
- <version>19</version>\r
- <state>37</state>\r
- </option>\r
<option>\r
<name>GEndianMode</name>\r
<state>0</state>\r
<name>GOutputBinary</name>\r
<state>0</state>\r
</option>\r
- <option>\r
- <name>FPU</name>\r
- <version>2</version>\r
- <state>0</state>\r
- </option>\r
<option>\r
<name>OGCoreOrChip</name>\r
<state>1</state>\r
</option>\r
<option>\r
<name>OGLastSavedByProductVersion</name>\r
- <state>6.30.7.53437</state>\r
+ <state>7.60.1.11206</state>\r
</option>\r
<option>\r
<name>GeneralEnableMisra</name>\r
</option>\r
<option>\r
<name>OGChipSelectEditMenu</name>\r
- <state>STM32F10xxB ST STM32F10xxB</state>\r
+ <state>STM32F103ZG ST STM32F103ZG</state>\r
</option>\r
<option>\r
<name>GenLowLevelInterface</name>\r
<name>RTConfigPath2</name>\r
<state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>\r
</option>\r
- <option>\r
- <name>GFPUCoreSlave</name>\r
- <version>19</version>\r
- <state>37</state>\r
- </option>\r
<option>\r
<name>GBECoreSlave</name>\r
- <version>19</version>\r
- <state>37</state>\r
+ <version>24</version>\r
+ <state>38</state>\r
</option>\r
<option>\r
<name>OGUseCmsis</name>\r
<name>OGUseCmsisDspLib</name>\r
<state>0</state>\r
</option>\r
+ <option>\r
+ <name>GRuntimeLibThreads</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CoreVariant</name>\r
+ <version>24</version>\r
+ <state>38</state>\r
+ </option>\r
+ <option>\r
+ <name>GFPUDeviceSlave</name>\r
+ <state>STM32F103ZG ST STM32F103ZG</state>\r
+ </option>\r
+ <option>\r
+ <name>FPU2</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>NrRegs</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>NEON</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>GFPUCoreSlave2</name>\r
+ <version>24</version>\r
+ <state>38</state>\r
+ </option>\r
</data>\r
</settings>\r
<settings>\r
<name>ICCARM</name>\r
<archiveVersion>2</archiveVersion>\r
<data>\r
- <version>28</version>\r
+ <version>31</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
+ <option>\r
+ <name>CCOptimizationNoSizeConstraints</name>\r
+ <state>0</state>\r
+ </option>\r
<option>\r
<name>CCDefines</name>\r
<state>VECT_TAB_FLASH</state>\r
<option>\r
<name>CCAllowList</name>\r
<version>1</version>\r
- <state>0000000</state>\r
+ <state>00000000</state>\r
</option>\r
<option>\r
<name>CCDebugInfo</name>\r
<name>IccFloatSemantics</name>\r
<state>0</state>\r
</option>\r
+ <option>\r
+ <name>CCNoLiteralPool</name>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCOptStrategySlave</name>\r
+ <version>0</version>\r
+ <state>0</state>\r
+ </option>\r
+ <option>\r
+ <name>CCGuardCalls</name>\r
+ <state>1</state>\r
+ </option>\r
</data>\r
</settings>\r
<settings>\r
<name>AARM</name>\r
<archiveVersion>2</archiveVersion>\r
<data>\r
- <version>8</version>\r
+ <version>9</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
<option>\r
<name>AExtraOptionsV2</name>\r
<state></state>\r
</option>\r
+ <option>\r
+ <name>AsmNoLiteralPool</name>\r
+ <state>0</state>\r
+ </option>\r
</data>\r
</settings>\r
<settings>\r
<debug>1</debug>\r
<option>\r
<name>OOCOutputFormat</name>\r
- <version>2</version>\r
+ <version>3</version>\r
<state>0</state>\r
</option>\r
<option>\r
<data>\r
<extensions></extensions>\r
<cmdline></cmdline>\r
+ <hasPrio>0</hasPrio>\r
</data>\r
</settings>\r
<settings>\r
<name>ILINK</name>\r
<archiveVersion>0</archiveVersion>\r
<data>\r
- <version>15</version>\r
+ <version>17</version>\r
<wantNonLocal>1</wantNonLocal>\r
<debug>1</debug>\r
<option>\r
<version>0</version>\r
<state>0</state>\r
</option>\r
+ <option>\r
+ <name>IlinkThreadsSlave</name>\r
+ <state>1</state>\r
+ </option>\r
+ <option>\r
+ <name>IlinkLogCallGraph</name>\r
+ <state>0</state>\r
+ </option>\r
</data>\r
</settings>\r
<settings>\r
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.396692239" moduleId="org.eclipse.cdt.core.settings" name="Debug">\r
<externalSettings/>\r
<extensions>\r
+ <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>\r
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>\r
- <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>\r
</extensions>\r
</storageModule>\r
<storageModule moduleId="cdtBuildSystem" version="4.0.0">\r
- <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.396692239" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug">\r
+ <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.396692239" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug">\r
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.396692239." name="/" resourcePath="">\r
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.1619684599" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug">\r
<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.1827277435" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/>\r
</tool>\r
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.867063893" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>\r
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.1190873987" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug">\r
- <option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.40398864" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>\r
- <option id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.375002745" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>\r
+ <option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.40398864" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>\r
+ <option id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.375002745" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>\r
</tool>\r
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1285167012" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug">\r
- <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.426701341" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" value="gnu.c.optimization.level.none" valueType="enumerated"/>\r
- <option id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.514946732" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>\r
- <option id="gnu.c.compiler.option.include.paths.1474487302" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">\r
+ <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.426701341" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.c.optimization.level.none" valueType="enumerated"/>\r
+ <option id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.514946732" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>\r
+ <option id="gnu.c.compiler.option.include.paths.1474487302" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">\r
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/include}""/>\r
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS+Trace Recorder/Include}""/>\r
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Trace_Recorder_Configuration}""/>\r
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Standard_Demo_Tasks/Include}""/>\r
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/FreeRTOS_Source/portable/MSVC-MingW}""/>\r
</option>\r
- <option id="gnu.c.compiler.option.debugging.prof.53374762" name="Generate prof information (-p)" superClass="gnu.c.compiler.option.debugging.prof" value="false" valueType="boolean"/>\r
- <option id="gnu.c.compiler.option.warnings.extrawarn.1804262134" name="Extra warnings (-Wextra)" superClass="gnu.c.compiler.option.warnings.extrawarn" value="true" valueType="boolean"/>\r
- <option id="gnu.c.compiler.option.misc.other.1931924410" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0" valueType="string"/>\r
- <option id="gnu.c.compiler.option.debugging.gprof.444112294" name="Generate gprof information (-pg)" superClass="gnu.c.compiler.option.debugging.gprof" value="false" valueType="boolean"/>\r
+ <option id="gnu.c.compiler.option.debugging.prof.53374762" name="Generate prof information (-p)" superClass="gnu.c.compiler.option.debugging.prof" useByScannerDiscovery="false" value="false" valueType="boolean"/>\r
+ <option id="gnu.c.compiler.option.warnings.extrawarn.1804262134" name="Extra warnings (-Wextra)" superClass="gnu.c.compiler.option.warnings.extrawarn" useByScannerDiscovery="false" value="true" valueType="boolean"/>\r
+ <option id="gnu.c.compiler.option.misc.other.1931924410" name="Other flags" superClass="gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-c -fmessage-length=0 -Wcast-qual" valueType="string"/>\r
+ <option id="gnu.c.compiler.option.debugging.gprof.444112294" name="Generate gprof information (-pg)" superClass="gnu.c.compiler.option.debugging.gprof" useByScannerDiscovery="false" value="false" valueType="boolean"/>\r
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.974248912" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>\r
</tool>\r
<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.2080839343" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug">\r
<option id="gnu.c.link.option.noshared.628613709" name="No shared libraries (-static)" superClass="gnu.c.link.option.noshared" value="false" valueType="boolean"/>\r
<option id="gnu.c.link.option.debugging.prof.1514831674" name="Generate prof information (-p)" superClass="gnu.c.link.option.debugging.prof" value="false" valueType="boolean"/>\r
<option id="gnu.c.link.option.debugging.gprof.1432524618" name="Generate gprof information (-pg)" superClass="gnu.c.link.option.debugging.gprof" value="false" valueType="boolean"/>\r
+ <option id="gnu.c.link.option.other.75811299" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList">\r
+ <listOptionValue builtIn="false" value="-Map=rtosdemo.map"/>\r
+ </option>\r
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1912714899" superClass="cdt.managedbuild.tool.gnu.c.linker.input">\r
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>\r
<additionalInput kind="additionalinput" paths="$(LIBS)"/>\r
vPortDefineHeapRegions( xHeapRegions );\r
}\r
/*-----------------------------------------------------------*/\r
-\r
eventUNBLOCKED_DUE_TO_BIT_SET bit is set so the task knows\r
that is was unblocked due to its required bits matching, rather\r
than because it timed out. */\r
- ( void ) xTaskRemoveFromUnorderedEventList( pxListItem, pxEventBits->uxEventBits | eventUNBLOCKED_DUE_TO_BIT_SET );\r
+ vTaskRemoveFromUnorderedEventList( pxListItem, pxEventBits->uxEventBits | eventUNBLOCKED_DUE_TO_BIT_SET );\r
}\r
\r
/* Move onto the next list item. Note pxListItem->pxNext is not\r
{\r
/* Unblock the task, returning 0 as the event list is being deleted\r
and cannot therefore have any bits set. */\r
- configASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) );\r
- ( void ) xTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET );\r
+ configASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( const ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) );\r
+ vTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET );\r
}\r
\r
#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) )\r
QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;\r
QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;\r
void* xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;\r
+void* xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;\r
\r
/*\r
* For internal use only. Use xSemaphoreTakeMutexRecursive() or\r
*/\r
#define xSemaphoreGetMutexHolder( xSemaphore ) xQueueGetMutexHolder( ( xSemaphore ) )\r
\r
+/**\r
+ * semphr.h\r
+ * <pre>TaskHandle_t xSemaphoreGetMutexHolderFromISR( SemaphoreHandle_t xMutex );</pre>\r
+ *\r
+ * If xMutex is indeed a mutex type semaphore, return the current mutex holder.\r
+ * If xMutex is not a mutex type semaphore, or the mutex is available (not held\r
+ * by a task), return NULL.\r
+ *\r
+ */\r
+#define xSemaphoreGetMutexHolderFromISR( xSemaphore ) xQueueGetMutexHolderFromISR( ( xSemaphore ) )\r
+\r
/**\r
* semphr.h\r
* <pre>UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore );</pre>\r
* Removes a task from both the specified event list and the list of blocked\r
* tasks, and places it on a ready queue.\r
*\r
- * xTaskRemoveFromEventList()/xTaskRemoveFromUnorderedEventList() will be called\r
+ * xTaskRemoveFromEventList()/vTaskRemoveFromUnorderedEventList() will be called\r
* if either an event occurs to unblock a task, or the block timeout period\r
* expires.\r
*\r
* xTaskRemoveFromEventList() is used when the event list is in task priority\r
* order. It removes the list item from the head of the event list as that will\r
* have the highest priority owning task of all the tasks on the event list.\r
- * xTaskRemoveFromUnorderedEventList() is used when the event list is not\r
+ * vTaskRemoveFromUnorderedEventList() is used when the event list is not\r
* ordered and the event list items hold something other than the owning tasks\r
* priority. In this case the event list item value is updated to the value\r
* passed in the xItemValue parameter.\r
* making the call, otherwise pdFALSE.\r
*/\r
BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) PRIVILEGED_FUNCTION;\r
-BaseType_t xTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue ) PRIVILEGED_FUNCTION;\r
+void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue ) PRIVILEGED_FUNCTION;\r
\r
/*\r
* THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+ \r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ldr r0, [r0]\r
;/* Set the msp back to the start of the stack. */\r
msr msp, r0\r
+ ;/* Clear the bit that indicates the FPU is in use in case the FPU was used\r
+ ;before the scheduler was started - which would otherwise result in the\r
+ ;unnecessary leaving of space in the SVC stack for lazy saving of FPU\r
+ ;registers. */\r
+ mov r0, #0\r
+ msr control, r0\r
;/* Call SVC to start the first task. */\r
cpsie i\r
cpsie f\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
\r
#define portNVIC_INT_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed04 ) )\r
#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL )\r
-#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET\r
+#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT\r
#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )\r
/*-----------------------------------------------------------*/\r
\r
/* Set the privilege level to user mode if xRunningPrivileged is false. */\r
portFORCE_INLINE static void vPortResetPrivilege( BaseType_t xRunningPrivileged )\r
{\r
- if( xRunningPrivileged != pdTRUE ) \r
+ if( xRunningPrivileged != pdTRUE )\r
{\r
__asm volatile ( " mrs r0, control \n" \\r
" orr r0, #1 \n" \\r
\r
static void prvPortStartFirstTask( void )\r
{\r
+ /* Start the first task. This also clears the bit that indicates the FPU is\r
+ in use in case the FPU was used before the scheduler was started - which\r
+ would otherwise result in the unnecessary leaving of space in the SVC stack\r
+ for lazy saving of FPU registers. */\r
__asm volatile(\r
" ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */\r
" ldr r0, [r0] \n"\r
" ldr r0, [r0] \n"\r
" msr msp, r0 \n" /* Set the msp back to the start of the stack. */\r
+ " mov r0, #0 \n" /* Clear the bit that indicates the FPU is in use, see comment above. */\r
+ " msr control, r0 \n"\r
" cpsie i \n" /* Globally enable interrupts. */\r
" cpsie f \n"\r
" dsb \n"\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
/* Lazy save always. */\r
*( portFPCCR ) |= portASPEN_AND_LSPEN_BITS;\r
\r
- /* Start the first task. */\r
+ /* Start the first task. This also clears the bit that indicates the FPU is \r
+ in use in case the FPU was used before the scheduler was started - which \r
+ would otherwise result in the unnecessary leaving of space in the SVC stack \r
+ for lazy saving of FPU registers. */\r
__asm volatile(\r
" ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */\r
" ldr r0, [r0] \n"\r
" ldr r0, [r0] \n"\r
" msr msp, r0 \n" /* Set the msp back to the start of the stack. */\r
+ " mov r0, #0 \n" /* Clear the bit that indicates the FPU is in use, see comment above. */\r
+ " msr control, r0 \n"\r
" cpsie i \n" /* Globally enable interrupts. */\r
" cpsie f \n"\r
" dsb \n"\r
\r
#define portNVIC_INT_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed04 ) )\r
#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL )\r
-#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET\r
+#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT\r
#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )\r
/*-----------------------------------------------------------*/\r
\r
/* Set the privilege level to user mode if xRunningPrivileged is false. */\r
portFORCE_INLINE static void vPortResetPrivilege( BaseType_t xRunningPrivileged )\r
{\r
- if( xRunningPrivileged != pdTRUE ) \r
+ if( xRunningPrivileged != pdTRUE )\r
{\r
__asm volatile ( " mrs r0, control \n" \\r
" orr r0, #1 \n" \\r
\r
static void prvPortStartFirstTask( void )\r
{\r
+ /* Start the first task. This also clears the bit that indicates the FPU is\r
+ in use in case the FPU was used before the scheduler was started - which\r
+ would otherwise result in the unnecessary leaving of space in the SVC stack\r
+ for lazy saving of FPU registers. */\r
__asm volatile(\r
" ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */\r
" ldr r0, [r0] \n"\r
" ldr r0, [r0] \n"\r
" msr msp, r0 \n" /* Set the msp back to the start of the stack. */\r
+ " mov r0, #0 \n" /* Clear the bit that indicates the FPU is in use, see comment above. */\r
+ " msr control, r0 \n"\r
" cpsie i \n" /* Globally enable interrupts. */\r
" cpsie f \n"\r
" dsb \n"\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ldr r0, [r0]\r
/* Set the msp back to the start of the stack. */\r
msr msp, r0\r
+ /* Clear the bit that indicates the FPU is in use in case the FPU was used\r
+ before the scheduler was started - which would otherwise result in the\r
+ unnecessary leaving of space in the SVC stack for lazy saving of FPU\r
+ registers. */\r
+ mov r0, #0\r
+ msr control, r0\r
/* Call SVC to start the first task. */\r
cpsie i\r
cpsie f\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ldr r0, [r0]\r
/* Set the msp back to the start of the stack. */\r
msr msp, r0\r
+ /* Clear the bit that indicates the FPU is in use in case the FPU was used\r
+ before the scheduler was started - which would otherwise result in the\r
+ unnecessary leaving of space in the SVC stack for lazy saving of FPU\r
+ registers. */\r
+ mov r0, #0\r
+ msr control, r0\r
/* Call SVC to start the first task. */\r
cpsie i\r
cpsie f\r
static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];\r
#endif /* configAPPLICATION_ALLOCATED_HEAP */\r
\r
+/* Index into the ucHeap array. */\r
static size_t xNextFreeByte = ( size_t ) 0;\r
\r
/*-----------------------------------------------------------*/\r
#define basepri 17\r
#define msp 8\r
#define ipsr 5\r
+#define control 20\r
\r
/* From port.c. */\r
extern void *pxCurrentTCB;\r
ldm r0!, (r4-r11, r14)/* Pop the registers that are not automatically saved on exception entry and the critical nesting count. */\r
msr psp, r0 /* Restore the task stack pointer. */\r
isb\r
- mov r0, #0\r
+ mov r0, #0\r
msr basepri, r0\r
bx r14\r
};\r
__asm {\r
ldr r0, =0xE000ED08 /* Use the NVIC offset register to locate the stack. */\r
ldr r0, [r0]\r
- ldr r0, [r0]\r
+ ldr r0, [r0]\r
msr msp, r0 /* Set the msp back to the start of the stack. */\r
+ /* Clear the bit that indicates the FPU is in use in case the FPU was used\r
+ before the scheduler was started - which would otherwise result in the\r
+ unnecessary leaving of space in the SVC stack for lazy saving of FPU\r
+ registers. */\r
+ mov r0, #0\r
+ msr control, r0\r
cpsie i /* Globally enable interrupts. */\r
cpsie f\r
dsb\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ldr r0, [r0]\r
/* Set the msp back to the start of the stack. */\r
msr msp, r0\r
+ /* Clear the bit that indicates the FPU is in use in case the FPU was used\r
+ before the scheduler was started - which would otherwise result in the\r
+ unnecessary leaving of space in the SVC stack for lazy saving of FPU\r
+ registers. */\r
+ mov r0, #0\r
+ msr control, r0\r
/* Globally enable interrupts. */\r
cpsie i\r
cpsie f\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
{\r
PRESERVE8\r
\r
- ldr r0, =0xE000ED08 /* Use the NVIC offset register to locate the stack. */\r
+ /* Use the NVIC offset register to locate the stack. */\r
+ ldr r0, =0xE000ED08\r
ldr r0, [r0]\r
ldr r0, [r0]\r
- msr msp, r0 /* Set the msp back to the start of the stack. */\r
- cpsie i /* Globally enable interrupts. */\r
+ /* Set the msp back to the start of the stack. */\r
+ msr msp, r0\r
+ /* Clear the bit that indicates the FPU is in use in case the FPU was used\r
+ before the scheduler was started - which would otherwise result in the\r
+ unnecessary leaving of space in the SVC stack for lazy saving of FPU\r
+ registers. */\r
+ mov r0, #0\r
+ msr control, r0\r
+ /* Globally enable interrupts. */\r
+ cpsie i\r
cpsie f\r
dsb\r
isb\r
\r
#define portNVIC_INT_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed04 ) )\r
#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL )\r
-#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET\r
+#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT\r
#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )\r
/*-----------------------------------------------------------*/\r
\r
__asm\r
{\r
/* Set BASEPRI to 0 so no interrupts are masked. This function is only\r
- used to lower the mask in an interrupt, so memory barriers are not \r
+ used to lower the mask in an interrupt, so memory barriers are not\r
used. */\r
msr basepri, #0\r
}\r
portFORCE_INLINE static void vPortResetPrivilege( BaseType_t xRunningPrivileged )\r
{\r
uint32_t ulReg;\r
- \r
- if( xRunningPrivileged != pdTRUE ) \r
+\r
+ if( xRunningPrivileged != pdTRUE )\r
{\r
- __asm \r
+ __asm\r
{\r
mrs ulReg, control\r
orr ulReg, #1\r
ldr r0, [r0]\r
/* Set the msp back to the start of the stack. */\r
msr msp, r0\r
+ /* Clear the bit that indicates the FPU is in use in case the FPU was used\r
+ before the scheduler was started - which would otherwise result in the\r
+ unnecessary leaving of space in the SVC stack for lazy saving of FPU\r
+ registers. */\r
+ mov r0, #0\r
+ msr control, r0\r
/* Globally enable interrupts. */\r
cpsie i\r
cpsie f\r
ucMaxPriorityValue <<= ( uint8_t ) 0x01;\r
}\r
\r
+ #ifdef __NVIC_PRIO_BITS\r
+ {\r
+ /* Check the CMSIS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS );\r
+ }\r
+ #endif\r
+\r
+ #ifdef configPRIO_BITS\r
+ {\r
+ /* Check the FreeRTOS configuration that defines the number of\r
+ priority bits matches the number of priority bits actually queried\r
+ from the hardware. */\r
+ configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );\r
+ }\r
+ #endif\r
+\r
/* Shift the priority group value back to its position within the AIRCR\r
register. */\r
ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;\r
#endif\r
/*-----------------------------------------------------------*/\r
\r
+#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )\r
+\r
+ void* xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore )\r
+ {\r
+ void *pxReturn;\r
+\r
+ configASSERT( xSemaphore );\r
+\r
+ /* Mutexes cannot be used in interrupt service routines, so the mutex\r
+ holder should not change in an ISR, and therefore a critical section is\r
+ not required here. */\r
+ if( ( ( Queue_t * ) xSemaphore )->uxQueueType == queueQUEUE_IS_MUTEX )\r
+ {\r
+ pxReturn = ( void * ) ( ( Queue_t * ) xSemaphore )->pxMutexHolder;\r
+ }\r
+ else\r
+ {\r
+ pxReturn = NULL;\r
+ }\r
+\r
+ return pxReturn;\r
+ } /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */\r
+\r
+#endif\r
+/*-----------------------------------------------------------*/\r
+\r
#if ( configUSE_RECURSIVE_MUTEXES == 1 )\r
\r
BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex )\r
mtCOVERAGE_TEST_MARKER();\r
}\r
}\r
- xTaskResumeAll();\r
+ ( void ) xTaskResumeAll();\r
\r
return xReturn;\r
}\r
}\r
/*-----------------------------------------------------------*/\r
\r
-BaseType_t xTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue )\r
+void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue )\r
{\r
TCB_t *pxUnblockedTCB;\r
-BaseType_t xReturn;\r
\r
/* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. It is used by\r
the event flags implementation. */\r
\r
if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority )\r
{\r
- /* Return true if the task removed from the event list has\r
- a higher priority than the calling task. This allows\r
- the calling task to know if it should force a context\r
- switch now. */\r
- xReturn = pdTRUE;\r
-\r
- /* Mark that a yield is pending in case the user is not using the\r
- "xHigherPriorityTaskWoken" parameter to an ISR safe FreeRTOS function. */\r
+ /* The unblocked task has a priority above that of the calling task, so\r
+ a context switch is required. This function is called with the\r
+ scheduler suspended so xYieldPending is set so the context switch\r
+ occurs immediately that the scheduler is resumed (unsuspended). */\r
xYieldPending = pdTRUE;\r
}\r
- else\r
- {\r
- xReturn = pdFALSE;\r
- }\r
-\r
- return xReturn;\r
}\r
/*-----------------------------------------------------------*/\r
\r
pxTaskStatus->eCurrentState = eBlocked;\r
}\r
}\r
- xTaskResumeAll();\r
+ ( void ) xTaskResumeAll();\r
}\r
}\r
#endif /* INCLUDE_vTaskSuspend */\r
\r
static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState )\r
{\r
- volatile TCB_t *pxNextTCB, *pxFirstTCB;\r
+ configLIST_VOLATILE TCB_t *pxNextTCB, *pxFirstTCB;\r
UBaseType_t uxTask = 0;\r
\r
if( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 )\r