diff options
Diffstat (limited to 'demos')
-rw-r--r-- | demos/ARM7-LPC214x-G++/Makefile | 3 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-G++/Makefile.thumb | 3 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-G++/board.c | 20 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-G++/ch.ld | 2 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-G++/main.cpp | 6 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC-minimal/Makefile | 3 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb | 3 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC-minimal/board.c | 20 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC-minimal/ch.ld | 2 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC-minimal/main.c | 9 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC/Makefile | 3 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC/Makefile.thumb | 3 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC/board.c | 20 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC/ch.ld | 2 | ||||
-rw-r--r-- | demos/ARM7-LPC214x-GCC/main.c | 9 |
15 files changed, 72 insertions, 36 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.
diff --git a/demos/ARM7-LPC214x-GCC-minimal/Makefile b/demos/ARM7-LPC214x-GCC-minimal/Makefile index d035f6f23..6450cad6b 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/Makefile +++ b/demos/ARM7-LPC214x-GCC-minimal/Makefile @@ -80,7 +80,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 \
diff --git a/demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb b/demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb index ace728b15..f4fe4c25b 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb +++ b/demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb @@ -80,7 +80,8 @@ TSRC = ../../ports/ARM7-LPC214x/chcore.c \ board.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 \
diff --git a/demos/ARM7-LPC214x-GCC-minimal/board.c b/demos/ARM7-LPC214x-GCC-minimal/board.c index e140f2359..3b3bd848e 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/board.c +++ b/demos/ARM7-LPC214x-GCC-minimal/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-minimal/ch.ld b/demos/ARM7-LPC214x-GCC-minimal/ch.ld index bb59cec1c..81ab80dc6 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/ch.ld +++ b/demos/ARM7-LPC214x-GCC-minimal/ch.ld @@ -48,7 +48,7 @@ SECTIONS .text :
{
_text = .;
- KEEP(*(.startup))
+ KEEP(*(vectors))
*(.text)
*(.text.*);
*(.rodata);
diff --git a/demos/ARM7-LPC214x-GCC-minimal/main.c b/demos/ARM7-LPC214x-GCC-minimal/main.c index a7c896222..11fdd7b56 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/main.c +++ b/demos/ARM7-LPC214x-GCC-minimal/main.c @@ -56,17 +56,12 @@ static msg_t Thread2(void *arg) { }
/*
- * 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) {
/*
- * The main() function becomes a thread here then the interrupts are
- * enabled and ChibiOS/RT goes live.
- */
- chSysInit();
-
- /*
* Creates the blinker threads.
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
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[] = {
@@ -121,12 +122,6 @@ int main(int argc, char **argv) { 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.
*/
|