Added Flash programming stubs.
This commit is contained in:
parent
df5c3d06d5
commit
7de78bbd6c
5
flashstub/README
Normal file
5
flashstub/README
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
These are the assembler routines for executing a flash write
|
||||||
|
on the supported targets. They are kept here for reference, but
|
||||||
|
are not used, as the compiled binary code is included in the
|
||||||
|
target drivers.
|
||||||
|
|
42
flashstub/lmi.s
Normal file
42
flashstub/lmi.s
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
|
||||||
|
_start:
|
||||||
|
ldr r0, _flashbase
|
||||||
|
ldr r1, _addr
|
||||||
|
mov r2, pc
|
||||||
|
add r2, #(_data - . - 2)
|
||||||
|
ldr r3, _size
|
||||||
|
ldr r5, _flash_write_cmd
|
||||||
|
_next:
|
||||||
|
cbz r3, _done
|
||||||
|
@ Write address to FMA
|
||||||
|
str r1, [r0]
|
||||||
|
@ Write data to FMD
|
||||||
|
ldr r4, [r2]
|
||||||
|
str r4, [r0, #4]
|
||||||
|
@ Write WRITE bit to FMC
|
||||||
|
str r5, [r0, #8]
|
||||||
|
_wait: @ Wait for WRITE bit to clear
|
||||||
|
ldr r4, [r0, #8]
|
||||||
|
mov r6, #1
|
||||||
|
tst r4, r6
|
||||||
|
bne _wait
|
||||||
|
|
||||||
|
sub r3, #1
|
||||||
|
add r1, #4
|
||||||
|
add r2, #4
|
||||||
|
b _next
|
||||||
|
_done:
|
||||||
|
bkpt
|
||||||
|
|
||||||
|
@.align 4
|
||||||
|
.org 0x28
|
||||||
|
_flashbase:
|
||||||
|
.word 0x400FD000
|
||||||
|
_flash_write_cmd:
|
||||||
|
.word 0xA4420001
|
||||||
|
_addr:
|
||||||
|
.word 0
|
||||||
|
_size:
|
||||||
|
.word 4
|
||||||
|
_data:
|
||||||
|
.string "Hello World!\n\0\0\0"
|
42
flashstub/stm32.s
Normal file
42
flashstub/stm32.s
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
.global _start
|
||||||
|
|
||||||
|
_start:
|
||||||
|
ldr r0, _flashbase
|
||||||
|
ldr r1, _addr
|
||||||
|
mov r2, pc
|
||||||
|
add r2, #(_data - . - 2)
|
||||||
|
ldr r3, _size
|
||||||
|
mov r5, #1
|
||||||
|
_next:
|
||||||
|
cbz r3, _done
|
||||||
|
@ Write PG command to FLASH_CR
|
||||||
|
str r5, [r0, #0x10]
|
||||||
|
@ Write data to flash (half-word)
|
||||||
|
ldrh r4, [r2]
|
||||||
|
strh r4, [r1]
|
||||||
|
|
||||||
|
_wait: @ Wait for BSY bit to clear
|
||||||
|
ldr r4, [r0, #0x0C]
|
||||||
|
mov r6, #1
|
||||||
|
tst r4, r6
|
||||||
|
bne _wait
|
||||||
|
|
||||||
|
sub r3, #2
|
||||||
|
add r1, #2
|
||||||
|
add r2, #2
|
||||||
|
b _next
|
||||||
|
_done:
|
||||||
|
bkpt
|
||||||
|
|
||||||
|
@.align 4
|
||||||
|
.org 0x28
|
||||||
|
_flashbase:
|
||||||
|
.word 0x40022000
|
||||||
|
_addr:
|
||||||
|
.word 0
|
||||||
|
_size:
|
||||||
|
.word 12
|
||||||
|
_data:
|
||||||
|
.word 0xAAAAAAAA
|
||||||
|
.word 0xBBBBBBBB
|
||||||
|
.word 0xCCCCCCCC
|
Loading…
x
Reference in New Issue
Block a user