From f44bd871c77406f8e28047d9484cbabafa626040 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 4 Oct 2008 12:00:18 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@459 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARM7-LPC214x-GCC/Makefile | 3 ++- demos/ARM7-LPC214x-GCC/Makefile.thumb | 3 ++- demos/ARM7-LPC214x-GCC/board.c | 20 +++++++++++++++++--- demos/ARM7-LPC214x-GCC/ch.ld | 2 +- demos/ARM7-LPC214x-GCC/main.c | 9 ++------- 5 files changed, 24 insertions(+), 13 deletions(-) (limited to 'demos/ARM7-LPC214x-GCC') diff --git a/demos/ARM7-LPC214x-GCC/Makefile b/demos/ARM7-LPC214x-GCC/Makefile index 8e1790bb2..2bdf1959f 100644 --- a/demos/ARM7-LPC214x-GCC/Makefile +++ b/demos/ARM7-LPC214x-GCC/Makefile @@ -84,7 +84,8 @@ ASRC = ../../ports/ARM7-LPC214x/chcore.c \ TSRC = # List ASM source files here -ASMSRC = ../../ports/ARM7-LPC214x/crt0.s ../../ports/ARM7/chsys.s +ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chsys.s \ + ../../ports/ARM7-LPC214x/vectors.s # List all user directories here UINCDIR = ../../src/include ../../src/lib ../../test \ diff --git a/demos/ARM7-LPC214x-GCC/Makefile.thumb b/demos/ARM7-LPC214x-GCC/Makefile.thumb index 4b62f9091..a676a4af1 100644 --- a/demos/ARM7-LPC214x-GCC/Makefile.thumb +++ b/demos/ARM7-LPC214x-GCC/Makefile.thumb @@ -84,7 +84,8 @@ TSRC = ../../ports/ARM7-LPC214x/chcore.c \ board.c buzzer.c mmcsd.c main.c # List ASM source files here -ASMSRC = ../../ports/ARM7-LPC214x/crt0.s ../../ports/ARM7/chsys.s +ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chsys.s \ + ../../ports/ARM7-LPC214x/vectors.s # List all user directories here UINCDIR = ../../src/include ../../src/lib ../../test \ diff --git a/demos/ARM7-LPC214x-GCC/board.c b/demos/ARM7-LPC214x-GCC/board.c index 94bc21336..9f453100c 100644 --- a/demos/ARM7-LPC214x-GCC/board.c +++ b/demos/ARM7-LPC214x-GCC/board.c @@ -58,10 +58,11 @@ static void T0IrqHandler(void) { } /* - * Hardware initialization goes here. - * NOTE: Interrupts are still disabled. + * Early initialization code. + * This initialization is performed just after reset before BSS and DATA + * segments initialization. */ -void hwinit(void) { +void hwinit0(void) { /* * All peripherals clock disabled by default in order to save power. @@ -106,6 +107,14 @@ void hwinit(void) { IO0SET = 0xFFFFFFFF; IO1DIR = VAL_FIO1DIR; IO1SET = 0xFFFFFFFF; +} + +/* + * Late initialization code. + * This initialization is performed after BSS and DATA segments initialization + * and before invoking the main() function. + */ +void hwinit1(void) { /* * Interrupt vectors assignment. @@ -132,4 +141,9 @@ void hwinit(void) { InitSSP(); InitMMC(); InitBuzzer(); + + /* + * ChibiOS/RT initialization. + */ + chSysInit(); } diff --git a/demos/ARM7-LPC214x-GCC/ch.ld b/demos/ARM7-LPC214x-GCC/ch.ld index bb59cec1c..81ab80dc6 100644 --- a/demos/ARM7-LPC214x-GCC/ch.ld +++ b/demos/ARM7-LPC214x-GCC/ch.ld @@ -48,7 +48,7 @@ SECTIONS .text : { _text = .; - KEEP(*(.startup)) + KEEP(*(vectors)) *(.text) *(.text.*); *(.rodata); diff --git a/demos/ARM7-LPC214x-GCC/main.c b/demos/ARM7-LPC214x-GCC/main.c index 588bd21af..3ff516077 100644 --- a/demos/ARM7-LPC214x-GCC/main.c +++ b/demos/ARM7-LPC214x-GCC/main.c @@ -109,7 +109,8 @@ static void RemoveHandler(eventid_t id) { } /* - * Entry point, the interrupts are disabled on entry. + * Entry point, note, the main() function is already a thread in the system + * on entry. */ int main(int argc, char **argv) { static const evhandler_t evhndl[] = { @@ -120,12 +121,6 @@ int main(int argc, char **argv) { static EvTimer evt; struct EventListener el0, el1, el2; - /* - * The main() function becomes a thread here then the interrupts are - * enabled and ChibiOS/RT goes live. - */ - chSysInit(); - /* * If a button is pressed during the reset then the blinking leds threads * are not started in order to make accurate benchmarks. -- cgit v1.2.3