aboutsummaryrefslogtreecommitdiffstats
path: root/demos/ARM7-LPC214x-G++
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2008-10-04 12:00:18 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2008-10-04 12:00:18 +0000
commitf44bd871c77406f8e28047d9484cbabafa626040 (patch)
tree943b624cb77712767dfdfb63de149948c3d98eab /demos/ARM7-LPC214x-G++
parenta3bb2266cf4fc0c3b6deb6595bb992d30b698191 (diff)
downloadChibiOS-f44bd871c77406f8e28047d9484cbabafa626040.tar.gz
ChibiOS-f44bd871c77406f8e28047d9484cbabafa626040.tar.bz2
ChibiOS-f44bd871c77406f8e28047d9484cbabafa626040.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@459 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'demos/ARM7-LPC214x-G++')
-rw-r--r--demos/ARM7-LPC214x-G++/Makefile3
-rw-r--r--demos/ARM7-LPC214x-G++/Makefile.thumb3
-rw-r--r--demos/ARM7-LPC214x-G++/board.c20
-rw-r--r--demos/ARM7-LPC214x-G++/ch.ld2
-rw-r--r--demos/ARM7-LPC214x-G++/main.cpp6
5 files changed, 24 insertions, 10 deletions
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.