ARM嵌入式裸机程序学习(一)

这里不用ADS集成开发环境,因为ads兼容性存在问题,而且通过自己手动编译\链接对学习有好处,所以我们下面都在linux环境下进行ARM开发。

开发环境:Linux操作系统(Ubuntu)

开发工具:
arm-linux-gdb-7.5
eclipse-cpp-helios-SR2-linux-gtc
arm-linux-gcc-4.3.2
JLink_linux_V434a
dnw
dnw_usb.ko

一、交叉编译器(arm-linux-gcc)的使用

LED裸机程序,范例代码如下:
[root@localhost lesson]#ls
led.lds led.S Makefile

下面是编译成二进制文件步骤:

[root@localhost  lesson]# arm-linux-gcc -g -c led.s
[root@localhost  lesson]#ls
led.lds    led.S   Makefile   led.o

可以看到生成了led.o文件。(编译汇编程序)

[root@localhost  lesson]# arm-linux-ld -Tled.lds -o led.elf  led.o
[root@localhost  lesson]#ls
led.lds    led.S   Makefile   led.o   led.elf

可以看到生成了 led.elf文件。(链接生成elf,led.lds是链接器脚本)

[root@localhost  lesson]# arm-linux-objcopy -O binary led.elf led.o
[root@localhost  lesson]#ls
led.lds    led.S   Makefile   led.o   led.elf  led.bin

可以看到生成了 led.bin文件。(把elf转换成bin二进制格式文件就可以下载到开发板运行了)

我们可以发现上面编译的过程特别繁琐,假如我们每次修改程序都有把三面三条指令再执行一遍吗? 答案当然不是。
这就需要我们的Makefile上场了。

我们先清除前面手动编译产生的二进制文件:

[root@localhost  lesson]#make clean
[root@localhost  lesson]#ls
led.lds    led.S   Makefile   led.o

可以看到前面产生的文件清除了。

下面我们尝试在项目目录下执行make指令。
[root@localhost lesson]#make
[root@localhost lesson]#ls
led.lds led.S Makefile led.o led.elf led.bin
可以看到一个make指令就搞定了编译、链接、及生成二进制可执行文件。一切都是因为有Makefile这个文件。

文章待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yfw&武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值