]> git.sur5r.net Git - freertos/commitdiff
xTaskGetTaskHandle() changed to xTaskGetHandle().
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 15 Apr 2016 11:48:07 +0000 (11:48 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 15 Apr 2016 11:48:07 +0000 (11:48 +0000)
Tidy up CEC1302 demo.
Ensure bit 0 of the task address is clear when setting up stack of initial Cortex-M3/4/7 stacks (for strict compliance, although not practically necessary).
vTaskGetTaskInfo() changed to vTaskGetInfo() - with a macro added for backward compatibility.

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

30 files changed:
FreeRTOS/Demo/CORTEX_A5_SAMA5D2x_Xplained_IAR/Full_Demo/IntQueueTimer.c
FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/FreeRTOSConfig.h
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil_GCC/FreeRTOSConfig.h
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil_GCC/GCC_Specific/RTOSDemo.uvguix.barryri
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil_GCC/GCC_Specific/RTOSDemo.uvoptx
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil_GCC/main.c
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil_GCC/main_full/IntQueueTimer.c
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil_GCC/main_full/main_full.c
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil_GCC/main_low_power/low_power_tick_config.c
FreeRTOS/Demo/Common/Minimal/AbortDelay.c
FreeRTOS/Demo/WIN32-MSVC-Static-Allocation-Only/FreeRTOSConfig.h
FreeRTOS/Demo/WIN32-MSVC/FreeRTOSConfig.h
FreeRTOS/Demo/WIN32-MSVC/main_full.c
FreeRTOS/Demo/WIN32-MingW/FreeRTOSConfig.h
FreeRTOS/Source/include/FreeRTOS.h
FreeRTOS/Source/include/semphr.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/portable/CCS/ARM_CM4F/port.c
FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c
FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c
FreeRTOS/Source/portable/GCC/ARM_CR5/port.c
FreeRTOS/Source/portable/IAR/ARM_CM3/port.c
FreeRTOS/Source/portable/IAR/ARM_CM4F/port.c
FreeRTOS/Source/portable/IAR/ARM_CM7/r0p1/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM7/r0p1/port.c
FreeRTOS/Source/portable/Tasking/ARM_CM4F/port.c
FreeRTOS/Source/tasks.c

index 445fc8e506365f3372b461ea9477fb1c9a12a0bb..f88b38820fcae6c9d0484fb6bcc7585d9da4b7ba 100644 (file)
@@ -157,8 +157,8 @@ void vInitialiseTimerForIntQueueTest( void )
 \r
        /* Configure TC1 channel 0 tmrTIMER_2_FREQUENCY frequency and trigger on\r
        RC compare. */\r
-       tc_trigger_on_freq( TC1, tmrTC0_CHANNEL_0, tmrTIMER_2_FREQUENCY );\r
-       TC1->TC_CHANNEL[ tmrTC0_CHANNEL_0 ].TC_IER = TC_IER_CPCS;\r
+       tc_trigger_on_freq( TC1, tmrTC1_CHANNEL_0, tmrTIMER_2_FREQUENCY );\r
+       TC1->TC_CHANNEL[ tmrTC1_CHANNEL_0 ].TC_IER = TC_IER_CPCS;\r
 \r
        /* Enable interrupts and start the timers. */\r
        aic_configure( ID_TC0, tmrLOWER_PRIORITY );\r
index 0636ea704da18c0890562d3a39fca6b7359623d1..6c4f5c4bd1dca117e642b2af8d3582dfe1be516f 100644 (file)
@@ -157,7 +157,7 @@ to exclude the API function. */
 #define INCLUDE_xTimerPendFunctionCall                 1\r
 #define INCLUDE_eTaskGetState                                  1\r
 #define INCLUDE_xTaskAbortDelay                                        1\r
-#define INCLUDE_xTaskGetTaskHandle                             1\r
+#define INCLUDE_xTaskGetHandle                                 1\r
 \r
 /* This demo makes use of one or more example stats formatting functions.  These\r
 format the raw data provided by the uxTaskGetSystemState() function in to human\r
index 625a39c20ef50a4bb9582c02bf781dcb27a47b6e..984dea1a183ad0e6bbbb12e44bedbfc3d52206ec 100644 (file)
@@ -91,7 +91,7 @@ extern "C" {
 /* Set configCREATE_LOW_POWER_DEMO to one to run the simple blinky demo low power\r
 example, or 1 to run the more comprehensive test and demo application.  See\r
 the comments at the top of main.c for more information. */\r
-#define configCREATE_LOW_POWER_DEMO    1\r
+#define configCREATE_LOW_POWER_DEMO    0\r
 \r
 /* Some configuration is dependent on the demo being built. */\r
 #if( configCREATE_LOW_POWER_DEMO == 1 )\r
index 111b4c0a1304f83a1972d619492bbe6fe1872577..332cfb365d50c77169db4a62a98a089d83ee23a5 100644 (file)
@@ -92,8 +92,8 @@
     <MDIClientArea>
       <RegID>0</RegID>
       <MDITabState>
-        <Len>270</Len>
-        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000004A433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C44656D6F5C434F525445585F4D34465F434543313330325F4B65696C5C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000340100005E000000800700006E030000</Data>
+        <Len>274</Len>
+        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000004E433A5C455C4465765C4672656552544F535C576F726B696E67436F70795C4672656552544F535C44656D6F5C434F525445585F4D34465F434543313330325F4B65696C5F4743435C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000340100005E000000800700006E030000</Data>
       </MDITabState>
     </MDIClientArea>
     <ViewEx>
         <RegID>59392</RegID>
         <Name>File</Name>
         <Buttons>
-          <Len>2323</Len>
-          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000105F5F61736D20766F6C6174696C65202896000000000000001400105F5F61736D20766F6C6174696C6520280008707276456E61626C08707276536C6565701470727644697361626C65496E7465727275707473087469636B686F6F6B08626C6F636B696E6706626C6F636B7106726563757273087265636D757465780A537461636B5F53697A65114E5649435F48616E646C65725F544D52300B6274696D65725F696E69740F5379735469636B5F48616E646C6572077379737469636B1278506F727450656E64535648616E646C65720670656E6473760B785461736B4372656174650A737461727473636865640C6D616C6C6F636661696C65640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
+          <Len>2098</Len>
+          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000204D4D43525F5043525F50524F434553534F525F434C4F434B5F434F4E54524F4C960000000000000002001678506F72744973496E73696465496E74657272757074204D4D43525F5043525F50524F434553534F525F434C4F434B5F434F4E54524F4C0000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
         </Buttons>
         <OriginalItems>
           <Len>1423</Len>
         <RegID>59392</RegID>
         <Name>File</Name>
         <Buttons>
-          <Len>2323</Len>
-          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000105F5F61736D20766F6C6174696C65202896000000000000001400105F5F61736D20766F6C6174696C6520280008707276456E61626C08707276536C6565701470727644697361626C65496E7465727275707473087469636B686F6F6B08626C6F636B696E6706626C6F636B7106726563757273087265636D757465780A537461636B5F53697A65114E5649435F48616E646C65725F544D52300B6274696D65725F696E69740F5379735469636B5F48616E646C6572077379737469636B1278506F727450656E64535648616E646C65720670656E6473760B785461736B4372656174650A737461727473636865640C6D616C6C6F636661696C65640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
+          <Len>2071</Len>
+          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000204D4D43525F5043525F50524F434553534F525F434C4F434B5F434F4E54524F4C96000000000000000100204D4D43525F5043525F50524F434553534F525F434C4F434B5F434F4E54524F4C00000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020003001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000</Data>
         </Buttons>
         <OriginalItems>
           <Len>1423</Len>
         <Name>Debug</Name>
         <Buttons>
           <Len>2236</Len>
-          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B000000000000310000000857617463682026320000000000000000000000000100000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F727920263400000000000000000000000001000000010000000000000000000000010000000000138010010000020000003300000008554152542023263100000000000000000000000001000000010000000000000000000000010000000400138093070000000000003300000008554152542023263100000000000000000000000001000000010000000000000000000000010000000000138094070000000000003300000008554152542023263200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000008554152542023263300000000000000000000000001000000010000000000000000000000010000000000138096070000000000003300000015446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7200000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
+          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B000000000000310000000857617463682026320000000000000000000000000100000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F727920263400000000000000000000000001000000010000000000000000000000010000000000138010010000020000003300000008554152542023263100000000000000000000000001000000010000000000000000000000010000000400138093070000000000003300000008554152542023263100000000000000000000000001000000010000000000000000000000010000000000138094070000000000003300000008554152542023263200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000008554152542023263300000000000000000000000001000000010000000000000000000000010000000000138096070000000000003300000015446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F7201000000000000000100000000000000010000000000000000000000010000000000000000000544656275673C020000</Data>
         </Buttons>
         <OriginalItems>
           <Len>898</Len>
       <Doc>
         <Name>..\main.c</Name>
         <ColumnNumber>0</ColumnNumber>
-        <TopLine>66</TopLine>
-        <CurrentLine>141</CurrentLine>
+        <TopLine>67</TopLine>
+        <CurrentLine>142</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
index e4186479a0f1fc9b0de9fabf4a895d1a43b9b382..f4ca31c1b067150f934ee54f7578e8385add94d2 100644 (file)
@@ -73,7 +73,7 @@
         <LExpSel>0</LExpSel>
       </OPTXL>
       <OPTFL>
-        <tvExp>1</tvExp>
+        <tvExp>0</tvExp>
         <tvExpOptDlg>0</tvExpOptDlg>
         <IsCurrentTarget>1</IsCurrentTarget>
       </OPTFL>
 
   <Group>
     <GroupName>System</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
       <GroupNumber>5</GroupNumber>
       <FileNumber>24</FileNumber>
       <FileType>1</FileType>
-      <tvExp>0</tvExp>
+      <tvExp>1</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\main_full\IntQueueTimer.c</PathWithFileName>
index 37ada59901edc7c0e88a474f24a5a3b2329def8a..4c843fa189df0cf42c98702c7e89b54a1ab0ba5a 100644 (file)
@@ -90,8 +90,9 @@
 #include "task.h"\r
 \r
 /* Hardware register addresses. */\r
-#define mainVTOR                       ( * ( uint32_t * ) 0xE000ED08 )\r
-#define mainNVIC_AUX_ACTLR     ( * ( uint32_t * ) 0xE000E008 )\r
+#define mainVTOR                                       ( * ( uint32_t * ) 0xE000ED08 )\r
+#define mainNVIC_AUX_ACTLR                     ( * ( uint32_t * ) 0xE000E008 )\r
+#define mainEC_INTERRUPT_CONTROL       ( * ( volatile uint32_t * ) 0x4000FC18 )\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -163,12 +164,15 @@ static void prvSetupHardware( void )
 {\r
 extern void system_set_ec_clock( void );\r
 extern unsigned long __Vectors[];\r
-       \r
+\r
        /* Disable M4 write buffer: fix MEC1322 hardware bug. */\r
        mainNVIC_AUX_ACTLR |= 0x07;\r
 \r
+       /* Enable alternative NVIC vectors. */\r
+       mainEC_INTERRUPT_CONTROL = pdTRUE;\r
+\r
        system_set_ec_clock();\r
-       \r
+\r
        /* Assuming downloading code via the debugger - so ensure the hardware\r
        is using the vector table downloaded with the application. */\r
        mainVTOR = ( uint32_t ) __Vectors;\r
index bdc8e3d69fc97e66ff4cc92d2ea64b95188f11c0..6ff34e743afabfff1b656d8585e9c47766502831 100644 (file)
@@ -119,7 +119,6 @@ timers must still be above the tick interrupt priority. */
 \r
 /* Hardware register locations. */\r
 #define tmrGIRQ23_ENABLE_SET                   ( * ( volatile uint32_t * ) 0x4000C130 )\r
-#define tmrMMCR_EC_INTERRUPT_CONTROL   ( * ( volatile uint8_t * ) 0x4000FC18 )\r
 \r
 #define tmrRECORD_NESTING_DEPTH()                                              \\r
        ulNestingDepth++;                                                                       \\r
@@ -140,12 +139,11 @@ const uint32_t ulTimer1Count = configCPU_CLOCK_HZ / tmrTIMER_1_FREQUENCY;
 const uint32_t ulTimer2Count = configCPU_CLOCK_HZ / tmrTIMER_2_FREQUENCY;\r
 \r
        tmrGIRQ23_ENABLE_SET = 0x03;\r
-       tmrMMCR_EC_INTERRUPT_CONTROL = 1; \r
-       \r
-       /* Initialise the three timers as described at the top of this file, and \r
+\r
+       /* Initialise the three timers as described at the top of this file, and\r
        enable their interrupts in the NVIC. */\r
        btimer_init( tmrTIMER_CHANNEL_0, BTIMER_AUTO_RESTART | BTIMER_COUNT_DOWN | BTIMER_INT_EN, 0, ulTimer0Count, ulTimer0Count );\r
-       btimer_interrupt_status_get_clr( tmrTIMER_CHANNEL_0 );  \r
+       btimer_interrupt_status_get_clr( tmrTIMER_CHANNEL_0 );\r
        enable_timer0_irq();\r
        NVIC_SetPriority( TIMER0_IRQn, tmrLOWER_PRIORITY ); //0xc0 into 0xe000e431\r
        NVIC_ClearPendingIRQ( TIMER0_IRQn );\r
index a2deb7adc959fa8c0baaed422388a9773dff9733..834acd4c5baa7dc79e73f0cf0167d58c1b4e1a51 100644 (file)
@@ -355,8 +355,7 @@ unsigned long ulErrorFound = pdFALSE;
                {\r
                        /* An error has been detected in one of the tasks - flash the LED\r
                        at a higher frequency to give visible feedback that something has\r
-                       gone wrong (it might just be that the loop back connector required\r
-                       by the comtest tasks has not been fitted). */\r
+                       gone wrong. */\r
                        xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;\r
                }\r
 \r
index dbc969d72746199e43cea76b7b2d7680dc424959..1d509e7cf5d0329e12405c20631c35bf68b29ba1 100644 (file)
@@ -134,12 +134,10 @@ static const uint32_t ulHighResolutionReloadValue = ( mainHIGHER_RESOLUTION_TIME
 \r
 /* Calculate how many clock increments make up a single tick period. */\r
 static const uint32_t ulReloadValueForOneHighResolutionTick = ( mainHIGHER_RESOLUTION_TIMER_HZ / configTICK_RATE_HZ );\r
-//static const uint32_t usReloadValueForOneLowResolutionTick = ( mainLOW_RESOLUTION_TIMER_HZ / configTICK_RATE_HZ );\r
 \r
 /* Calculate the maximum number of ticks that can be suppressed when using the\r
 high resolution clock and low resolution clock respectively. */\r
 static uint32_t ulMaximumPossibleSuppressedHighResolutionTicks = 0;\r
-//static const uint16_t usMaximumPossibleSuppressedLowResolutionTicks = USHRT_MAX / usReloadValueForOneLowResolutionTick;\r
 \r
 /* As the clock is only 2KHz, it is likely a value of 1 will be too much, so\r
 use zero - but leave the value here to assist porting to different clock\r
@@ -171,15 +169,14 @@ void NVIC_Handler_HIB_TMR( void )
 \r
 #if( lpINCLUDE_TEST_TIMER == 1 )\r
 \r
-       #define GIRQ23_ENABLE_SET               ( * ( uint32_t * ) 0x4000C130 )\r
+       #define lpGIRQ23_ENABLE_SET             ( * ( uint32_t * ) 0x4000C130 )\r
 \r
        static void prvSetupBasicTimer( void )\r
        {\r
        const uint8_t ucTimerChannel = 0;\r
        const uint32_t ulTimer0Count = configCPU_CLOCK_HZ / 10;\r
 \r
-               GIRQ23_ENABLE_SET = 0x03;\r
-               *(unsigned int*)0x4000FC18 = 1;\r
+               lpGIRQ23_ENABLE_SET = 0x03;\r
 \r
                /* To fully test the low power tick processing it is necessary to sometimes\r
                bring the MCU out of its sleep state by a method other than the tick\r
@@ -202,9 +199,7 @@ void vPortSetupTimerInterrupt( void )
        ulMaximumPossibleSuppressedHighResolutionTicks = ( ( uint32_t ) USHRT_MAX ) / ulReloadValueForOneHighResolutionTick;\r
 \r
        /* Set up the hibernation timer to start at the value required by the\r
-       tick interrupt.  Equivalent to the following libarary call.  The library\r
-       is not used as it is not compatible with all the compilers used:\r
-       htimer_enable( mainTICK_HTIMER_ID, ulHighResolutionReloadValue, mainHTIMER_HIGH_RESOLUTION ); */\r
+       tick interrupt. */\r
        lpHTIMER_PRELOAD_REGISTER = ulHighResolutionReloadValue;\r
        lpHTIMER_CONTROL_REGISTER = mainHTIMER_HIGH_RESOLUTION;\r
 \r
@@ -285,7 +280,7 @@ TickType_t xModifiableIdleTime;
        eSleepAction = eTaskConfirmSleepModeStatus();\r
        if( eSleepAction == eAbortSleep )\r
        {\r
-               /* Resetart the timer from whatever remains in the counter register,\r
+               /* Restart the timer from whatever remains in the counter register,\r
                but 0 is not a valid value. */\r
                ulReloadValue = ulCountBeforeSleep - ulStoppedTimerCompensation;\r
 \r
index 2a9fd82e24d9ffd53f4c46f33b81b94ccc0b9fb8..349c1cb58d36b49ba564af1b9a72fba1ec3f8aa7 100644 (file)
@@ -89,8 +89,8 @@
 build.  Remove the whole file if this is not the case. */\r
 #if( INCLUDE_xTaskAbortDelay == 1 )\r
 \r
-#if( INCLUDE_xTaskGetTaskHandle != 1 )\r
-       #error This test file uses the xTaskGetTaskHandle() API function so INCLUDE_xTaskGetTaskHandle must be set to 1 in FreeRTOSConfig.h.\r
+#if( INCLUDE_xTaskGetHandle != 1 )\r
+       #error This test file uses the xTaskGetHandle() API function so INCLUDE_xTaskGetHandle must be set to 1 in FreeRTOSConfig.h.\r
 #endif\r
 \r
 /* Task priorities.  Allow these to be overridden. */\r
@@ -183,7 +183,7 @@ const TickType_t xStartMargin = 2UL;
        /* Just to remove compiler warnings. */\r
        ( void ) pvParameters;\r
 \r
-       xBlockingTask = xTaskGetTaskHandle( pcBlockingTaskName );\r
+       xBlockingTask = xTaskGetHandle( pcBlockingTaskName );\r
        configASSERT( xBlockingTask );\r
 \r
        for( ;; )\r
@@ -241,7 +241,7 @@ uint32_t ulNotificationValue;
        /* Just to remove compiler warnings. */\r
        ( void ) pvParameters;\r
 \r
-       xControllingTask = xTaskGetTaskHandle( pcControllingTaskName );\r
+       xControllingTask = xTaskGetHandle( pcControllingTaskName );\r
        configASSERT( xControllingTask );\r
 \r
        for( ;; )\r
index b10ce79de3123c336c7adb7f32d3e0ff7d8251d0..cf163313a482f6a3511b1f020c53840c98ee94c7 100644 (file)
@@ -154,7 +154,7 @@ functions anyway. */
 #define INCLUDE_xTaskGetSchedulerState                 1\r
 #define INCLUDE_xTimerGetTimerDaemonTaskHandle 1\r
 #define INCLUDE_xTaskGetIdleTaskHandle                 1\r
-#define INCLUDE_xTaskGetTaskHandle                             1\r
+#define INCLUDE_xTaskGetHandle                                 1\r
 #define INCLUDE_eTaskGetState                                  1\r
 #define INCLUDE_xSemaphoreGetMutexHolder               1\r
 #define INCLUDE_xTimerPendFunctionCall                 1\r
index 0523a675f5528d3e441c67b140005c026928d7fd..38ef2ec5c2852bd99b6296d05e2a50052ff8bef6 100644 (file)
@@ -145,7 +145,7 @@ functions anyway. */
 #define INCLUDE_xTaskGetSchedulerState                 1\r
 #define INCLUDE_xTimerGetTimerDaemonTaskHandle 1\r
 #define INCLUDE_xTaskGetIdleTaskHandle                 1\r
-#define INCLUDE_xTaskGetTaskHandle                             1\r
+#define INCLUDE_xTaskGetHandle                                 1\r
 #define INCLUDE_eTaskGetState                                  1\r
 #define INCLUDE_xSemaphoreGetMutexHolder               1\r
 #define INCLUDE_xTimerPendFunctionCall                 1\r
index efa214730fdcf5bc58110bcb318cbd3700a79d17..8af29dbaaa17a609c8953a5e32861c17fa80093f 100644 (file)
@@ -599,12 +599,12 @@ extern StackType_t uxTimerTaskStack[];
 \r
        /* Check the same handle is obtained using the idle task's name.  First try\r
        with the wrong name, then the right name. */\r
-       if( xTaskGetTaskHandle( "Idle" ) == xIdleTaskHandle )\r
+       if( xTaskGetHandle( "Idle" ) == xIdleTaskHandle )\r
        {\r
                pcStatusMessage = "Error:  Returned handle for name Idle was incorrect";\r
        }\r
 \r
-       if( xTaskGetTaskHandle( "IDLE" ) != xIdleTaskHandle )\r
+       if( xTaskGetHandle( "IDLE" ) != xIdleTaskHandle )\r
        {\r
                pcStatusMessage = "Error:  Returned handle for name Idle was incorrect";\r
        }\r
@@ -616,7 +616,7 @@ extern StackType_t uxTimerTaskStack[];
                pcStatusMessage = "Error:  Returned timer task handle was incorrect";\r
        }\r
 \r
-       if( xTaskGetTaskHandle( "Tmr Svc" ) != xTimerTaskHandle )\r
+       if( xTaskGetHandle( "Tmr Svc" ) != xTimerTaskHandle )\r
        {\r
                pcStatusMessage = "Error:  Returned handle for name Tmr Svc was incorrect";\r
        }\r
@@ -633,20 +633,20 @@ extern StackType_t uxTimerTaskStack[];
                pcStatusMessage = "Error:  Returned timer task state was incorrect";\r
        }\r
 \r
-       /* Also with the vTaskGetTaskInfo() function. */\r
-       vTaskGetTaskInfo( xTimerTaskHandle, /* The task being queried. */\r
+       /* Also with the vTaskGetInfo() function. */\r
+       vTaskGetInfo( xTimerTaskHandle, /* The task being queried. */\r
                                          &xTaskInfo,           /* The structure into which information on the task will be written. */\r
                                          pdTRUE,                       /* Include the task's high watermark in the structure. */\r
                                          eInvalid );           /* Include the task state in the structure. */\r
 \r
-       /* Check the information returned by vTaskGetTaskInfo() is as expected. */\r
+       /* Check the information returned by vTaskGetInfo() is as expected. */\r
        if( ( xTaskInfo.eCurrentState != eBlocked )                                              ||\r
                ( strcmp( xTaskInfo.pcTaskName, "Tmr Svc" ) != 0 )                       ||\r
                ( xTaskInfo.uxCurrentPriority != configTIMER_TASK_PRIORITY ) ||\r
                ( xTaskInfo.pxStackBase != uxTimerTaskStack )                            ||\r
                ( xTaskInfo.xHandle != xTimerTaskHandle ) )\r
        {\r
-               pcStatusMessage = "Error:  vTaskGetTaskInfo() returned incorrect information about the timer task";\r
+               pcStatusMessage = "Error:  vTaskGetInfo() returned incorrect information about the timer task";\r
        }\r
 \r
        /* Other tests that should only be performed once follow.  The test task\r
index b72bbb557d0626a34013b5109d1d9da9c3a7c562..07d57b6aad7cf6078329db5601d20f4bf2588a77 100644 (file)
@@ -147,7 +147,7 @@ functions anyway. */
 #define INCLUDE_xSemaphoreGetMutexHolder               1\r
 #define INCLUDE_xTimerPendFunctionCall                 1\r
 #define INCLUDE_xTaskAbortDelay                                        1\r
-#define INCLUDE_xTaskGetTaskHandle                             1\r
+#define INCLUDE_xTaskGetHandle                                 1\r
 \r
 /* It is a good idea to define configASSERT() while developing.  configASSERT()\r
 uses the same semantics as the standard C assert() macro. */\r
index 1051293e85b7f0ee2da3be6f05d3af9d5a329a08..a902a34ac3d8dfbaddc67b5fa12bea1fb2d2b511 100644 (file)
@@ -181,8 +181,8 @@ extern "C" {
        #define INCLUDE_xSemaphoreGetMutexHolder INCLUDE_xQueueGetMutexHolder\r
 #endif\r
 \r
-#ifndef INCLUDE_xTaskGetTaskHandle\r
-       #define INCLUDE_xTaskGetTaskHandle 0\r
+#ifndef INCLUDE_xTaskGetHandle\r
+       #define INCLUDE_xTaskGetHandle 0\r
 #endif\r
 \r
 #ifndef INCLUDE_uxTaskGetStackHighWaterMark\r
@@ -837,6 +837,8 @@ V8 if desired. */
        #define portTICK_RATE_MS portTICK_PERIOD_MS\r
        #define pcTaskGetTaskName pcTaskGetName\r
        #define pcTimerGetTimerName pcTimerGetName\r
+       #define pcQueueGetQueueName pcQueueGetName\r
+       #define vTaskGetTaskInfo vTaskGetInfo\r
 \r
        /* Backward compatibility within the scheduler code only - these definitions\r
        are not really required but are included for completeness. */\r
index 46c3e1accf5c2b9b8cc999b9947495eb1f2aedb5..9a61599d82527f344716c038e33f8f52c3c50d30 100644 (file)
@@ -421,7 +421,9 @@ typedef QueueHandle_t SemaphoreHandle_t;
  * \defgroup xSemaphoreTakeRecursive xSemaphoreTakeRecursive\r
  * \ingroup Semaphores\r
  */\r
-#define xSemaphoreTakeRecursive( xMutex, xBlockTime )  xQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) )\r
+#if( configUSE_RECURSIVE_MUTEXES == 1 )\r
+       #define xSemaphoreTakeRecursive( xMutex, xBlockTime )   xQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) )\r
+#endif\r
 \r
 /**\r
  * semphr. h\r
@@ -568,7 +570,9 @@ typedef QueueHandle_t SemaphoreHandle_t;
  * \defgroup xSemaphoreGiveRecursive xSemaphoreGiveRecursive\r
  * \ingroup Semaphores\r
  */\r
-#define xSemaphoreGiveRecursive( xMutex )      xQueueGiveMutexRecursive( ( xMutex ) )\r
+#if( configUSE_RECURSIVE_MUTEXES == 1 )\r
+       #define xSemaphoreGiveRecursive( xMutex )       xQueueGiveMutexRecursive( ( xMutex ) )\r
+#endif\r
 \r
 /**\r
  * semphr. h\r
@@ -879,7 +883,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
  * \defgroup xSemaphoreCreateRecursiveMutex xSemaphoreCreateRecursiveMutex\r
  * \ingroup Semaphores\r
  */\r
-#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\r
+#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) )\r
        #define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex( queueQUEUE_TYPE_RECURSIVE_MUTEX )\r
 #endif\r
 \r
@@ -952,7 +956,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
  * \defgroup xSemaphoreCreateRecursiveMutexStatic xSemaphoreCreateRecursiveMutexStatic\r
  * \ingroup Semaphores\r
  */\r
-#if( configSUPPORT_STATIC_ALLOCATION == 1 )\r
+#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) )\r
        #define xSemaphoreCreateRecursiveMutexStatic( pxStaticSemaphore ) xQueueCreateMutexStatic( queueQUEUE_TYPE_RECURSIVE_MUTEX, pxStaticSemaphore )\r
 #endif /* configSUPPORT_STATIC_ALLOCATION */\r
 \r
@@ -1152,7 +1156,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
 \r
 /**\r
  * semphr.h\r
- * <pre>UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xMutex );</pre>\r
+ * <pre>UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore );</pre>\r
  *\r
  * If the semaphore is a counting semaphore then uxSemaphoreGetCount() returns\r
  * its current count value.  If the semaphore is a binary semaphore then\r
index 385c66388d768d91293c6fb273d7fac2af7f1c96..c4bc0838da615e3ae8e812671759e1cb6cafce46 100644 (file)
@@ -840,7 +840,7 @@ eTaskState eTaskGetState( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
 \r
 /**\r
  * task. h\r
- * <pre>void vTaskGetTaskInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState );</pre>\r
+ * <pre>void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState );</pre>\r
  *\r
  * configUSE_TRACE_FACILITY must be defined as 1 for this function to be\r
  * available.  See the configuration section for more information.\r
@@ -877,22 +877,22 @@ eTaskState eTaskGetState( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
  TaskStatus_t xTaskDetails;\r
 \r
     // Obtain the handle of a task from its name.\r
-    xHandle = xTaskGetTaskHandle( "Task_Name" );\r
+    xHandle = xTaskGetHandle( "Task_Name" );\r
 \r
     // Check the handle is not NULL.\r
     configASSERT( xHandle );\r
 \r
     // Use the handle to obtain further information about the task.\r
-    vTaskGetTaskInfo( xHandle,\r
-                      &xTaskDetails,\r
-                      pdTRUE, // Include the high water mark in xTaskDetails.\r
-                      eInvalid ); // Include the task state in xTaskDetails.\r
+    vTaskGetInfo( xHandle,\r
+                  &xTaskDetails,\r
+                  pdTRUE, // Include the high water mark in xTaskDetails.\r
+                  eInvalid ); // Include the task state in xTaskDetails.\r
  }\r
    </pre>\r
- * \defgroup vTaskGetTaskInfo vTaskGetTaskInfo\r
+ * \defgroup vTaskGetInfo vTaskGetInfo\r
  * \ingroup TaskCtrl\r
  */\r
-void vTaskGetTaskInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) PRIVILEGED_FUNCTION;\r
+void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) PRIVILEGED_FUNCTION;\r
 \r
 /**\r
  * task. h\r
@@ -1319,19 +1319,19 @@ char *pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lint !e9
 \r
 /**\r
  * task. h\r
- * <PRE>TaskHandle_t xTaskGetTaskHandle( const char *pcNameToQuery );</PRE>\r
+ * <PRE>TaskHandle_t xTaskGetHandle( const char *pcNameToQuery );</PRE>\r
  *\r
  * NOTE:  This function takes a relatively long time to complete and should be\r
  * used sparingly.\r
  *\r
  * @return The handle of the task that has the human readable name pcNameToQuery.\r
- * NULL is returned if no matching name is found.  INCLUDE_xTaskGetTaskHandle\r
- * must be set to 1 in FreeRTOSConfig.h for pcTaskGetTaskHandle() to be available.\r
+ * NULL is returned if no matching name is found.  INCLUDE_xTaskGetHandle\r
+ * must be set to 1 in FreeRTOSConfig.h for pcTaskGetHandle() to be available.\r
  *\r
- * \defgroup pcTaskGetTaskHandle pcTaskGetTaskHandle\r
+ * \defgroup pcTaskGetHandle pcTaskGetHandle\r
  * \ingroup TaskUtils\r
  */\r
-TaskHandle_t xTaskGetTaskHandle( const char *pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
+TaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
 \r
 /**\r
  * task.h\r
index bf423b8c88618617baea5dfdd95097adb68da33e..a02254419fb0bfde589b938dee5a5c6804126734 100644 (file)
@@ -137,6 +137,10 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* Required to allow portasm.asm access the configMAX_SYSCALL_INTERRUPT_PRIORITY\r
 setting. */\r
 const uint32_t ulMaxSyscallInterruptPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY;\r
@@ -224,7 +228,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) prvTaskExitError;       /* LR */\r
 \r
@@ -419,6 +423,9 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __asm( "        cpsid i" );\r
+               __asm( "        dsb" );\r
+               __asm( "        isb" );\r
+\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index 74549259f000fd7936a3ff3ffa701c9f2e1b623f..e72fc3ec48eb9b26c05cdf2a0a4013f6be438a8e 100644 (file)
@@ -131,6 +131,10 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK                         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* Let the user override the pre-loading of the initial LR with the address of\r
 prvTaskExitError() in case it messes up unwinding of the stack in the\r
 debugger. */\r
@@ -216,7 +220,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
        pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */\r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS;        /* LR */\r
        pxTopOfStack -= 5;      /* R12, R3, R2 and R1. */\r
@@ -480,6 +484,8 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __asm volatile( "cpsid i" );\r
+               __asm volatile( "dsb" );\r
+               __asm volatile( "isb" );\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index 2da512f9418270bb41ece8e83900a23b5794170d..855a3b746f8a4fa70f9206c5069e379e01e10fc5 100644 (file)
@@ -134,6 +134,10 @@ r0p1 port. */
 /* The systick is a 24-bit counter. */\r
 #define portMAX_24_BIT_NUMBER                          ( 0xffffffUL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* A fiddle factor to estimate the number of SysTick counts that would have\r
 occurred while the SysTick counter is stopped during tickless idle\r
 calculations. */\r
@@ -233,7 +237,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS;        /* LR */\r
 \r
@@ -537,6 +541,8 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __asm volatile( "cpsid i" );\r
+               __asm volatile( "dsb" );\r
+               __asm volatile( "isb" );\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index fc8fbabb1baf1fd78c7bab96baf39ba7c331f19a..d585aa7ad4489341ccefe331685b46fb1d6225da 100644 (file)
@@ -133,6 +133,10 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* Let the user override the pre-loading of the initial LR with the address of\r
 prvTaskExitError() in case it messes up unwinding of the stack in the\r
 debugger. */\r
@@ -227,7 +231,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS;        /* LR */\r
 \r
@@ -527,6 +531,8 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __asm volatile( "cpsid i" );\r
+               __asm volatile( "dsb" );\r
+               __asm volatile( "isb" );\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index 0f1a186985c0a25a85b2f3f7532cfa9a23f2137d..b7eab92bdd601f0222fa87c077dcfbcd2399b3f0 100644 (file)
@@ -555,7 +555,7 @@ uint32_t ulReturn;
                this is not the case (if some bits represent a sub-priority).\r
 \r
                The priority grouping is configured by the GIC's binary point register\r
-               (ICCBPR).  Writting 0 to ICCBPR will ensure it is set to its lowest\r
+               (ICCBPR).  Writing 0 to ICCBPR will ensure it is set to its lowest\r
                possible value (which may be above 0). */\r
                configASSERT( ( portICCBPR_BINARY_POINT_REGISTER & portBINARY_POINT_BITS ) <= portMAX_BINARY_POINT_VALUE );\r
        }\r
index 9be08e37a00d5bf01153ddda0ecbc2b1b27bba30..bcbe25cb19aaee711400f339207a3d55ff95827d 100644 (file)
@@ -131,6 +131,10 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK                         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* For backward compatibility, ensure configKERNEL_INTERRUPT_PRIORITY is\r
 defined.  The value 255 should also ensure backward compatibility.\r
 FreeRTOS.org versions prior to V4.3.0 did not include this definition. */\r
@@ -212,7 +216,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
        pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */\r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) prvTaskExitError;       /* LR */\r
        pxTopOfStack -= 5;      /* R12, R3, R2 and R1. */\r
