]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/portable/IAR/ARM_CM4F/port.c
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Source / portable / IAR / ARM_CM4F / port.c
index 9487a8bee459904e18188c0e96b8fe744f940fdd..c2cc7a5a2baac35283882e93ff1a31b914771941 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V8.2.0 - Copyright (C) 2015 Real Time Engineers Ltd.\r
+    FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
     the terms of the GNU General Public License (version 2) as published by the\r
     Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.\r
 \r
-       ***************************************************************************\r
+    ***************************************************************************\r
     >>!   NOTE: The modification to the GPL is included to allow you to     !<<\r
     >>!   distribute a combined work that includes FreeRTOS without being   !<<\r
     >>!   obliged to provide the source code for proprietary components     !<<\r
     >>!   outside of the FreeRTOS kernel.                                   !<<\r
-       ***************************************************************************\r
+    ***************************************************************************\r
 \r
     FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
     ***************************************************************************\r
 \r
     http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading\r
-       the FAQ page "My application does not run, what could be wrong?".  Have you\r
-       defined configASSERT()?\r
+    the FAQ page "My application does not run, what could be wrong?".  Have you\r
+    defined configASSERT()?\r
 \r
-       http://www.FreeRTOS.org/support - In return for receiving this top quality\r
-       embedded software for free we request you assist our global community by\r
-       participating in the support forum.\r
+    http://www.FreeRTOS.org/support - In return for receiving this top quality\r
+    embedded software for free we request you assist our global community by\r
+    participating in the support forum.\r
 \r
-       http://www.FreeRTOS.org/training - Investing in training allows your team to\r
-       be as productive as possible as early as possible.  Now you can receive\r
-       FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
-       Ltd, and the world's leading authority on the world's leading RTOS.\r
+    http://www.FreeRTOS.org/training - Investing in training allows your team to\r
+    be as productive as possible as early as possible.  Now you can receive\r
+    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
+    Ltd, and the world's leading authority on the world's leading RTOS.\r
 \r
     http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
     including FreeRTOS+Trace - an indispensable productivity tool, a DOS\r
 #define portNVIC_PENDSVCLEAR_BIT                       ( 1UL << 27UL )\r
 #define portNVIC_PEND_SYSTICK_CLEAR_BIT                ( 1UL << 25UL )\r
 \r
+/* Constants used to detect a Cortex-M7 r0p1 core, which should use the ARM_CM7\r
+r0p1 port. */\r
+#define portCPUID                                                      ( * ( ( volatile uint32_t * ) 0xE000ed00 ) )\r
+#define portCORTEX_M7_r0p1_ID                          ( 0x410FC271UL )\r
+#define portCORTEX_M7_r0p0_ID                          ( 0x410FC270UL )\r
+\r
 #define portNVIC_PENDSV_PRI                                    ( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 16UL )\r
 #define portNVIC_SYSTICK_PRI                           ( ( ( uint32_t ) configKERNEL_INTERRUPT_PRIORITY ) << 24UL )\r
 \r
@@ -262,6 +268,16 @@ static void prvTaskExitError( void )
  */\r
 BaseType_t xPortStartScheduler( void )\r
 {\r
+       /* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.\r
+       See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\r
+       configASSERT( configMAX_SYSCALL_INTERRUPT_PRIORITY );\r
+\r
+       /* This port can be used on all revisions of the Cortex-M7 core other than\r
+       the r0p1 parts.  r0p1 parts should use the port from the\r
+       /source/portable/GCC/ARM_CM7/r0p1 directory. */\r
+       configASSERT( portCPUID != portCORTEX_M7_r0p1_ID );\r
+       configASSERT( portCPUID != portCORTEX_M7_r0p0_ID );\r
+\r
        #if( configASSERT_DEFINED == 1 )\r
        {\r
                volatile uint32_t ulOriginalPriority;\r
@@ -546,7 +562,7 @@ void xPortSysTickHandler( void )
 __weak void vPortSetupTimerInterrupt( void )\r
 {\r
        /* Calculate the constants required to configure the tick interrupt. */\r
-       #if configUSE_TICKLESS_IDLE == 1\r
+       #if( configUSE_TICKLESS_IDLE == 1 )\r
        {\r
                ulTimerCountsForOneTick = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ );\r
                xMaximumPossibleSuppressedTicks = portMAX_24_BIT_NUMBER / ulTimerCountsForOneTick;\r