diff options
-rw-r--r-- | demos/ARMCM3-STM32F103-GCC/main.c | 14 | ||||
-rw-r--r-- | os/ports/GCC/ARMCM3/chcore.c | 12 | ||||
-rw-r--r-- | readme.txt | 2 |
3 files changed, 20 insertions, 8 deletions
diff --git a/demos/ARMCM3-STM32F103-GCC/main.c b/demos/ARMCM3-STM32F103-GCC/main.c index fcc496648..943509849 100644 --- a/demos/ARMCM3-STM32F103-GCC/main.c +++ b/demos/ARMCM3-STM32F103-GCC/main.c @@ -19,15 +19,16 @@ #include <ch.h>
#include <pal.h>
+#include <serial.h>
+#include <spi.h>
#include <test.h>
#include "board.h"
-#include "serial.h"
/*
* Red LEDs blinker thread, times are in milliseconds.
*/
-static WORKING_AREA(waThread1, 128);
+static WORKING_AREA(waThread1, 512);
static msg_t Thread1(void *arg) {
(void)arg;
@@ -40,6 +41,10 @@ static msg_t Thread1(void *arg) { return 0;
}
+static SPIConfig spicfg = {
+ 16, IOPORT1, 4, 0
+};
+
/*
* Entry point, note, the main() function is already a thread in the system
* on entry.
@@ -59,6 +64,11 @@ int main(int argc, char **argv) { */
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
+ palSetPadMode(IOPORT1, 4, PAL_MODE_OUTPUT_PUSHPULL);
+ palSetPad(IOPORT1, 4);
+ spiStart(&SPID1, &spicfg);
+ spiStop(&SPID1);
+
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and check the button state.
diff --git a/os/ports/GCC/ARMCM3/chcore.c b/os/ports/GCC/ARMCM3/chcore.c index a2334dcf7..8c421867c 100644 --- a/os/ports/GCC/ARMCM3/chcore.c +++ b/os/ports/GCC/ARMCM3/chcore.c @@ -92,22 +92,22 @@ void SVCallVector(Thread *otp, Thread *ntp) { asm volatile ("mrs r3, BASEPRI \n\t" \
"mrs r12, PSP \n\t" \
"stmdb r12!, {r3-r6,r8-r11, lr} \n\t" \
- "str r12, [%0, #16] \n\t" \
- "ldr r12, [%1, #16] \n\t" \
+ "str r12, [r0, #16] \n\t" \
+ "ldr r12, [r1, #16] \n\t" \
"ldmia r12!, {r3-r6,r8-r11, lr} \n\t" \
"msr PSP, r12 \n\t" \
"msr BASEPRI, r3 \n\t" \
- "bx lr" : : "r" (otp), "r" (ntp));
+ "bx lr ");
#else
asm volatile ("mrs r3, BASEPRI \n\t" \
"mrs r12, PSP \n\t" \
"stmdb r12!, {r3-r11, lr} \n\t" \
- "str r12, [%0, #16] \n\t" \
- "ldr r12, [%1, #16] \n\t" \
+ "str r12, [r0, #16] \n\t" \
+ "ldr r12, [r1, #16] \n\t" \
"ldmia r12!, {r3-r11, lr} \n\t" \
"msr PSP, r12 \n\t" \
"msr BASEPRI, r3 \n\t" \
- "bx lr" : : "r" (otp), "r" (ntp));
+ "bx lr ");
#endif
}
diff --git a/readme.txt b/readme.txt index ca32b3d11..d3d83ec80 100644 --- a/readme.txt +++ b/readme.txt @@ -3,6 +3,8 @@ *****************************************************************************
*** 1.3.4 ***
+- FIX: Fixed problem with ARM-CM3 context switch when compiled at level
+ -O0 (bug 2890382).
- FIX: Fixed wrong conditional in chschd.c (bug 2888836).
- FIX: Fixed wrong macro in chheap.c (bug 2888833).
- FIX: Fixed AIC initialization in AT91SAM7X support (bug 2888583).
|