.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] 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}