---------------------------写在前面
已经好久没有玩单片机了,之前玩的stm32根本就不算是学习,只是单纯地使用之前学过的51知识和调用原子的库函数,菜得一匹。有什么不对的地方,还请大家指正,谢谢。
参考:
http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T2/zh#.E7.BC.96.E8.AF.91U-Boot
开发板是使用友善之臂的nanoPc T2,Soc是S5P4418,其他的外设自己看wiki吧,上面都有。我觉得挺不错的,虽然我就只用过这家的,但是用起来还是不错的。
http://weibo.com/p/1001603914482173772682
这是我参考的例程,虽然我没有进去看,(因为我没有微博。。。。)但是我有他的全部相关资料源码,就是整理的微博上的。叫做迪卡大佬,强得一匹。
----------------------------正文
3.编译生成bin文件的话,我们需要s5p4418认可的二进制“语言”,他才能够按照我们的命令执行。所以,我们需要的工具有:
交叉编译工具链:arm-linux-gcc,这个从友善的wiki上面下载,那是肯定没问题的,自己捣鼓的话,就怕下载的编译器不适用于该硬件平台,我就有过这经历,那时候是第一次进行交叉编译,目的是为了编译出arm上能用的qt库,和让他能运行qt程序。这里就不多说了,qt的博文得等以后把一些坑给解决后再一起写了。总之,就是交叉编译工具必须要配对,而官方给的肯定是ok的。
dd工具或者winhex烧写程序:dd是linux平台上面的一个工具,作用是把某些数据转移到某个文件上,通常是用于写img啥的。winhex就是一个dd的IDE,可以在win下面运行的程序,等下我都介绍一下,并且说明为啥要用他们。
ok,首先你先下载好交叉编译工具链,
arm-linux-gcc -c inputfile -o outputfile 这个命令是只编译生成汇编生成目标文件不链接。
arm-linux-ld -Ttext=0x42c00000 inputfile -o outputfile 这个命令是链接用的
下面我来解释一下:
1.分开来编译链接是因为我们要写出一个裸机程序,我们的目标机(即nanoPc)上没有跑系统,所以我们如果用arm-linux-gcc直接编译链接的话,生成的文件头格式中包含了很多信息,而且我往下讲到我们这里使用的方法你就会明白了。
2.使用这个数据搬移的工具要