rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit 7e41616cc04dd6d4f4bdc71ca0dda065a4cf89dd
parent d1a910a596eb5934c5318bcb511515c5ee182063
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon, 17 Apr 2023 10:17:23 +0900

erase flash

Diffstat:
Mmach.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