[tiny4412]u-boot啓動後點燈(二)

在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燈閃爍效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章