@@ -392,6 +396,9 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __disable_interrupt();\r
+               __DSB();\r
+               __ISB();\r
+\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index ec58192761a0c92ee478290327753a0ac35746f9..b66c4873ed2db35cc2852df89c9141354cf6e77b 100644 (file)
@@ -146,6 +146,9 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK                         ( ( StackType_t ) 0xfffffffeUL )\r
 \r
 /* Each task maintains its own interrupt status in the critical nesting\r
 variable. */\r
@@ -230,7 +233,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) prvTaskExitError;       /* LR */\r
 \r
@@ -434,6 +437,9 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __disable_interrupt();\r
+               __DSB();\r
+               __ISB();\r
+\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index 3b1e1ed4682ba98a066c494a33988db8b6b5dbb8..ce9c879350ca5725a4c38de4e005f254f1c882be 100644 (file)
@@ -140,6 +140,9 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK                         ( ( StackType_t ) 0xfffffffeUL )\r
 \r
 /* Each task maintains its own interrupt status in the critical nesting\r
 variable. */\r
@@ -224,7 +227,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) prvTaskExitError;       /* LR */\r
 \r
@@ -418,6 +421,8 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __disable_interrupt();\r
+               __DSB();\r
+               __ISB();\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index f9528e50aeb789722637f7307e642f7dd91f7b6f..45a8f565d870d694101dee1af7afd0311477d520 100644 (file)
@@ -141,6 +141,10 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK                         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* Each task maintains its own interrupt status in the critical nesting\r
 variable. */\r
 static UBaseType_t uxCriticalNesting = 0xaaaaaaaa;\r
