Added Flash programming stubs.

This commit is contained in:
Gareth McMullin 2011-02-12 22:09:38 +13:00
parent df5c3d06d5
commit 7de78bbd6c
3 changed files with 89 additions and 0 deletions

5
flashstub/README Normal file
View 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
View 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
View 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