1、裸机开发流程:
(1)编写裸机程序;
(2)调试逻辑程序;
(3)生成二进制映象(编译,链接,格式转换);
(4)烧写、运行二进制映象;
2、安装交叉编译器
将ARM_Tools压缩包复制到Linux系统,然后解压;解压之后可以看到该目录下的文件;
然后安装工具链,其实就是解压;
解压:arm-linux-gcc-4.3.2.tgz -C / (通过-C指定解压到根目录中);根据解压的过程,可以知道是解压到了/usr/local/arm/4.3.2目录下;
在/usr/local/arm/4.3.2/bin目录下,可以看到以后需要使用的工具;
但是安装还没完成,还需要配置环境变量,否则会提示命令找不到;(如果使用命令时,前面加上完成路径,可以找到命令);
Linux系统找某个命令是从PATH环境变量所列出来的路径中去找的;
使用命令:vim /root/.bashrc修改环境变量;
在打开的文件中,添加:export PATH=$PATH:/usr/local/arm/4.3.2/bin
然后使用命令:source /root/.bashrc,使刚才配置的环境变量生效;
这样,命令就可以使用了!不会再提示找不到命令了!
3、编译裸机程序
将代码复制到Linux系统中;
使用命令:arm-linux-gcc -g -c led.S 进行编译,将裸机程序变成二进制映象文件,执行命令后,会有led.o产生;
然后使用命令:arm-linux-ld -Tled.lds -o led.elf led.o 进行链接,会产生led.elf产生,但是它的格式不对,这个格式不能直接烧写到开发板中运行,必须转换成二进制的;
然后使用命令:arm-linux-objcopy -O binary led.elf led.bin 会产生bin文件(二进制格式);
当把一个程序变成一个可以烧写的映象时,需要运行这么多命令,如果经常先修改程序是不是每一次都得运行这么多命令?
解决方法:写一个Makefile文件;
4、Makefile
首先运行命令:make clean,运行之后,可以看到led下的文件又恢复成最初状态;
然后运行make命令,可以看到之前用许多命令产生的文件,同样产生出来了,但是仅仅运行了一个make命令,没像之前运行那么多命令;
5、烧写程序到开发板
开发板中的nand flash作用相当于硬盘,那么我们要运行的程序比如操作系统或自己编写的一些程序,我们希望最终都是把它们安装到nand flash中去,所以要明确,编译好的裸机程序最终是被烧写到nand flash中去运行;
如何烧写到nand flash?2410的开发板会有nor flash;
6410或210的开发板没有nor flash,但是可以有SD卡,要把裸机程序烧写到nand flash去,方法都是利用nor flash或者SD卡里的系统安装辅助程序来帮我们烧写;
具体步骤:
(1)将系统安装辅助程序烧写到SD卡中;
(2)将SD卡插到开发板上;
(3)设置开发板跳线从SD卡启动;
(4)打开SecureCRT,查看串口号,设置串口连接;
(5)将手指按在空格键上,打开开发板的电源,可以安装到SD卡中的mmc.bin程序运行的界面;
(6)选择【1】,对nand flash进行格式化;
(7)选择【3】,通过USB下载线,下载bin文件,烧写到开发板中;我们下载的是一个裸机程序,性质上和U_Boot一致,所以在接下来的菜单中,我们选择【1】;
然后选择【1】;
(8)打开虚拟机,在右下角,引入USB下载线(和之前的步骤相同);
(9)然后安装USB下载线驱动;
(10)然后运行命令:./dnw ../led/led.bin 50008000 将bin文件下载到内存中去;
6410的开发板都是下载到50008000,内存中,然后辅助安装程序会自动从内存中渠道这个程序,然后烧写到nand flash中去;
(11)最后设置开发板从nand flash启动(因为我们是把程序烧写到nand flash中去了),就会看到程序运行的结果;
5、用到的工具:
交叉工具链、链接器脚本、Makefile;