@@ -217,7 +221,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
        pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */\r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) prvTaskExitError;       /* LR */\r
 \r
@@ -476,6 +480,8 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __disable_irq();\r
+               __dsb( portSY_FULL_READ_WRITE );\r
+               __isb( portSY_FULL_READ_WRITE );\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index 2be9b4fbcaea78e9c48d2bf4780f2f1996893903..bb128f8e43b41ae80c02df14e02075a4ced504e1 100644 (file)
@@ -145,12 +145,16 @@ r0p1 port. */
 #define portINITIAL_EXEC_RETURN                ( 0xfffffffd )\r
 \r
 /* The systick is a 24-bit counter. */\r
-#define portMAX_24_BIT_NUMBER                          ( 0xffffffUL )\r
+#define portMAX_24_BIT_NUMBER          ( 0xffffffUL )\r
 \r
 /* A fiddle factor to estimate the number of SysTick counts that would have\r
 occurred while the SysTick counter is stopped during tickless idle\r
 calculations. */\r
-#define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
+#define portMISSED_COUNTS_FACTOR       ( 45UL )\r
+\r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK         ( ( StackType_t ) 0xfffffffeUL )\r
 \r
 /* Each task maintains its own interrupt status in the critical nesting\r
 variable. */\r
@@ -237,7 +241,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) prvTaskExitError;       /* LR */\r
 \r
