]> git.sur5r.net Git - freertos/commitdiff
Finalise XMC4000 GCC demos.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 1 Oct 2013 12:47:27 +0000 (12:47 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 1 Oct 2013 12:47:27 +0000 (12:47 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2045 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Demo/CORTEX_M4F_Infineon_XMC4000_GCC_Dave/FreeRTOSConfig.h
FreeRTOS/Demo/CORTEX_M4F_Infineon_XMC4000_GCC_Dave/Startup/startup_XMC4200.s
FreeRTOS/Demo/CORTEX_M4F_Infineon_XMC4000_GCC_Dave/Startup/startup_XMC4400.s
FreeRTOS/Demo/CORTEX_M4F_Infineon_XMC4000_GCC_Dave/Startup/startup_XMC4500.s
FreeRTOS/Demo/CORTEX_M4F_Infineon_XMC4000_GCC_Dave/main.c

index 0bfa9aa24d1378248e74deb1885d502162139993..c44fa5b600371ea5e2efb00b7b7f9464ffe1348b 100644 (file)
 #include <stdint.h>\r
 extern uint32_t SystemCoreClock;\r
 \r
+/* The following definition allows the startup files that ship with the IDE\r
+to be used without modification when the chip used includes the PMU CM001\r
+errata. */\r
+#define WORKAROUND_PMU_CM001                                   1\r
+\r
 #define configUSE_PREEMPTION                                   1\r
 #define configUSE_PORT_OPTIMISED_TASK_SELECTION        1\r
 #define configUSE_IDLE_HOOK                                            0\r
@@ -148,18 +153,21 @@ to all Cortex-M ports, and do not rely on any particular library functions. */
 /* !!!! 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
+\r
 /* Normal assert() semantics without relying on the provision of an assert.h\r
 header file. */\r
-#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }    \r
-       \r
+#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }\r
+\r
 /* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS\r
 standard names. */\r
+#if WORKAROUND_PMU_CM001 == 1\r
+       #define xPortPendSVHandler PendSV_Handler_Veneer\r
+#else\r
+       #define xPortPendSVHandler PendSV_Handler\r
+#endif\r
 #define vPortSVCHandler SVC_Handler\r
-#define xPortPendSVHandler PendSV_Handler\r
 #define xPortSysTickHandler SysTick_Handler\r
 \r
-\r
 /* Demo application specific settings. */\r
 #if UC_ID == 4502\r
        /* Hardware includes. */\r
index d84519ba3ff893e338532ed8908461153aae862a..dbf86ccdc6066d865b8f9244f9a702ef96adfc9a 100644 (file)
@@ -106,7 +106,7 @@ __Xmc4200_interrupt_vector_cortex_m:
     Entry   SVC_Handler                 /* SVCall Handler               */
     Entry   DebugMon_Handler            /* Debug Monitor Handler        */
     .long   0                           /* Reserved                     */
-    .long   PendSV_Handler              /* PendSV Handler               */
+    Entry   PendSV_Handler              /* PendSV Handler               */
     Entry   SysTick_Handler             /* SysTick Handler              */
 
     /* Interrupt Handlers for Service Requests (SR) from XMC4200 Peripherals */
index 2888e9a4001b621106cf31ebba69b66813a5fccd..a032c56af472cd981e885860acd402dab0de5906 100644 (file)
@@ -105,7 +105,7 @@ __Xmc4400_interrupt_vector_cortex_m:
     Entry   SVC_Handler                 /* SVCall Handler               */
     Entry   DebugMon_Handler            /* Debug Monitor Handler        */
     .long   0                           /* Reserved                     */
-    .long   PendSV_Handler              /* PendSV Handler               */
+    Entry   PendSV_Handler              /* PendSV Handler               */
     Entry   SysTick_Handler             /* SysTick Handler              */
 
     /* Interrupt Handlers for Service Requests (SR) from XMC4400 Peripherals */
index 747549dade7c41cf17991dc174e3fc4a7f9178bc..19dd991a6ce5224275cbc128873a078c09f66fd4 100644 (file)
@@ -118,7 +118,7 @@ __Xmc4500_interrupt_vector_cortex_m:
     Entry   SVC_Handler                 /* SVCall Handler               */
     Entry   DebugMon_Handler            /* Debug Monitor Handler        */
     .long   0                           /* Reserved                     */
-    .long   PendSV_Handler              /* PendSV Handler               */
+    Entry   PendSV_Handler              /* PendSV Handler               */
     Entry   SysTick_Handler             /* SysTick Handler              */
 
     /* Interrupt Handlers for Service Requests (SR) from XMC4500 Peripherals */
index 51fc7b3ab607607e20a7ab4cf3c12bc67b4b4464..6062545cc29c530a880f4cc58030aa9e8ae33d75 100644 (file)
@@ -73,9 +73,9 @@
  * This file implements the code that is not demo specific, including the\r
  * hardware setup and FreeRTOS hook functions.\r
  *\r
- * \r
+ *\r
  * Additional code:\r
- * \r
+ *\r
  * This demo does not contain a non-kernel interrupt service routine that\r
  * can be used as an example for application writers to use as a reference.\r
  * Therefore, the framework of a dummy (not installed) handler is provided\r
@@ -110,9 +110,9 @@ or 0 to run the more comprehensive test and demo application. */
  */\r
 static void prvSetupHardware( void );\r
 \r
-/* \r
+/*\r
  * main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.\r
- * main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0. \r
+ * main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.\r
  */\r
 extern void main_blinky( void );\r
 extern void main_full( void );\r
@@ -195,7 +195,7 @@ void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName
 \r
 void vApplicationTickHook( void )\r
 {\r
-       /* This function will be called by each tick interrupt if \r
+       /* This function will be called by each tick interrupt if\r
        configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h.  User code can be\r
        added here, but the tick hook is called from an interrupt context, so\r
        code must not attempt to block, and only the interrupt safe FreeRTOS API\r
@@ -211,19 +211,19 @@ long lHigherPriorityTaskWoken = pdFALSE;
 \r
        /* Clear the interrupt if necessary. */\r
        Dummy_ClearITPendingBit();\r
-       \r
+\r
        /* This interrupt does nothing more than demonstrate how to synchronise a\r
        task with an interrupt.  A semaphore is used for this purpose.  Note\r
        lHigherPriorityTaskWoken is initialised to zero. */\r
        xSemaphoreGiveFromISR( xTestSemaphore, &lHigherPriorityTaskWoken );\r
-       \r
+\r
        /* If there was a task that was blocked on the semaphore, and giving the\r
        semaphore caused the task to unblock, and the unblocked task has a priority\r
        higher than the current Running state task (the task that this interrupt\r
        interrupted), then lHigherPriorityTaskWoken will have been set to pdTRUE\r
-       internally within xSemaphoreGiveFromISR().  Passing pdTRUE into the \r
+       internally within xSemaphoreGiveFromISR().  Passing pdTRUE into the\r
        portEND_SWITCHING_ISR() macro will result in a context switch being pended to\r
-       ensure this interrupt returns directly to the unblocked, higher priority, \r
+       ensure this interrupt returns directly to the unblocked, higher priority,\r
        task.  Passing pdFALSE into portEND_SWITCHING_ISR() has no effect. */\r
        portEND_SWITCHING_ISR( lHigherPriorityTaskWoken );\r
 }\r