这里不用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这个文件。