fernvale: Relocate to PSRAM
Move execution from SPI to PSRAM, to fix 0xa0140000 problem.
This commit is contained in:
parent
e858d5eeae
commit
70c8695eee
2 changed files with 61 additions and 3 deletions
|
@ -39,7 +39,7 @@ SECTIONS
|
||||||
{
|
{
|
||||||
/* The OS entry point is here */
|
/* The OS entry point is here */
|
||||||
|
|
||||||
. = 0x10003460;
|
. = 0x20000; /* bootloader will copy data to this address */
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
KEEP(*(vectors))
|
KEEP(*(vectors))
|
||||||
|
|
62
start.S
62
start.S
|
@ -1,4 +1,58 @@
|
||||||
.section vectors
|
.section vectors
|
||||||
|
|
||||||
|
.global reset
|
||||||
|
reset:
|
||||||
|
mov r0, #48
|
||||||
|
bl uart_putc
|
||||||
|
mov r0, #49
|
||||||
|
bl uart_putc
|
||||||
|
|
||||||
|
ldr r0, =0x7000cffc // stack_start
|
||||||
|
mov sp, r0
|
||||||
|
mov r2, #0xffffffff
|
||||||
|
ldr r1, =0x7000c000 // stack_end
|
||||||
|
|
||||||
|
clear_stack:
|
||||||
|
cmp r1, r0
|
||||||
|
str r2, [r0]
|
||||||
|
sub r0, r0, #4
|
||||||
|
bcc clear_stack
|
||||||
|
|
||||||
|
mov r0, #66
|
||||||
|
bl uart_putc
|
||||||
|
|
||||||
|
# Copy 0x10000 bytes from =spi_offset to psram at 0x20000
|
||||||
|
copy_code_to_ram:
|
||||||
|
mov r0, #0x20000
|
||||||
|
ldr r1, =0x10003460 // spi_offset
|
||||||
|
mov r2, r1
|
||||||
|
mov r3, #0x10000
|
||||||
|
add r2, r2, r3
|
||||||
|
|
||||||
|
copy_code_to_ram_loop:
|
||||||
|
cmp r1, r2
|
||||||
|
ldrcc r3, [r1], #4
|
||||||
|
strcc r3, [r0], #4
|
||||||
|
bcc copy_code_to_ram_loop
|
||||||
|
|
||||||
|
# Jump to main, which ought to be in psram now
|
||||||
|
jump_to_main:
|
||||||
|
mov r0, #69
|
||||||
|
bl uart_putc
|
||||||
|
|
||||||
|
ldr r0, =reset_handler
|
||||||
|
mov pc, r0
|
||||||
|
|
||||||
|
uart_putc:
|
||||||
|
ldr r2, =0xa0080014 // uart offset
|
||||||
|
uart_putc_ready_wait:
|
||||||
|
ldr r1, [r2]
|
||||||
|
tst r1, #0x20
|
||||||
|
beq uart_putc_ready_wait
|
||||||
|
sub r2, r2, #0x14
|
||||||
|
str r0, [r2]
|
||||||
|
bx lr
|
||||||
|
|
||||||
.global rv_start
|
.global rv_start
|
||||||
rv_start:
|
rv_start:
|
||||||
b do_reset
|
b do_reset
|
||||||
|
@ -69,13 +123,17 @@ __udiv64:
|
||||||
|
|
||||||
.global ram_memcpy
|
.global ram_memcpy
|
||||||
ram_memcpy:
|
ram_memcpy:
|
||||||
ldr pc, =ram_memcpy_addr
|
ldr r0, =ram_memcpy_addr
|
||||||
|
ldr r0, [r0]
|
||||||
|
mov pc, r0
|
||||||
ram_memcpy_addr:
|
ram_memcpy_addr:
|
||||||
.long 0x70007388
|
.long 0x70007388
|
||||||
|
|
||||||
.global ram_bzero
|
.global ram_bzero
|
||||||
ram_bzero:
|
ram_bzero:
|
||||||
ldr pc, =ram_bzero_addr
|
ldr r0, =ram_bzero_addr
|
||||||
|
ldr r0, [r0]
|
||||||
|
mov pc, r0
|
||||||
ram_bzero_addr:
|
ram_bzero_addr:
|
||||||
.long 0x700073bc
|
.long 0x700073bc
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue