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-G++/Makefile | 3 ++- demos/ARM7-LPC214x-G++/Makefile.thumb | 3 ++- demos/ARM7-LPC214x-G++/board.c | 20 +++++++++++++++++--- demos/ARM7-LPC214x-G++/ch.ld | 2 +- demos/ARM7-LPC214x-G++/main.cpp | 6 ++---- 5 files changed, 24 insertions(+), 10 deletions(-) (limited to 'demos/ARM7-LPC214x-G++') diff --git a/demos/ARM7-LPC214x-G++/Makefile b/demos/ARM7-LPC214x-G++/Makefile index 95d6bfdb8..9bd08a8ee 100644 --- a/demos/ARM7-LPC214x-G++/Makefile +++ b/demos/ARM7-LPC214x-G++/Makefile @@ -93,7 +93,8 @@ TCSRC = TCPPSRC = # 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-G++/Makefile.thumb b/demos/ARM7-LPC214x-G++/Makefile.thumb index 29f2a61a4..177e7cda0 100644 --- a/demos/ARM7-LPC214x-G++/Makefile.thumb +++ b/demos/ARM7-LPC214x-G++/Makefile.thumb @@ -93,7 +93,8 @@ TCSRC = ../../ports/ARM7-LPC214x/chcore.c \ TCPPSRC = ../../src/lib/ch.cpp main.cpp # 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-G++/board.c b/demos/ARM7-LPC214x-G++/board.c index 6f004ba29..8b17399e0 100644 --- a/demos/ARM7-LPC214x-G++/board.c +++ b/demos/ARM7-LPC214x-G++/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-G++/ch.ld b/demos/ARM7-LPC214x-G++/ch.ld index bb59cec1c..81ab80dc6 100644 --- a/demos/ARM7-LPC214x-G++/ch.ld +++ b/demos/ARM7-LPC214x-G++/ch.ld @@ -48,7 +48,7 @@ SECTIONS .text : { _text = .; - KEEP(*(.startup)) + KEEP(*(vectors)) *(.text) *(.text.*); *(.rodata); diff --git a/demos/ARM7-LPC214x-G++/main.cpp b/demos/ARM7-LPC214x-G++/main.cpp index 37147fe91..576581b79 100644 --- a/demos/ARM7-LPC214x-G++/main.cpp +++ b/demos/ARM7-LPC214x-G++/main.cpp @@ -124,8 +124,8 @@ static void TimerHandler(eventid_t id) { } /* - * Entry point, the interrupts are disabled on entry. - * This is the real "application". + * 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[] = { @@ -134,8 +134,6 @@ int main(int argc, char **argv) { static EvTimer evt; struct EventListener el0; - System::Init(); // ChibiOS/RT goes live here. - evtInit(&evt, 500); // Initializes an event timer. evtStart(&evt); // Starts the event timer. chEvtRegister(&evt.et_es, &el0, 0); // Registers a listener on the source. -- cgit v1.2.3