@@ -564,6 +568,8 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __disable_irq();\r
+               __dsb( portSY_FULL_READ_WRITE );\r
+               __isb( portSY_FULL_READ_WRITE );\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index 3458eac9778795617af39f2f8f0b16d2e5c77537..ccefbd9795c9a2093a2f865450161f751f7bb852 100644 (file)
@@ -146,6 +146,10 @@ occurred while the SysTick counter is stopped during tickless idle
 calculations. */\r
 #define portMISSED_COUNTS_FACTOR                       ( 45UL )\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK                         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* Each task maintains its own interrupt status in the critical nesting\r
 variable. */\r
 static UBaseType_t uxCriticalNesting = 0xaaaaaaaa;\r
@@ -231,7 +235,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) prvTaskExitError;       /* LR */\r
 \r
@@ -346,10 +350,10 @@ BaseType_t xPortStartScheduler( void )
                /* Read the value back to see how many bits stuck. */\r
                ucMaxPriorityValue = *pucFirstUserPriorityRegister;\r
 \r
-               /* The kernel interrupt priority should be set to the lowest \r
+               /* The kernel interrupt priority should be set to the lowest\r
                priority. */\r
                configASSERT( ucMaxPriorityValue == ( configKERNEL_INTERRUPT_PRIORITY & ucMaxPriorityValue ) );\r
