在uboot啓動起來後,通過System.map 可以得到 43e00000 T _start
接下來,通過彙編實現對led的控制。
#define GPM4BASE 0x11000000
#define GPM4CON 0x2e0
#define GPM4DAT 0x2e4
.align 2
.text
.global _start
_start:
mov ip, sp
push {fp, ip, lr, pc}
sub fp, ip, #4
@set GPM4[0:3] as output
ldr r0, =GPM4BASE
ldr r1, [r0, #GPM4CON]
bic r1, #0xff
bic r1, #0xff00
orr r1, #0x11
orr r1, #0x1100
str r1, [r0, #GPM4CON]
loop:
ldr r0,=GPM4BASE
@led on all
ldr r1,[r0,#GPM4DAT]
bic r1,#0x0f
str r1,[r0,#GPM4DAT]
bl delay
@led on off
ldr r1,[r0,#GPM4DAT]
orr r1,#0x0f
str r1,[r0,#GPM4DAT]
bl delay
b loop
delay:
stmfd sp!,{r0-r12, lr}
mov r0, #0x1000000
checkdelay:
cmp r0,#1
beq end
sub r0,#1
b checkdelay
end:
ldmfd sp!, {r0-r12, pc}
arm-linux-gcc -c -mapcs led.S
arm-linux-ld led.o -Ttext=0x50000000 -o arm
arm-linux-objcopy -O binary arm arm.bin //從arm可執行文件中拷貝出除過頭信息以外的二進制可執行文件到arm.bin
arm-linux-objdump -d arm > arm.S
發送到開發板,實現led燈閃爍效果