ST-Link/V2 flash ROM writer
This commit is contained in:
39
tool/asm-thumb/flash_write.S
Normal file
39
tool/asm-thumb/flash_write.S
Normal file
@@ -0,0 +1,39 @@
|
||||
/* ARM Thumb Assembler code */
|
||||
// arm-none-eabi-gcc -Wa,-amhls=flash_write.lst -c flash_write.S
|
||||
|
||||
#define FLASH_CR_PG 0x0001 // == FLASH_SR_BSY
|
||||
#define FLASH_CR_ERRORS 0x0014 // == PGERR | WRPRTERR
|
||||
#define FLASH_SR_BSY 0x0001
|
||||
|
||||
#define FLASH_SR_OFFSET 0x0c
|
||||
#define FLASH_CR_OFFSET 0x10
|
||||
|
||||
#define COUNT 0x1000
|
||||
|
||||
.cpu cortex-m3
|
||||
.thumb
|
||||
movw r2, #COUNT
|
||||
ldr r0, .SRC_ADDR
|
||||
ldr r1, .TARGET_ADDR
|
||||
ldr r4, .FLASH_BASE_ADDR
|
||||
mov r5, #FLASH_CR_PG
|
||||
mov r6, #FLASH_CR_ERRORS
|
||||
mov r7, #0
|
||||
str r5, [r4, #FLASH_CR_OFFSET]
|
||||
0: ldrh r3, [r0, r7]
|
||||
strh r3, [r1, r7]
|
||||
1: ldr r3, [r4, #FLASH_SR_OFFSET]
|
||||
tst r3, r5
|
||||
bne 1b
|
||||
tst r3, r6
|
||||
bne 2f
|
||||
add r7, r7, #0x02
|
||||
cmp r7, r2
|
||||
bne 0b
|
||||
2: mov r7, #0
|
||||
str r7, [r4, #FLASH_CR_OFFSET]
|
||||
bkpt #0x00
|
||||
.align 2
|
||||
.FLASH_BASE_ADDR: .word 0x40022000
|
||||
.SRC_ADDR: .word 0x20000038
|
||||
.TARGET_ADDR: .word 0x08000000
|
||||
Reference in New Issue
Block a user