diff options
| author | fengzi.rtt <[email protected]> | 2011-12-23 07:22:36 +0000 |
|---|---|---|
| committer | fengzi.rtt <[email protected]> | 2011-12-23 07:22:36 +0000 |
| commit | f8afab609ae79005171c844e032cef1accf67944 (patch) | |
| tree | d394f223d780939c1b7e06051cefd41e944ea343 /bsp/lm4f232 | |
| parent | bf4de2f204814321e42d11b784cb17d4f65dabc5 (diff) | |
update lm4f232 startup files for PDL r8246.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1874 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'bsp/lm4f232')
| -rw-r--r-- | bsp/lm4f232/Libraries/startup/arm/start_rvds.S | 23 | ||||
| -rw-r--r-- | bsp/lm4f232/Libraries/startup/gcc/start_gcc.c | 34 | ||||
| -rw-r--r-- | bsp/lm4f232/drivers/board.c | 14 | ||||
| -rw-r--r-- | bsp/lm4f232/rtconfig.py | 46 |
4 files changed, 53 insertions, 64 deletions
diff --git a/bsp/lm4f232/Libraries/startup/arm/start_rvds.S b/bsp/lm4f232/Libraries/startup/arm/start_rvds.S index 0fa43770f2..6878f7859d 100644 --- a/bsp/lm4f232/Libraries/startup/arm/start_rvds.S +++ b/bsp/lm4f232/Libraries/startup/arm/start_rvds.S @@ -19,7 +19,7 @@ ; CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
; DAMAGES, FOR ANY REASON WHATSOEVER.
;
-; This is part of revision 8049 of the EK-LM4F232 Firmware Package.
+; This is part of revision 8264 of the EK-LM4F232 Firmware Package.
;
;******************************************************************************
@@ -89,7 +89,7 @@ __Vectors DCD StackMem + Stack ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NmiSR ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
+ DCD HardFault_Handler ; Hard Fault Handler
DCD IntDefaultHandler ; The MPU fault handler
DCD IntDefaultHandler ; The bus fault handler
DCD IntDefaultHandler ; The usage fault handler
@@ -144,7 +144,7 @@ __Vectors DCD IntDefaultHandler ; CAN0
DCD IntDefaultHandler ; CAN1
DCD IntDefaultHandler ; CAN2
- DCD rt_hw_eth_handler ; Ethernet
+ DCD IntDefaultHandler ; Ethernet
DCD IntDefaultHandler ; Hibernate
DCD IntDefaultHandler ; USB0
DCD IntDefaultHandler ; PWM Generator 3
@@ -251,6 +251,23 @@ __Vectors EXPORT Reset_Handler
Reset_Handler
;
+ ; Enable the floating-point unit. This must be done here to handle the
+ ; case where main() uses floating-point and the function prologue saves
+ ; floating-point registers (which will fault if floating-point is not
+ ; enabled). Any configuration of the floating-point unit using
+ ; DriverLib APIs must be done here prior to the floating-point unit
+ ; being enabled.
+ ;
+ ; Note that this does not use DriverLib since it might not be included
+ ; in this project.
+ ;
+ MOVW R0, #0xED88
+ MOVT R0, #0xE000
+ LDR R1, [R0]
+ ORR R1, #0x00F00000
+ STR R1, [R0]
+
+ ;
; Call the C library enty point that handles startup. This will copy
; the .data section initializers from flash to SRAM and zero fill the
; .bss section.
diff --git a/bsp/lm4f232/Libraries/startup/gcc/start_gcc.c b/bsp/lm4f232/Libraries/startup/gcc/start_gcc.c index cca7508b50..2742aee7c5 100644 --- a/bsp/lm4f232/Libraries/startup/gcc/start_gcc.c +++ b/bsp/lm4f232/Libraries/startup/gcc/start_gcc.c @@ -18,10 +18,13 @@ // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
// DAMAGES, FOR ANY REASON WHATSOEVER.
//
-// This is part of revision 8049 of the EK-LM4F232 Firmware Package.
+// This is part of revision 8264 of the EK-LM4F232 Firmware Package.
//
//*****************************************************************************
+#include "inc/hw_nvic.h"
+#include "inc/hw_types.h"
+
//*****************************************************************************
//
// Forward declaration of the default fault handlers.
@@ -32,11 +35,16 @@ static void NmiSR(void); static void FaultISR(void);
static void IntDefaultHandler(void);
+//*****************************************************************************
+//
+// External declaration for the interrupt handler used by the application.
+//
+//*****************************************************************************
/* RT-Thread interface */
static void HardFault_Handler(void);
static void PendSV_Handler(void);
static void rt_hw_timer_handler(void);
-
+static void rt_hw_uart_isr_1(void);
//*****************************************************************************
//
// The entry point for the application.
@@ -64,7 +72,7 @@ void (* const g_pfnVectors[])(void) = // The initial stack pointer
ResetISR, // The reset handler
NmiSR, // The NMI handler
- HardFault_Handler, // The hard fault handler
+ HardFault_Handler, // The hard fault handler
IntDefaultHandler, // The MPU fault handler
IntDefaultHandler, // The bus fault handler
IntDefaultHandler, // The usage fault handler
@@ -75,14 +83,14 @@ void (* const g_pfnVectors[])(void) = IntDefaultHandler, // SVCall handler
IntDefaultHandler, // Debug monitor handler
0, // Reserved
- PendSV_Handler, // The PendSV handler
- rt_hw_timer_handler, // The SysTick handler
+ PendSV_Handler, // The PendSV handler
+ rt_hw_timer_handler, // The SysTick handler
IntDefaultHandler, // GPIO Port A
IntDefaultHandler, // GPIO Port B
IntDefaultHandler, // GPIO Port C
IntDefaultHandler, // GPIO Port D
IntDefaultHandler, // GPIO Port E
- IntDefaultHandler, // UART0 Rx and Tx
+ rt_hw_uart_isr_1, // UART0 Rx and Tx
IntDefaultHandler, // UART1 Rx and Tx
IntDefaultHandler, // SSI0 Rx and Tx
IntDefaultHandler, // I2C0 Master and Slave
@@ -269,6 +277,20 @@ ResetISR(void) " blt zero_loop");
//
+ // Enable the floating-point unit. This must be done here to handle the
+ // case where main() uses floating-point and the function prologue saves
+ // floating-point registers (which will fault if floating-point is not
+ // enabled). Any configuration of the floating-point unit using DriverLib
+ // APIs must be done here prior to the floating-point unit being enabled.
+ //
+ // Note that this does not use DriverLib since it might not be included in
+ // this project.
+ //
+ HWREG(NVIC_CPAC) = ((HWREG(NVIC_CPAC) &
+ ~(NVIC_CPAC_CP10_M | NVIC_CPAC_CP11_M)) |
+ NVIC_CPAC_CP10_FULL | NVIC_CPAC_CP11_FULL);
+
+ //
// Call the application's entry point.
//
main();
diff --git a/bsp/lm4f232/drivers/board.c b/bsp/lm4f232/drivers/board.c index cadb00e5ff..1e4b53f110 100644 --- a/bsp/lm4f232/drivers/board.c +++ b/bsp/lm4f232/drivers/board.c @@ -77,17 +77,11 @@ void rt_hw_eth_handler(void) void rt_hw_board_init() { - // - // The FPU should be enabled because some compilers will use floating- - // point registers, even for non-floating-point code. If the FPU is not - // enabled this will cause a fault. This also ensures that floating- - // point operations could be added to this application and would work - // correctly and use the hardware floating-point unit. Finally, lazy - // stacking is enabled for interrupt handlers. This allows floating- - // point instructions to be used within interrupt handlers, but at the - // expense of extra stack usage. // - FPUEnable(); + // Enable lazy stacking for interrupt handlers. This allows floating-point + // instructions to be used within interrupt handlers, but at the expense of + // extra stack usage. + // FPULazyStackingEnable(); // set sysclock to 80M diff --git a/bsp/lm4f232/rtconfig.py b/bsp/lm4f232/rtconfig.py index 903a5e9281..32abf1f37f 100644 --- a/bsp/lm4f232/rtconfig.py +++ b/bsp/lm4f232/rtconfig.py @@ -14,11 +14,8 @@ if CROSS_TOOL == 'gcc': elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc'
EXEC_PATH = 'E:/Keil'
-elif CROSS_TOOL == 'iar':
- PLATFORM = 'iar'
- IAR_PATH = 'E:/Program Files/IAR Systems/Embedded Workbench 6.0'
-#
+
BUILD = 'debug'
if PLATFORM == 'gcc':
@@ -75,45 +72,4 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
-elif PLATFORM == 'iar':
- # toolchains
- CC = 'iccarm'
- AS = 'iasmarm'
- AR = 'iarchive'
- LINK = 'ilinkarm'
- TARGET_EXT = 'out'
-
- DEVICE = ' -D USE_STDPERIPH_DRIVER' + ' -D STM32F10X_HD'
-
- CFLAGS = DEVICE
- CFLAGS += ' --diag_suppress Pa050'
- CFLAGS += ' --no_cse'
- CFLAGS += ' --no_unroll'
- CFLAGS += ' --no_inline'
- CFLAGS += ' --no_code_motion'
- CFLAGS += ' --no_tbaa'
- CFLAGS += ' --no_clustering'
- CFLAGS += ' --no_scheduling'
- CFLAGS += ' --debug'
- CFLAGS += ' --endian=little'
- CFLAGS += ' --cpu=Cortex-M3'
- CFLAGS += ' -e'
- CFLAGS += ' --fpu=None'
- CFLAGS += ' --dlib_config "' + IAR_PATH + '/arm/INC/c/DLib_Config_Normal.h"'
- CFLAGS += ' -Ol'
- CFLAGS += ' --use_c++_inline'
-
- AFLAGS = ''
- AFLAGS += ' -s+'
- AFLAGS += ' -w+'
- AFLAGS += ' -r'
- AFLAGS += ' --cpu Cortex-M3'
- AFLAGS += ' --fpu None'
-
- LFLAGS = ' --config stm32f10x_flash.icf'
- LFLAGS += ' --redirect _Printf=_PrintfTiny'
- LFLAGS += ' --redirect _Scanf=_ScanfSmall'
- LFLAGS += ' --entry __iar_program_start'
- EXEC_PATH = IAR_PATH + '/arm/bin/'
- POST_ACTION = ''
|