-               \r
+\r
                /* Use the same mask on the maximum system call priority. */\r
                ucMaxSysCallPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY & ucMaxPriorityValue;\r
 \r
@@ -550,6 +554,8 @@ void xPortSysTickHandler( void )
                /* Enter a critical section but don't use the taskENTER_CRITICAL()\r
                method as that will mask interrupts that should exit sleep mode. */\r
                __disable_irq();\r
+               __dsb( portSY_FULL_READ_WRITE );\r
+               __isb( portSY_FULL_READ_WRITE );\r
 \r
                /* If a context switch is pending or a task is waiting for the scheduler\r
                to be unsuspended then abandon the low power entry. */\r
index ded132badab378c29f2d1e5d54d58735f1120a30..4c95cf49b6e18db9d552778af2a21bb1678be37d 100644 (file)
@@ -105,6 +105,10 @@ debugger. */
        #define portTASK_RETURN_ADDRESS prvTaskExitError\r
 #endif\r
 \r
+/* For strict compliance with the Cortex-M spec the task start address should\r
+have bit-0 clear, as it is loaded into the PC on exit from an ISR. */\r
+#define portSTART_ADDRESS_MASK                         ( ( StackType_t ) 0xfffffffeUL )\r
+\r
 /* The priority used by the kernel is assigned to a variable to make access\r
 from inline assembler easier. */\r
 const uint32_t ulKernelPriority = configKERNEL_INTERRUPT_PRIORITY;\r
