start: Don't relocate to address 0

fernly runs in IRAM now, before PSRAM has been set up.
This commit is contained in:
Sean Cross 2014-09-09 14:04:17 +08:00
parent d5024b490a
commit ec4ac95cc4

39
start.S
View file

@ -2,11 +2,6 @@
.global reset .global reset
reset: reset:
mov r0, #48
bl uart_putc
mov r0, #49
bl uart_putc
ldr r0, =0x7000cffc // stack_start ldr r0, =0x7000cffc // stack_start
mov sp, r0 mov sp, r0
mov r2, #0xffffffff mov r2, #0xffffffff
@ -18,30 +13,24 @@ clear_stack:
sub r0, r0, #4 sub r0, r0, #4
bcc clear_stack bcc clear_stack
mov r0, #66 ## Copy 0x10000 bytes from =spi_offset to psram at 0x3460
bl uart_putc #copy_code_to_ram:
# ldr r0, =0x00003460 // Target offset
# Copy 0x10000 bytes from =spi_offset to psram at 0x3460 # ldr r1, =0x10003460 // Source offset
copy_code_to_ram: # mov r2, #0x10000
ldr r0, =0x00003460 // Target offset # bl asm_memcpy
ldr r1, =0x10003460 // Source offset #
mov r2, #0x10000 ## Copy reset vector table to address 0
bl asm_memcpy #copy_reset_vectors:
# mov r0, #0
# Copy reset vector table to address 0 # ldr r1, =0x3500
copy_reset_vectors: # mov r2, #0x100
mov r0, #0 # bl asm_memcpy
ldr r1, =0x3500
mov r2, #0x100
bl asm_memcpy
# Begin executing out of psram # Begin executing out of psram
# Jump to main, which ought to be in psram now # Jump to main, which ought to be in psram now
jump_to_main: jump_to_main:
mov r0, #69
bl uart_putc
ldr r0, =reset_handler ldr r0, =reset_handler
mov pc, r0 mov pc, r0
@ -90,7 +79,7 @@ rv_start:
.Lreserved_handler: .Lreserved_handler:
.long reserved_handler .long reserved_handler
.Lirq_handler: .Lirq_handler:
.long irq_handler_c .long irq_handler
.Lfiq_handler: .Lfiq_handler:
.long fiq_handler .long fiq_handler