rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit dfe368ecd912b49a10165cb34c95491e5759a87c
parent d519ef5fab85e6532e94055f513fb7a8247517eb
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon, 18 Mar 2024 12:34:49 +0900

use '=' signe to load the address of a label.
storing to the automatically saved pc causes hard fault

Diffstat:
Mex3/main.c | 3+--
Mex3/proc.s | 10+++++-----
2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/ex3/main.c b/ex3/main.c @@ -63,9 +63,8 @@ main(void) { p1.r[15] = 0x20000101; // pc p1.next = NULL; - //proc0(); + proc0(); for (;;) { - puts("a"); wfi(); for (int i = 0; i < 17; i++) { printh(ptab.head->r[i]); diff --git a/ex3/proc.s b/ex3/proc.s @@ -2,7 +2,7 @@ .section .proc0, "a" .global proc0 proc0: - ldr r0, msg0 + ldr r0, =msg0 bl puts b proc0 @@ -14,7 +14,7 @@ msg0: .section .proc1, "a" .global proc1 proc1: - ldr r0, msg1 + ldr r0, =msg1 bl puts b proc1 @@ -36,7 +36,7 @@ isr_alarm: push {lr} // debug: - ldr r0, alarm_msg + ldr r0, =alarm_msg bl puts sub sp, sp, #(17*4) // unsigned int r[17]; @@ -99,8 +99,8 @@ isr_alarm: add r3, r3, #4 ldr r0, [r1, r2] str r0, [r1, r3] // ReturnAddress(ExceptionType): The next pc at interrupt. - ldr r0, =0x20000101 // The entry point of proc1 - str r0, [r1, r2] +// ldr r0, =0x20000101 // The entry point of proc1 +// str r0, [r1, r2] add r2, r2, #4 add r3, r3, #4