commit 7e41616cc04dd6d4f4bdc71ca0dda065a4cf89dd
parent d1a910a596eb5934c5318bcb511515c5ee182063
Author: Matsuda Kenji <info@mtkn.jp>
Date: Mon, 17 Apr 2023 10:17:23 +0900
erase flash
Diffstat:
M | mach.s | | | 54 | +++++++++++++++++++++++++++++++++++++++++++++++------- |
1 file changed, 47 insertions(+), 7 deletions(-)
diff --git a/mach.s b/mach.s
@@ -16,7 +16,7 @@ hang:
.global init
.thumb_func
init:
- push {r4, lr}
+ push {r4, r5, lr}
// unreset gpio and pll_sys and uart0
mov r1, #1
lsl r0, r1, #5 // io_bank0
@@ -134,14 +134,54 @@ pll_lock:
lsl r1, r1, #5
str r1, [r0, #0x2c] // UART0_UARTLCR_H
- ldr r3, rom_base
- ldrh r0, [r3, #0x16] // rom_data_table
- ldr r1, =('C' | 'R' << 8)
- ldrh r2, [r3, #0x18] // rom_table_lookup
+ ldr r3, xip_base
+ ldr r0, [r3, #0]
+ bl printh
+
+flash_operation:
+ ldr r4, rom_base
+
+ ldrh r0, [r4, #0x14] // rom_func_table
+ ldr r1, =('I' | 'F' << 8) // connect_internal_flash()
+ ldrh r2, [r4, #0x18] // rom_table_lookup
+ blx r2
+ blx r0
+
+ ldrh r0, [r4, #0x14] // rom_func_table
+ ldr r1, =('E' | 'X' << 8) // exit_xip()
+ ldrh r2, [r4, #0x18] // rom_table_lookup
+ blx r2
+ blx r0
+
+ ldrh r0, [r4, #0x14] // rom_func_table
+ ldr r1, =('R' | 'E' << 8) // connect_internal_flash
+ ldrh r2, [r4, #0x18] // rom_table_lookup
+ blx r2
+ mov r5, r0
+ mov r0, #0
+ mov r1, #1
+ lsl r1, r1, #12
+ lsl r2, r1, #4
+ mov r3, #0xd8
+ blx r5
+
+ ldrh r0, [r4, #0x14] // rom_func_table
+ ldr r1, =('F' | 'C' << 8) // connect_internal_flash
+ ldrh r2, [r4, #0x18] // rom_table_lookup
blx r2
- bl print
+ blx r0
+
+ ldrh r0, [r4, #0x14] // rom_func_table
+ ldr r1, =('C' | 'X' << 8) // connect_internal_flash
+ ldrh r2, [r4, #0x18] // rom_table_lookup
+ blx r2
+ blx r0
+
+ ldr r3, xip_base
+ ldr r0, [r3, #0]
+ bl printh
- pop {r4, pc}
+ pop {r4, r5, pc}
unreset:
// unreset subsystems specified by r0