@@ -154,7 +158,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
 \r
        *pxTopOfStack = portINITIAL_XPSR;       /* xPSR */\r
        pxTopOfStack--;\r
-       *pxTopOfStack = ( StackType_t ) pxCode; /* PC */\r
+       *pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK;    /* PC */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS;        /* LR */\r
 \r
index 390878af64ed655ebb87a19855679fb89ea873f5..7fafd904aceff49bddd7b17731fc86940bb4edb3 100644 (file)
@@ -490,7 +490,7 @@ static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseT
  * Searches pxList for a task with name pcNameToQuery - returning a handle to\r
  * the task if it is found, or NULL if the task is not found.\r
  */\r
-#if ( INCLUDE_xTaskGetTaskHandle == 1 )\r
+#if ( INCLUDE_xTaskGetHandle == 1 )\r
 \r
        static TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] ) PRIVILEGED_FUNCTION;\r
 \r
@@ -978,6 +978,12 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
                                mtCOVERAGE_TEST_MARKER();\r
                        }\r
 \r
+                       /* Increment the uxTaskNumber also so kernel aware debuggers can\r
+                       detect that the task lists need re-generating.  This is done before\r
+                       portPRE_TASK_DELETE_HOOK() as in the Windows port that macro will\r
+                       not return. */\r
+                       uxTaskNumber++;\r
+\r
                        if( pxTCB == pxCurrentTCB )\r
                        {\r
                                /* A task is deleting itself.  This cannot complete within the\r
@@ -991,16 +997,23 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
                                there is a task that has been deleted and that it should therefore\r
                                check the xTasksWaitingTermination list. */\r
                                ++uxDeletedTasksWaitingCleanUp;\r
+\r
+                               /* The pre-delete hook is primarily for the Windows simulator,\r
+                               in which Windows specific clean up operations are performed,\r
+                               after which it is not possible to yield away from this task -\r
+                               hence xYieldPending is used to latch that a context switch is\r
+                               required. */\r
+                               portPRE_TASK_DELETE_HOOK( pxTCB, &xYieldPending );\r
                        }\r
                        else\r
                        {\r
                                --uxCurrentNumberOfTasks;\r
                                prvDeleteTCB( pxTCB );\r
-                       }\r
 \r
