commit 63eab8fbe31f5bc1c0c03f3b1f3a4006a505d9b9
parent 1e9eece3b084803d80217f22740f15131da505ef
Author: Matsuda Kenji <info@mtkn.jp>
Date: Sun, 19 Mar 2023 13:43:18 +0900
make function for reset
Diffstat:
M | main.s | | | 47 | ++++++++++++++++------------------------------- |
1 file changed, 16 insertions(+), 31 deletions(-)
diff --git a/main.s b/main.s
@@ -1,23 +1,13 @@
.section .text
.global main
main:
- // reset gpio
-// ldr r0, resets_base
-// ldr r1, atomic_clr
-// add r0, r0, r1
-// mov r1, #0x1
-// lsl r1, r1, #5 // io_bank0
-// str r1, [r0, #0] // RESETS_RESET
- mov r0, #1
- lsl r0, r0, #5 // io_bank0
+ // reset gpio and pll_sys
+ mov r1, #1
+ lsl r0, r1, #5 // io_bank0
+ lsl r1, r1, #12 // pll_sys
+ add r0, r0, r1
bl reset
-
- // check if reset is done
- ldr r0, resets_base
-gpio_reset_chk:
- ldr r2, [r0, #0x8] // RESETS_RESET_DONE
- and r1, r1, r2
- beq gpio_reset_chk
+ bl wait_reset
// set gpio24 funct as sio
ldr r0, io_bank0_base
@@ -53,21 +43,6 @@ xosc_stable:
lsr r1, r1, #31
beq xosc_stable
- // reset pll
- ldr r0, resets_base
- ldr r1, atomic_clr
- add r0, r0, r1
- mov r1, #0x1
- lsl r1, r1, #12 // pll_sys
- str r1, [r0, #0] // RESETS_RESET
-
- // check if reset is done
- ldr r0, resets_base
-pll_reset_chk:
- ldr r2, [r0, #0x8] // RESETS_RESET_DONE
- and r1, r1, r2
- beq pll_reset_chk
-
// set feedback divider
ldr r0, pll_sys_base
mov r1, #0x14
@@ -120,6 +95,16 @@ reset:
ldr r2, atomic_clr
add r1, r1, r2
str r0, [r1, #0] // RESETS_RESET
+ bx lr
+
+wait_reset:
+ // wait for subsystems specified by r0 to reset done
+ ldr r1, resets_base
+reset_chk:
+ ldr r2, [r1, #0x8] // RESETS_RESET_DONE
+ and r0, r0, r2
+ beq reset_chk
+ bx lr
led_blink:
push {lr}