LPC214x board files and demos updated.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2499 35acf78f-673a-0410-8e92-d51de3d6d3f4
master
gdisirio 2010-12-19 10:03:11 +00:00
parent ada9fb82aa
commit f131e4297d
10 changed files with 84 additions and 78 deletions

View File

@ -54,25 +54,18 @@ static CH_IRQ_HANDLER(T0IrqHandler) {
/* /*
* Early initialization code. * Early initialization code.
* This initialization is performed just after reset before BSS and DATA * This initialization must be performed just after stack setup and before
* segments initialization. * any other initialization.
*/ */
void hwinit0(void) { void __early_init(void) {
lpc214x_clock_init(); lpc214x_clock_init();
} }
/* /*
* Late initialization code. * Board-specific initialization code.
* This initialization is performed after BSS and DATA segments initialization
* and before invoking the main() function.
*/ */
void hwinit1(void) { void boardInit(void) {
/*
* HAL initialization.
*/
halInit();
/* /*
* System Timer initialization, 1ms intervals. * System Timer initialization, 1ms intervals.
@ -85,9 +78,4 @@ void hwinit1(void) {
timer->TC_MCR = 3; /* Interrupt and clear TC on match MR0. */ timer->TC_MCR = 3; /* Interrupt and clear TC on match MR0. */
timer->TC_TCR = 2; /* Reset counter and prescaler. */ timer->TC_TCR = 2; /* Reset counter and prescaler. */
timer->TC_TCR = 1; /* Timer enabled. */ timer->TC_TCR = 1; /* Timer enabled. */
/*
* ChibiOS/RT initialization.
*/
chSysInit();
} }

View File

@ -82,4 +82,14 @@
#define PB_WP1 24 #define PB_WP1 24
#define PB_CP1 25 #define PB_CP1 25
#if !defined(_FROM_ASM_)
#ifdef __cplusplus
extern "C" {
#endif
void boardInit(void);
#ifdef __cplusplus
}
#endif
#endif /* _FROM_ASM_ */
#endif /* _BOARD_H_ */ #endif /* _BOARD_H_ */

View File

@ -221,8 +221,7 @@ static void RemoveHandler(eventid_t id) {
} }
/* /*
* Entry point, note, the main() function is already a thread in the system * Application entry point.
* on entry.
*/ */
int main(int argc, char **argv) { int main(int argc, char **argv) {
static const evhandler_t evhndl[] = { static const evhandler_t evhndl[] = {
@ -236,6 +235,16 @@ int main(int argc, char **argv) {
(void)argc; (void)argc;
(void)argv; (void)argv;
/*
* System initializations.
* - HAL initialization, this also initializes the configured device drivers
* and performs the board-specific initializations.
* - Kernel initialization, the main() function becomes a thread and the
* RTOS is active.
*/
halInit();
chSysInit();
/* /*
* Activates the serial driver 2 using the driver default configuration. * Activates the serial driver 2 using the driver default configuration.
*/ */

View File

@ -142,8 +142,7 @@ static void TimerHandler(eventid_t id) {
} }
/* /*
* Entry point, note, the main() function is already a thread in the system * Application entry point.
* on entry.
*/ */
int main(int argc, char **argv) { int main(int argc, char **argv) {
static const evhandler_t evhndl[] = { static const evhandler_t evhndl[] = {
@ -155,6 +154,16 @@ int main(int argc, char **argv) {
(void)argc; (void)argc;
(void)argv; (void)argv;
/*
* System initializations.
* - HAL initialization, this also initializes the configured device drivers
* and performs the board-specific initializations.
* - Kernel initialization, the main() function becomes a thread and the
* RTOS is active.
*/
halInit();
System::Init();
/* /*
* Activates the serial driver 2 using the driver default configuration. * Activates the serial driver 2 using the driver default configuration.
*/ */

View File

@ -60,14 +60,23 @@ static msg_t Thread2(void *arg) {
} }
/* /*
* Entry point, note, the main() function is already a thread in the system * Application entry point.
* on entry.
*/ */
int main(int argc, char **argv) { int main(int argc, char **argv) {
(void)argc; (void)argc;
(void)argv; (void)argv;
/*
* System initializations.
* - HAL initialization, this also initializes the configured device drivers
* and performs the board-specific initializations.
* - Kernel initialization, the main() function becomes a thread and the
* RTOS is active.
*/
halInit();
chSysInit();
/* /*
* Activates the serial driver 2 using the driver default configuration. * Activates the serial driver 2 using the driver default configuration.
*/ */

View File

@ -5,7 +5,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
*** ChibiOS/RT test suite *** ChibiOS/RT test suite
*** ***
*** Kernel: 2.1.4unstable *** Kernel: 2.1.6unstable
*** GCC Version: 4.5.1 *** GCC Version: 4.5.1
*** Architecture: ARM7 *** Architecture: ARM7
*** Core Variant: ARM7TDMI *** Core Variant: ARM7TDMI
@ -114,11 +114,11 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle) --- Test Case 11.5 (Benchmark, threads, full cycle)
--- Score : 89745 threads/S --- Score : 88089 threads/S
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only) --- Test Case 11.6 (Benchmark, threads, create only)
--- Score : 128237 threads/S --- Score : 126542 threads/S
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads) --- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
@ -126,7 +126,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching) --- Test Case 11.8 (Benchmark, round robin context switching)
--- Score : 276080 ctxswc/S --- Score : 276084 ctxswc/S
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput) --- Test Case 11.9 (Benchmark, I/O Queues throughput)

View File

@ -5,7 +5,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
*** ChibiOS/RT test suite *** ChibiOS/RT test suite
*** ***
*** Kernel: 2.1.4unstable *** Kernel: 2.1.6unstable
*** GCC Version: 4.5.1 *** GCC Version: 4.5.1
*** Architecture: ARM7 *** Architecture: ARM7
*** Core Variant: ARM7TDMI *** Core Variant: ARM7TDMI
@ -98,7 +98,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1) --- Test Case 11.1 (Benchmark, messages #1)
--- Score : 106223 msgs/S, 212446 ctxswc/S --- Score : 106224 msgs/S, 212448 ctxswc/S
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2) --- Test Case 11.2 (Benchmark, messages #2)
@ -114,11 +114,11 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle) --- Test Case 11.5 (Benchmark, threads, full cycle)
--- Score : 71990 threads/S --- Score : 70297 threads/S
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only) --- Test Case 11.6 (Benchmark, threads, create only)
--- Score : 110394 threads/S --- Score : 109135 threads/S
--- Result: SUCCESS --- Result: SUCCESS
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads) --- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)

View File

@ -27,25 +27,25 @@
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
.set MODE_USR, 0x10 .set MODE_USR, 0x10
.set MODE_FIQ, 0x11 .set MODE_FIQ, 0x11
.set MODE_IRQ, 0x12 .set MODE_IRQ, 0x12
.set MODE_SVC, 0x13 .set MODE_SVC, 0x13
.set MODE_ABT, 0x17 .set MODE_ABT, 0x17
.set MODE_UND, 0x1B .set MODE_UND, 0x1B
.set MODE_SYS, 0x1F .set MODE_SYS, 0x1F
.equ I_BIT, 0x80 .set I_BIT, 0x80
.equ F_BIT, 0x40 .set F_BIT, 0x40
.text .text
.code 32 .code 32
.balign 4 .balign 4
/* /*
* Reset handler. * Reset handler.
*/ */
.global ResetHandler .global ResetHandler
ResetHandler: ResetHandler:
/* /*
* Stack pointers initialization. * Stack pointers initialization.
@ -85,15 +85,15 @@ ResetHandler:
* Early initialization. * Early initialization.
*/ */
#ifndef THUMB_NO_INTERWORKING #ifndef THUMB_NO_INTERWORKING
bl hwinit0 bl __early_init
#else #else
add r0, pc, #1 add r0, pc, #1
bx r0 bx r0
.code 16 .code 16
bl hwinit0 bl __early_init
mov r0, pc mov r0, pc
bx r0 bx r0
.code 32 .code 32
#endif #endif
/* /*
* Data initialization. * Data initialization.
@ -119,21 +119,19 @@ bssloop:
strlo r0, [r1], #4 strlo r0, [r1], #4
blo bssloop blo bssloop
/* /*
* Late initialization. * Main program invocation.
*/ */
#ifdef THUMB_NO_INTERWORKING #ifdef THUMB_NO_INTERWORKING
add r0, pc, #1 add r0, pc, #1
bx r0 bx r0
.code 16 .code 16
bl hwinit1
mov r0, #0 mov r0, #0
mov r1, r0 mov r1, r0
bl main bl main
ldr r1, =MainExitHandler ldr r1, =MainExitHandler
bx r1 bx r1
.code 32 .code 32
#else #else
bl hwinit1
mov r0, #0 mov r0, #0
mov r1, r0 mov r1, r0
bl main bl main
@ -143,10 +141,9 @@ bssloop:
/* /*
* Default main function exit handler. * Default main function exit handler.
*/ */
.weak MainExitHandler .weak MainExitHandler
.globl MainExitHandler .global MainExitHandler
MainExitHandler: MainExitHandler:
.loop: b .loop .loop: b .loop
/* /*
@ -156,29 +153,13 @@ MainExitHandler:
* segments initialization. * segments initialization.
*/ */
#ifdef THUMB_NO_INTERWORKING #ifdef THUMB_NO_INTERWORKING
.thumb_func .thumb_func
.code 16 .code 16
#endif #endif
.weak hwinit0 .weak __early_init
hwinit0: hwinit0:
bx lr bx lr
.code 32 .code 32
/*
* Default late initialization code. It is declared weak in order to be
* replaced by the real initialization code.
* Late initialization is performed after BSS and DATA segments initialization
* and before invoking the main() function.
*/
#ifdef THUMB_NO_INTERWORKING
.thumb_func
.code 16
#endif
.weak hwinit1
hwinit1:
bx lr
.code 32
#endif #endif
/** @} */ /** @} */

View File

@ -100,7 +100,7 @@ endbloop:
msr CONTROL, r0 msr CONTROL, r0
isb isb
/* /*
* Main program invokation. * Main program invocation.
*/ */
movs r0, #0 movs r0, #0
mov r1, r0 mov r1, r0

View File

@ -95,7 +95,7 @@ bloop:
msr CONTROL, r0 msr CONTROL, r0
isb isb
/* /*
* Main program invokation. * Main program invocation.
*/ */
movs r0, #0 movs r0, #0
mov r1, r0 mov r1, r0