-                       /* Increment the uxTaskNumber also so kernel aware debuggers can\r
-                       detect that the task lists need re-generating. */\r
-                       uxTaskNumber++;\r
+                               /* Reset the next expected unblock time in case it referred to\r
+                               the task that has just been deleted. */\r
+                               prvResetNextTaskUnblockTime();\r
+                       }\r
 \r
                        traceTASK_DELETE( pxTCB );\r
                }\r
@@ -1013,24 +1026,11 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
                        if( pxTCB == pxCurrentTCB )\r
                        {\r
                                configASSERT( uxSchedulerSuspended == 0 );\r
-\r
-                               /* The pre-delete hook is primarily for the Windows simulator,\r
-                               in which Windows specific clean up operations are performed,\r
-                               after which it is not possible to yield away from this task -\r
-                               hence xYieldPending is used to latch that a context switch is\r
-                               required. */\r
-                               portPRE_TASK_DELETE_HOOK( pxTCB, &xYieldPending );\r
                                portYIELD_WITHIN_API();\r
                        }\r
                        else\r
                        {\r
-                               /* Reset the next expected unblock time in case it referred to\r
-                               the task that has just been deleted. */\r
-                               taskENTER_CRITICAL();\r
-                               {\r
-                                       prvResetNextTaskUnblockTime();\r
-                               }\r
-                               taskEXIT_CRITICAL();\r
+                               mtCOVERAGE_TEST_MARKER();\r
                        }\r
                }\r
        }\r
