ak3-labs-asm/start.S

59 lines
858 B
ArmAsm

.syntax unified
.cpu cortex-m4
.thumb
.equ SYSTICK_OFFSET, 0xE000E010
.section .text
vtable:
.word __stack_start
.word __hard_reset__+1
v2_img_start:
.incbin "lab1_v2.bin"
v2_img_end: @ ==__hard_reset__
__hard_reset__:
bl load_systick_timer
bl lab1_v1
bl bootload_v2
readloop:
ldr.n r0, [r7, #8]
wfi
b.n readloop
load_systick_timer:
@ SysTick_LOAD
ldr.n r7, =SYSTICK_OFFSET
mov r1, #0x1
lsl r1, #20
str.n r1, [r7, #4]
@ SysTick_CTRL
mov r1, #0x1
str.n r1, [r7]
mov pc, lr
bootload_v2:
push {lr}
@ bootload to ram
ldr.n r0, =v2_img_start
ldr.n r1, =v2_img_end
ldr.n r3, =__ram_start
copy_loop:
ldrh r2, [r0], #2
strh r2, [r3], #2
cmp.n r0, r1
bne.n copy_loop
ldr.n r3, =__ram_start
add r3, r3, #1
blx r3
pop {pc}