- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编点亮 LED
(1)确定任务
对CPU的GPIO编程,I/O输出低电平则LED灯亮,输出高电平,则LED灯灭。
(2)电路原理图
GEC210实验箱上提供了4个可编程用户 LED,原理图如下:
可见,LED1,2,3,4 分别使用的 CPU 端口资源为 GPJ2_0,1,2,3
(3)软件设计
源码对应目录1-led_s
1. start.S
由原理图可知,点亮 GEC210 的 4 个 LED 需如下 2 个步骤:
第一步: 设置寄存器 GPJ2CON,使 GPJ2_0/1/2/3 四个引脚为输出功能;
第二步: 往寄存器 GPJ2DAT 写 0,使GPJ2_0/1/2/3四个引脚输出低电平, 4个LED会亮;相反,
往寄存器 GPJ2DAT 写 1,使 GPJ2_0/1/2/3 四个引脚输出高电平,4 个 LED 会灭;
以上两个步骤即为start.S中的核心内容,start.S里面涉及的汇编指令请自行学习GNU汇编指令集,这里不再进行赘述。
2. Makefile
代码如下:
led.bin: start.o
arm-linux-ld -Ttext 0-o led.elf $^
arm-linux-objcopy -O binary led.elf led.bin
arm-linux-objdump -D led.elf led_elf.dis
%.o : %.S
arm-linux-gcc -o $@ $ -c
clean:
rm *.o *.elf *.bin
关于 Makefile 网上的相关资料相当多,这里推荐《跟我一起写 makefile》,以方便用
户后续的学习和查阅,下面我们只是进行粗略地讲解 Makefile。 当用户在 Makefile 所在目录下执行 make 命令时,系统会进行如下操作:
第一步 执行 arm-linux-gcc -o $@ $ -c 命令将当前目录下存在的汇编文件和 C 文件编译成.o文件;
第二步 执行 arm-linux-ld -Ttext 0 -o led.elf $^将所有.o 文件链接成 elf 文件,-Ttext 0示程序的运行地址是0由于目前我们编写的代码是位置无关码, 所以程序能在任何一个地址上运行;
第三步 执行 arm-linux-objcopy -O binary led.elf led.bin 将 elf 文件抽取为可在开发板上
运行的 bin 文件;
第四步 执行 arm-linux-objdump -D led.elf led_elf.dis 将 elf 文件反汇编后保存在 dis 文
件中,调试程序时可能会用到;
(4)编译代码和烧写运行
1)裸机开发需要用到arm-linux-objcopy、 arm-linux-ld、 arm-linux-objdump,但实际上缺失的,需要作链接。
#cd /usr/local/arm/4.5.1/bin //进入编译器路径
#ln –s arm-none-linux-gnueabi-objcopy arm-linux-objcopy //作链接
#ln –s arm-none-linux-gnueabi-ld arm-linux-ld
#ln –s arm-none-linux-gnueabi-objdump arm-linux-objdump
#ls –la //显示指向信息
2)编译裸机程序
在ubuntu中 编译裸机程序,生成***.bin二进制文件,把***.bin放在windows系统中。
3)使用tftp(tftp32.exe)工具,实现裸机程序放在开发板中运行。
windows系统中tftp是服务器,实验箱中有uboot的tftp客户端,工作时, tftp客户端发送请求, tftp服务器发送数据文件。
4)在目标机中(在putty中)设置、操作
实验箱启动3秒内按回车键,选择[e]退出进入命令行。
a) 设置windows IP,例如:03
b) 参考裸机手册P35,在目标机上操作
# setenv serverip 03
#setenv ipaddr 06
#setenv gatewayip
#saveenv
c) 打开tftp32.exe工具,选择下载文件所在的文件夹
d) #tftp 0 ***.bin //tftp传输
#go 0 //执行运行命令
(5)实验现象
L
文档评论(0)