rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit 9d718a58506b90b4c12c30003fe4614faa5b3fe5
parent d4403ac482871dfe027adf4ad97af6e38f6edd86
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Thu, 13 Apr 2023 09:39:42 +0900

main.c doesn't work for some reason.
compiled file contains
	add r7, sp, #0.
without this single line, it works.

Diffstat:
MMakefile | 4++--
Mmach.s | 20+++++++++-----------
Amain.s | 10++++++++++
3 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/Makefile b/Makefile @@ -19,8 +19,8 @@ clean: boot2.o: boot2.s $(AS) $(ASFLAGS) -o boot2.o boot2.s -main.o: main.c - $(CC) $(CFLAGS) -o main.o main.c +main.o: main.s + $(CC) $(CFLAGS) -o main.o main.s mach.o: mach.s $(AS) $(ASFLAGS) -o mach.o mach.s diff --git a/mach.s b/mach.s @@ -9,11 +9,6 @@ vectors: .section .text .thumb_func reset: -/* - ldr r0, sram_base - ldr r0, [r0, #0] // initial SP - mov sp, r0 -*/ bl main hang: b hang @@ -162,8 +157,7 @@ flash_read: bl wait_ssi bl ssi_pop - bl led_p0 - + ldr r3, xip_ssi_base mov r1, #0x03 lsl r1, r1, #24 mov r2, #1 @@ -173,7 +167,10 @@ flash_read: bl wait_ssi bl ssi_pop + pop {pc} + wait_ssi: + ldr r3, xip_ssi_base ldr r1, [r3, #0x28] // SSI: SR mov r2, #4 // TFE tst r1, r2 @@ -184,19 +181,20 @@ wait_ssi: bx lr ssi_pop: - push {lr} + push {r4, lr} + ldr r4, xip_ssi_base ssi_pop_loop: - ldr r1, [r3, #0x28] // SSI: SR + ldr r1, [r4, #0x28] // SSI: SR mov r2, #8 // RFNE tst r1, r2 beq ssi_empty - ldr r0, [r3, #0x60] // SSI: DR0 + ldr r0, [r4, #0x60] // SSI: DR0 bl printh mov r0, #'\n' bl putchar b ssi_pop_loop ssi_empty: - pop {pc} + pop {r4, pc} unreset: // unreset subsystems specified by r0 diff --git a/main.s b/main.s @@ -0,0 +1,10 @@ + .global main +main: + push {r7, lr} + //add r7, sp, #0 + bl init +loop: + bl led_p2 + bl led_p2 + bl led_p2 + b loop