]> git.sur5r.net Git - freertos/commitdiff
Changes to core code and port layer:
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 16 Aug 2016 11:38:58 +0000 (11:38 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 16 Aug 2016 11:38:58 +0000 (11:38 +0000)
    + Add configASSERT() into ARM Cortex-M ports to check the number of priority
      bit settings.
    + Clear the 'control' register before starting ARM Cortex-M4F ports in case
      the FPU is used before the scheduler is started.  This just saves a few
      bytes on the main stack as it prevents space being left for a later save
      of FPU registers.
    + Added xSemaphoreGetMutexHolderFromISR().
    + Corrected use of portNVIC_PENDSVSET to portNVIC_PENDSVSET_BIT in MPU ports.

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

32 files changed:
FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h
FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h
FreeRTOS/Demo/CORTEX_STM32F103_IAR/RTOSDemo.ewd
FreeRTOS/Demo/CORTEX_STM32F103_IAR/RTOSDemo.ewp
FreeRTOS/Demo/WIN32-MingW/.cproject
FreeRTOS/Demo/WIN32-MingW/main.c
FreeRTOS/Source/event_groups.c
FreeRTOS/Source/include/queue.h
FreeRTOS/Source/include/semphr.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/portable/CCS/ARM_CM4F/port.c
FreeRTOS/Source/portable/CCS/ARM_CM4F/portasm.asm
FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
FreeRTOS/Source/portable/GCC/ARM_CM3_MPU/portmacro.h
FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c
FreeRTOS/Source/portable/GCC/ARM_CM4_MPU/port.c
FreeRTOS/Source/portable/GCC/ARM_CM4_MPU/portmacro.h
FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c
FreeRTOS/Source/portable/IAR/ARM_CM3/port.c
FreeRTOS/Source/portable/IAR/ARM_CM4F/port.c
FreeRTOS/Source/portable/IAR/ARM_CM4F/portasm.s
FreeRTOS/Source/portable/IAR/ARM_CM7/r0p1/port.c
FreeRTOS/Source/portable/IAR/ARM_CM7/r0p1/portasm.s
FreeRTOS/Source/portable/MemMang/heap_1.c
FreeRTOS/Source/portable/MikroC/ARM_CM4F/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM4_MPU/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM4_MPU/portmacro.h
FreeRTOS/Source/portable/RVDS/ARM_CM7/r0p1/port.c
FreeRTOS/Source/queue.c
FreeRTOS/Source/tasks.c

index dba5575496776a0e712015fe8a53ee8cc9961649..f004be2d4a46e819d4575ab5f6474d8544e53393 100644 (file)
@@ -137,7 +137,7 @@ to exclude the API function. */
 \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
@@ -148,7 +148,7 @@ FreeRTOS/Source/tasks.c for limitations. */
 #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
@@ -160,9 +160,9 @@ FreeRTOS/Source/tasks.c for limitations. */
 /* !!!! 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
index ae2e208b24fde1873d122c14cf86093230491ba2..bb9a18e6d8ebb4285388997ae24a012c39d85675 100644 (file)
 */\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
@@ -140,7 +140,7 @@ to exclude the API function. */
 \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
@@ -153,7 +153,7 @@ unsigned long ulGetRunTimeCounterValue( void );
 #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
@@ -165,9 +165,9 @@ unsigned long ulGetRunTimeCounterValue( void );
 /* !!!! 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
index d04bd3e5629e4c62c82f7d9776a65c4e7bd05686..b782912015764baa1c81424d9314ca2a5e517e3b 100644 (file)
@@ -12,7 +12,7 @@
       <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
@@ -45,7 +45,7 @@
         </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
index 49da436079992bf7b1b5a7776c8d2073cc76b704..95973e8333f241adc6004fb56bc30d442cf12013 100644 (file)
@@ -12,7 +12,7 @@
       <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
@@ -87,7 +77,7 @@
         </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
@@ -99,7 +89,7 @@
         </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
index 825627beef16f9b8d652cac34d68cc0335220585..2d3483aa2c2d8827c5c3d305512c09d6c0414062 100644 (file)
@@ -5,14 +5,14 @@
                        <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="&quot;${workspace_loc:/${ProjName}/FreeRTOS_Source/include}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/FreeRTOS+Trace Recorder/Include}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Trace_Recorder_Configuration}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Standard_Demo_Tasks/Include}&quot;"/>\r
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/FreeRTOS_Source/portable/MSVC-MingW}&quot;"/>\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
@@ -50,6 +50,9 @@
                                                                <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
index 8e0eccfdad1df7a96a88fd1f5552776bbda5994d..e0ce75931c830d766e2bb67f0f1ad704e04fbb68 100644 (file)
@@ -375,4 +375,3 @@ const HeapRegion_t xHeapRegions[] =
        vPortDefineHeapRegions( xHeapRegions );\r
 }\r
 /*-----------------------------------------------------------*/\r
-\r
index 15ffd644ccb870803abf21ff0cfd5ff1bd68c8c7..3780fe865088156714c448cfae2234fcc528f8d6 100644 (file)
@@ -602,7 +602,7 @@ BaseType_t xMatchFound = pdFALSE;
                                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
@@ -634,8 +634,8 @@ const List_t *pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits );
                {\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
index b96ed5b38a599cb38428bf5df9d1d4565fbc3304..5aaf709d8ab89b876e85b310b75e4007de361230 100644 (file)
@@ -1561,6 +1561,7 @@ QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t
 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
index f9867ae4940762be297865a9a5b9fbf0ca050838..257cc9e907e0898e3d9e65f1f62a37c167c23bf5 100644 (file)
@@ -1154,6 +1154,17 @@ typedef QueueHandle_t SemaphoreHandle_t;
  */\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
index 5e409c8dd8d6a6e75df976041738d0f3843ef4ac..73b740b248a30053e963a4272a167957aac7c1fb 100644 (file)
@@ -2141,14 +2141,14 @@ void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTi
  * 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
@@ -2157,7 +2157,7 @@ void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTi
  * 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
index 65a2a5fad97c99d510c7fab6ad3318f6b75bfbe8..8e92b6ac3ce923b0c16576a03251575fc9e470d5 100644 (file)
@@ -299,6 +299,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index a392583b07b72f59842f7f38d14ae86cd25f5594..a111a00122867e6411e2369f47251440c1c222ca 100644 (file)
@@ -179,6 +179,12 @@ vPortStartFirstTask: .asmfunc
        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
index 960717a573c208d68b9720d59e5da95dfce0c106..ff0abc740915efbe8bce5c90c3828b2e23c0cc9c 100644 (file)
@@ -324,6 +324,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 7b899661dd00e799e6a089eb46c457829b5fb663..b44fe4c057855c4fe3c311a012f280ba3c0f21dd 100644 (file)
@@ -173,7 +173,7 @@ typedef struct MPU_SETTINGS
 \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
@@ -246,7 +246,7 @@ not necessary for to use this port.  They are defined so the common demo files
 /* 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
index 952c60b8bd84a8b73f1330dd18cd89e298c46e71..0d673862d7c5eb2fb0cb7834ea7e3edca2d4c745 100644 (file)
@@ -291,11 +291,17 @@ void vPortSVCHandler( void )
 \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
@@ -354,6 +360,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index babea315fbd1ae2413a49e4d436e8cfe8a4fedd0..06011f799ec3ef5706a9d2bad1591b37832a6ff9 100644 (file)
@@ -374,6 +374,24 @@ BaseType_t xPortStartScheduler( void )
                        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
@@ -407,12 +425,17 @@ BaseType_t xPortStartScheduler( void )
        /* 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
index 7b899661dd00e799e6a089eb46c457829b5fb663..b44fe4c057855c4fe3c311a012f280ba3c0f21dd 100644 (file)
@@ -173,7 +173,7 @@ typedef struct MPU_SETTINGS
 \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
@@ -246,7 +246,7 @@ not necessary for to use this port.  They are defined so the common demo files
 /* 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
index 86fb9cc6bb3afcd6b9ddb465761c8f2d4513df80..e0719c4107ab55590c4879a6608fc31da488a45e 100644 (file)
@@ -285,11 +285,17 @@ void vPortSVCHandler( void )
 \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
@@ -342,6 +348,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 595b49de80be410e58859b0c2bcd1ab696bf6127..2dadf0e4964e4324cb5c3ac82937931de10f6830 100644 (file)
@@ -279,6 +279,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 094965f88dcbb79eea0efba8178f02efd7492877..57b7451f31a0876f53c3f636178381f409abfe1f 100644 (file)
@@ -314,6 +314,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 758d6fa9718a7a65fe516403b289a0c299a4ad11..87d09697ad253e84eb412e68248f5c03474809a5 100644 (file)
@@ -160,6 +160,12 @@ vPortStartFirstTask
        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
index 34a1b25a4762856925107b71815ff4fb2caa2fee..6ffc86f8658754c4a22e5b48048f59d92554b104 100644 (file)
@@ -298,6 +298,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 2ab809a0e3282f3969749c8a2effee1f5e768706..e6414b8b71032a3409fa4d60dc8977303025de26 100644 (file)
@@ -162,6 +162,12 @@ vPortStartFirstTask
        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
index 435c99d05b05494a2e45f17bdc9a4967ba05efc2..ea48ff63ad73108a98f59f216eb977b9941f3b32 100644 (file)
@@ -104,6 +104,7 @@ task.h is included from an application file. */
        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
index bb6993348194d9ef9a8ab304a9282a28db69a83b..451518799613e8f521eab78778acd9023436d4da 100644 (file)
@@ -153,6 +153,7 @@ is defined. */
 #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
@@ -287,7 +288,7 @@ void vPortSVCHandler( void ) iv IVT_INT_SVCall ics ICS_OFF
                        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
@@ -299,8 +300,14 @@ static void prvPortStartFirstTask( void )
        __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
@@ -357,6 +364,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index e15b91a16ce4edb262b0100dcbcd6fca3aa1a2a1..53c39341e15af34c7600ec7b040e5fe3db4525fa 100644 (file)
@@ -325,6 +325,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 6902f97894dd513f91617dc6bfb8c66f1ef124f0..f1b6b29c1571c3b43c900fc2cffe94c0c1d475e1 100644 (file)
@@ -302,6 +302,12 @@ __asm void prvStartFirstTask( void )
        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
@@ -382,6 +388,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 3cd92405651bef9e622790eb0e63fdf7201c53c2..8c7e1ae30038fed0982ea7b64ac20ecb55030127 100644 (file)
@@ -381,6 +381,24 @@ BaseType_t xPortStartScheduler( void )
                        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
@@ -426,11 +444,20 @@ __asm void prvStartFirstTask( void )
 {\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
index 8d441eef6fe207e783dbd0ff58bd837a5c4ec287..3555aa78151dc9e1a373f5b8ab5852485acb65c8 100644 (file)
@@ -179,7 +179,7 @@ typedef struct MPU_SETTINGS
 \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
@@ -273,7 +273,7 @@ static portFORCE_INLINE void vPortClearBASEPRIFromISR( void )
        __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
@@ -326,10 +326,10 @@ BaseType_t xReturn;
 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
index 133f61ea8cca055437f04e8677e03b9c54f5e83a..ca37f577bd96216098ee345390cc1c367eb9a76e 100644 (file)
@@ -296,6 +296,12 @@ __asm void prvStartFirstTask( void )
        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
@@ -366,6 +372,24 @@ BaseType_t xPortStartScheduler( void )
                        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
index 9884658eb9cb79904d8a379f3b0f1534b767244a..e8ae0d307d2f26ccc6d77efe4c37057632218ca2 100644 (file)
@@ -567,6 +567,32 @@ static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseT
 #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
index d2d7b1159e4f3e806c50cdaa784582e73a20a6b5..f101e258eb422d23e5f9bfa0dbb3782e3b7b3cd2 100644 (file)
@@ -2491,7 +2491,7 @@ implementations require configUSE_TICKLESS_IDLE to be set to a value other than
                                mtCOVERAGE_TEST_MARKER();\r
                        }\r
                }\r
-               xTaskResumeAll();\r
+               ( void ) xTaskResumeAll();\r
 \r
                return xReturn;\r
        }\r
@@ -2962,10 +2962,9 @@ BaseType_t xReturn;
 }\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
@@ -2988,22 +2987,12 @@ BaseType_t xReturn;
 \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
@@ -3438,7 +3427,7 @@ static void prvCheckTasksWaitingTermination( void )
                                                pxTaskStatus->eCurrentState = eBlocked;\r
                                        }\r
                                }\r
-                               xTaskResumeAll();\r
+                               ( void ) xTaskResumeAll();\r
                        }\r
                }\r
                #endif /* INCLUDE_vTaskSuspend */\r
@@ -3502,7 +3491,7 @@ static void prvCheckTasksWaitingTermination( void )
 \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