代码编辑分析:(运行时可以删除注释,开发板为mini2440)
创建汇编文件led_on.S
.global _start
-start:
LDR R0,=0X56000010 //设置LED的GPIO控制寄存器GPBCON的模式为输出模式,0X56000010为GPB的控制器地址,0X00000400:知设置GPB5的端口为 输出模式是第10位和第11位为10则其余0~9位补0,得到100000000000b,换算为十六进制则为0X00000400
MOV R1,#0X00000400
STR R1,[R0]
LDR R0,=0X56000014//0X56000014:GPBDAT寄存器地址,0X00000000:拉低GPB口的电压
MOV R1,#0X00000000
STR R1,[R0]
MAIN_LOOP://循环
B MAIN_LOOP
Makefile文件
led_on.bin:led_on.S
arm-linux-gcc -g -c -o led_on.o led_on.S
arm-linux-ld -Ttext 0x00000000 -g led_on.o -o led_on_elf
arm-linux-objcopy -o binary -S led_on_elf led_on.bin
clean:
rm -f led_on.bin led_on_elf *.o
编译:
利用samba服务上传,通过终端进入上传文件,编译命令make
生成led_on.bin文件
测试:
下载到开发板,可以按照手册上的下载到内存运行,即在nor flash模式下启动,打开window终端和DNW下载led_on.bin
总结:万事开头难,这样简单的程序对那些高手而言可能不值一提,但是对于初学者来说真的步步维艰,希望这样的分析,为自己的学习做个记录,也为大家提供个参照。