您的位置:首页 > 其它

成功移植u-boot-2009.03到adm5120平台上

2009-06-16 15:21 288 查看
adm5120是一款做家用路由器的mips 4Kc系列的SOC芯片.

最近的工作是围绕着这个芯片来的.大部分的工作都是参考www.linux-mips.org/,但是之前已经用过和移植过u-boot-2009.03在arm,也很想看看移植到这个mips的SOC上有什么特别的地方.

结果发现是比较简单的,因为mips的代码没有太大的结构改变,原来有1.1.6的u-boot,改动了一些宏定义的命名----这里是需要很仔细的,除了改对应的地方,还要去看有哪些相关的地方.

因为是一个特定的SOC,而且不做的人估计都不熟悉,所以我总结一些通用的出来.

1.首先编译器要指定,在顶层的中完成CROSS_COMPILE配置(提示:这里是mips架构)

2.在cpu/mips/config.mk中进行配置,原来的4KCle什么的,其实就是一个根据CROSS_COMPILE名字来决定编译时使用little-endian还是big-endian,mips的gnu编译器有些不同时支持little和big所以是不能选的-EL或者-EB的(已经默认),这里要注意.同时u-boot有个example目录,下面的东西编译的时候也会遇到这种情况,也要相应的修改一下.

3.start.S里面有一个基本的流程,其中一个必要的环节是调用lowlevel_init,这里u-boot把这个环节提取出来就是为了不同的板子可以有独立的代码,因为adm5120有自己的MPMC(multi-port memory controller)所以代码与其他的MIPS不同.主要就是将SDRAM和总线都配置好,包括类型,速度,wait信号的使用等等.

4.建立stack,要知道stack是C代码运行的基本条件,大部分函数调用和参数传递都会用到它.

5.写一段汇编,GPIO的程序,先让你板子上的一个灯亮起来,对自己是一个鼓励~~也是验证程序是不跑起来了.

6.移植串口程序,串口有信息,你的调试才好弄,一般人自己是买不起仿真器什么的,就算买了,一个公司也不会买一堆,一人一个,所以还是要靠自己~~~让你的程序便于查错是一件很艺术,也很提高效率的事情,呵呵.adm5120的串口是一个类似pl010的东西,所以直接使用u-boot里面pl010的驱动就可以,但是要配置寄存器基地址和一些参数,这个就要看adm5120的datasheet了.

7.flash的命令,这个flash一定要是CFI的接口的,否则就有的忙活了呵呵,lucky,这个板子上就是,那么需要配置的信息不多,要注意flash的B的还是T的,所谓T/B就是Nor Flash里面会有几个sector大小和其他的不一样,一般都是通用的,但是还是要注意一下,仔细看看datasheet就行了.

8.移植网络程序,这里我基本上都是用1.1.6有的程序,稍微改了改因为里面有cache的使用,我把它去掉了,不用cache,因为和新代码的其它部分有冲突.adm5120的是个路由芯片,所以有很多网口,不要配错了,这里是很让人confused的,因为u-boot好了以后我无论连哪个口都可以...这一点我还不是很理解.

还有蛮多细节的,总结一点就是硬件知识,能多一点就多一点,至少要能看懂datasheet并且找出代码,寄存器和具体硬件的关系.

收获比较多,比起1个多月前,u-boot的makefile被我大部分看明白了,从头移植不好说(要看具体是什么芯片了),至少从低版本升级已经不算什么难事了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: