led.S
#define GPIO_BASE 0x01C20800
#define GPIO_PH_CFG2_BASE (GPIO_BASE + 0x104)
#define GPIO_PH_DAT_BASE (GPIO_BASE + 0x10C)
.global _start
_start: b reset
reset:
ldr r0, =GPIO_PH_CFG2_BASE
ldr r1, [r0]
bic r1, r1, #(0x7 << 20)
orr r1, r1, #(0x01 << 20)
str r1, [r0]
bic r1, r1, #(0x7 << 16)
orr r1, r1, #(0x01 << 16)
str r1, [r0]
loop:
ldr r0, =GPIO_PH_DAT_BASE
bl led1_on
bl delay
bl led1_off
bl delay
bl led2_on
bl delay
bl led2_off
bl delay
b loop
led1_on:
ldr r1, [r0]
orr r1, r1, #(0x01 << 21)
str r1, [r0]
mov pc, lr
led1_off:
ldr r1, [r0]
bic r1, r1, #(0x01 << 21)
str r1, [r0]
mov pc, lr
led2_on:
ldr r1, [r0]
orr r1, r1, #(0x01 << 20)
str r1, [r0]
mov pc, lr
led2_off:
ldr r1, [r0]
bic r1, r1, #(0x01 << 20)
str r1, [r0]
mov pc, lr
delay:
mov r5, #0x0
ldr r4, =0x3ffff
minus:
sub r4, r4, #1
cmp r5, r4
bne minus
mov pc, lr
编译
arm-linux-gnueabihf-gcc -c led.S -o led.o
添加sunxi头
./mksunxiboot led.o led.bin
烧写到TF卡
sudo dd if=led.bin of=/dev/sdb bs=1024 seek=8