From eeba8dcaa014c078b5a752d3b28249934e50a89f Mon Sep 17 00:00:00 2001 From: richardbarry Date: Thu, 5 May 2011 18:40:28 +0000 Subject: [PATCH] Complete FM3/IAR blinky build configuration. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1412 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- Demo/CORTEX_MB9B500_IAR_Keil/FreeRTOSConfig.h | 2 +- Demo/CORTEX_MB9B500_IAR_Keil/ParTest.c | 180 +++++ Demo/CORTEX_MB9B500_IAR_Keil/RTOSDemo_IAR.ewd | 4 +- Demo/CORTEX_MB9B500_IAR_Keil/RTOSDemo_IAR.ewp | 2 +- .../config/MB9BF506.icf | 31 + .../config/Ram_VTOR.mac | 9 + .../config/flashloader/FlashLoader.board | 9 + .../config/flashloader/FlashMB9BF506.flash | 19 + .../config/flashloader/FlashMB9BF506.mac | 29 + .../config/flashloader/FlashMB9BF506.out | Bin 0 -> 33072 bytes .../config/mb9bf506_ram.icf | 31 + Demo/CORTEX_MB9B500_IAR_Keil/main-full.c | 656 ++++++++++++++++++ Demo/CORTEX_MB9B500_IAR_Keil/main_blinky.c | 28 +- 13 files changed, 981 insertions(+), 19 deletions(-) create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/ParTest.c create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/config/MB9BF506.icf create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/config/Ram_VTOR.mac create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/config/flashloader/FlashLoader.board create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/config/flashloader/FlashMB9BF506.flash create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/config/flashloader/FlashMB9BF506.mac create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/config/flashloader/FlashMB9BF506.out create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/config/mb9bf506_ram.icf create mode 100644 Demo/CORTEX_MB9B500_IAR_Keil/main-full.c diff --git a/Demo/CORTEX_MB9B500_IAR_Keil/FreeRTOSConfig.h b/Demo/CORTEX_MB9B500_IAR_Keil/FreeRTOSConfig.h index f5069d907..b1b495433 100644 --- a/Demo/CORTEX_MB9B500_IAR_Keil/FreeRTOSConfig.h +++ b/Demo/CORTEX_MB9B500_IAR_Keil/FreeRTOSConfig.h @@ -87,7 +87,7 @@ assembly files that include this header file. */ #define configTICK_RATE_HZ ( ( portTickType ) 1000 ) #define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 60 * 1024 ) ) #define configMAX_TASK_NAME_LEN ( 10 ) #define configUSE_TRACE_FACILITY 1 #define configUSE_16_BIT_TICKS 0 diff --git a/Demo/CORTEX_MB9B500_IAR_Keil/ParTest.c b/Demo/CORTEX_MB9B500_IAR_Keil/ParTest.c new file mode 100644 index 000000000..c1af98967 --- /dev/null +++ b/Demo/CORTEX_MB9B500_IAR_Keil/ParTest.c @@ -0,0 +1,180 @@ +/* + FreeRTOS V7.0.0 - Copyright (C) 2011 Real Time Engineers Ltd. + + + *************************************************************************** + * * + * FreeRTOS tutorial books are available in pdf and paperback. * + * Complete, revised, and edited pdf reference manuals are also * + * available. * + * * + * Purchasing FreeRTOS documentation will not only help you, by * + * ensuring you get running as quickly as possible and with an * + * in-depth knowledge of how to use FreeRTOS, it will also help * + * the FreeRTOS project to continue with its mission of providing * + * professional grade, cross platform, de facto standard solutions * + * for microcontrollers - completely free of charge! * + * * + * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * + * * + * Thank you for using FreeRTOS, and thank you for your support! * + * * + *************************************************************************** + + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation AND MODIFIED BY the FreeRTOS exception. + >>>NOTE<<< The modification to the GPL is included to allow you to + distribute a combined work that includes FreeRTOS without being obliged to + provide the source code for proprietary components outside of the FreeRTOS + kernel. FreeRTOS is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. You should have received a copy of the GNU General Public + License and the FreeRTOS license exception along with FreeRTOS; if not it + can be viewed here: http://www.freertos.org/a00114.html and also obtained + by writing to Richard Barry, contact details for whom are available on the + FreeRTOS WEB site. + + 1 tab == 4 spaces! + + http://www.FreeRTOS.org - Documentation, latest information, license and + contact details. + + http://www.SafeRTOS.com - A version that is certified for use in safety + critical systems. + + http://www.OpenRTOS.com - Commercial support, development, porting, + licensing and training services. +*/ + +/*----------------------------------------------------------- + * Simple parallel port IO routines. + *-----------------------------------------------------------*/ + +/* Kernel includes. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Library includes. */ +#include "mss_gpio.h" + +#define partstMAX_LEDS 8 + +static volatile unsigned long ulGPIOState = 0UL; + +/*-----------------------------------------------------------*/ + +void vParTestInitialise( void ) +{ +long x; + + /* Initialise the GPIO */ + MSS_GPIO_init(); + + /* Set up GPIO for the LEDs. */ + for( x = 0; x < partstMAX_LEDS; x++ ) + { + MSS_GPIO_config( ( mss_gpio_id_t ) x , MSS_GPIO_OUTPUT_MODE ); + } + + /* All LEDs start off. */ + ulGPIOState = 0xffffffffUL; + MSS_GPIO_set_outputs( ulGPIOState ); +} +/*-----------------------------------------------------------*/ + +void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) +{ + if( uxLED < partstMAX_LEDS ) + { + /* A critical section is used as the LEDs are also accessed from an + interrupt. */ + taskENTER_CRITICAL(); + { + if( xValue == pdTRUE ) + { + ulGPIOState &= ~( 1UL << uxLED ); + } + else + { + ulGPIOState |= ( 1UL << uxLED ); + } + + MSS_GPIO_set_outputs( ulGPIOState ); + } + taskEXIT_CRITICAL(); + } +} +/*-----------------------------------------------------------*/ + +void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) +{ +unsigned portBASE_TYPE uxInterruptFlags; + + uxInterruptFlags = portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( uxLED < partstMAX_LEDS ) + { + if( xValue == pdTRUE ) + { + ulGPIOState &= ~( 1UL << uxLED ); + } + else + { + ulGPIOState |= ( 1UL << uxLED ); + } + + MSS_GPIO_set_outputs( ulGPIOState ); + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxInterruptFlags ); +} +/*-----------------------------------------------------------*/ + +void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) +{ + if( uxLED < partstMAX_LEDS ) + { + /* A critical section is used as the LEDs are also accessed from an + interrupt. */ + taskENTER_CRITICAL(); + { + if( ( ulGPIOState & ( 1UL << uxLED ) ) != 0UL ) + { + ulGPIOState &= ~( 1UL << uxLED ); + } + else + { + ulGPIOState |= ( 1UL << uxLED ); + } + + MSS_GPIO_set_outputs( ulGPIOState ); + } + taskEXIT_CRITICAL(); + } +} +/*-----------------------------------------------------------*/ + +long lParTestGetLEDState( unsigned long ulLED ) +{ +long lReturn = pdFALSE; + + if( ulLED < partstMAX_LEDS ) + { + taskENTER_CRITICAL(); + { + if( ( ulGPIOState & ( 1UL << ulLED ) ) == 0UL ) + { + lReturn = pdTRUE; + } + } + taskEXIT_CRITICAL(); + } + + return lReturn; +} +/*-----------------------------------------------------------*/ diff --git a/Demo/CORTEX_MB9B500_IAR_Keil/RTOSDemo_IAR.ewd b/Demo/CORTEX_MB9B500_IAR_Keil/RTOSDemo_IAR.ewd index 63828ba8d..de43eaa3f 100644 --- a/Demo/CORTEX_MB9B500_IAR_Keil/RTOSDemo_IAR.ewd +++ b/Demo/CORTEX_MB9B500_IAR_Keil/RTOSDemo_IAR.ewd @@ -33,7 +33,7 @@