@@ -2083,7 +2083,7 @@ TCB_t *pxTCB;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-#if ( INCLUDE_xTaskGetTaskHandle == 1 )\r
+#if ( INCLUDE_xTaskGetHandle == 1 )\r
 \r
        static TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] )\r
        {\r
@@ -2141,12 +2141,12 @@ TCB_t *pxTCB;
                return pxReturn;\r
        }\r
 \r
-#endif /* INCLUDE_xTaskGetTaskHandle */\r
+#endif /* INCLUDE_xTaskGetHandle */\r
 /*-----------------------------------------------------------*/\r
 \r
-#if ( INCLUDE_xTaskGetTaskHandle == 1 )\r
+#if ( INCLUDE_xTaskGetHandle == 1 )\r
 \r
-       TaskHandle_t xTaskGetTaskHandle( const char *pcNameToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
+       TaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
        {\r
        UBaseType_t uxQueue = configMAX_PRIORITIES;\r
        TCB_t* pxTCB;\r
@@ -2206,7 +2206,7 @@ TCB_t *pxTCB;
                return ( TaskHandle_t ) pxTCB;\r
        }\r
 \r
-#endif /* INCLUDE_xTaskGetTaskHandle */\r
+#endif /* INCLUDE_xTaskGetHandle */\r
 /*-----------------------------------------------------------*/\r
 \r
 #if ( configUSE_TRACE_FACILITY == 1 )\r
@@ -3301,7 +3301,7 @@ static void prvCheckTasksWaitingTermination( void )
 \r
 #if( configUSE_TRACE_FACILITY == 1 )\r
 \r
-       void vTaskGetTaskInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState )\r
+       void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState )\r
        {\r
        TCB_t *pxTCB;\r
 \r
@@ -3406,7 +3406,7 @@ static void prvCheckTasksWaitingTermination( void )
                        do\r
                        {\r
                                listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList );\r
-                               vTaskGetTaskInfo( ( TaskHandle_t ) pxNextTCB, &( pxTaskStatusArray[ uxTask ] ), pdTRUE, eState );\r
+                               vTaskGetInfo( ( TaskHandle_t ) pxNextTCB, &( pxTaskStatusArray[ uxTask ] ), pdTRUE, eState );\r
                                uxTask++;\r
                        } while( pxNextTCB != pxFirstTCB );\r
                }\r