aboutsummaryrefslogtreecommitdiff
path: root/flashstub/nrf51.s
diff options
context:
space:
mode:
Diffstat (limited to 'flashstub/nrf51.s')
-rw-r--r--flashstub/nrf51.s40
1 files changed, 40 insertions, 0 deletions
diff --git a/flashstub/nrf51.s b/flashstub/nrf51.s
new file mode 100644
index 0000000..e23b613
--- /dev/null
+++ b/flashstub/nrf51.s
@@ -0,0 +1,40 @@
+.global _start
+
+_start:
+ ldr r0, _ready
+ ldr r1, _addr
+ mov r2, pc
+ add r2, #(_data - . - 2)
+ ldr r3, _size
+_next:
+ cmp r3, #0
+ beq _done
+ @ Write data to flash
+ ldr r4, [r2]
+ str r4, [r1]
+
+_wait: @ Wait for READY bit
+ ldr r4, [r0]
+ mov r6, #1
+ tst r4, r6
+ beq _wait
+
+ sub r3, #4
+ add r1, #4
+ add r2, #4
+ b _next
+_done:
+ bkpt
+
+@.align 4
+.org 0x24
+_ready:
+ .word 0x4001E400
+_addr:
+ .word 0
+_size:
+ .word 12
+_data:
+ .word 0xAAAAAAAA
+ .word 0xBBBBBBBB
+ .word 0xCCCCCCCC