uboot移植到S3C44B0X开发板的经历 Sam Fei (email: samfe@163.com)
(1) 事情来由
几个月前从朋友那里拿到了一块参考Micetek EV44b0-II开发板设计的板子,对其bootloader MBL感觉很不错. 朋友说可能是移植u-boot的.但Micetek并没有提供MBL的源代码, 因此当时没有仔细去研究. 最近公司准备想做基于S3C44B0X CPU的产品,因此购买了杭州立宇泰公司(www.hzlitai.com.cn)的armsys-c及armsys-b开发板和.armsys提供的bootloader是其公司自己开发的bootloader,觉得其USB这一块做的还可以,但利用USB下载调试uclinux是非常麻烦的,操作很不爽,其bootloader也不提供网络下载调试.因此自己计划移植u-boot.
(2) 开始 由于没有接触过u-boot,因此第一步要做的就是google一些资料. u-boot官方网站:http://sourceforge.net/projects/u-boot(比较慢) http://u-boot.sourceforge.net/这个快一些.
DENX U-Boot及Linux使用手册: http://coosign.blogchina.com/coosign/1318487.html, 这是一遍翻译的文档.主要介绍了u-boot编译及使用的命令.但没有涉及新板子的移植流程.
根据上面手册中的说明,下载了最新的u-boot代码,命令: #cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/u-boot login #cvs -z6 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/u-boot co -P u-boot
到board目录查了一下: #cd u-boot #cd board #find . -e!xec grep -l 44B0 {} \; 结果是: ./dave/B2/B2.c B2网站是: http://www.dave-tech.it,初初看了B2开发板的介绍,但不详细.包括使用的网络芯片等都没有介绍.
google "u-boot 移植"后查到一篇文章: "收集了一些关于U-BOOT的文章" http://www.bloghome.cn/index.php?op=ViewArticle&articleId=2111&blogId=390
里面搜集了不少关于u-boot移植的问题. 里面介绍了"U-Boot 在44B0X 开发板上的移植以及代码分析"的内容,仔细看了看.发现其移植的版本比较低,但对了解u-boot结构是满不错的,因为这个版本不支持44B0X,因此完全是支持新CPU的移植.了解到make XX_config是在Makefile中定义的. 另外"MPC8xx的U-Boot移植体会(ZT) "这一篇对u-boot介绍满详细的.但对移植工作只做了理论性和经验性介绍,没有具体的操作步骤.
"基于Atmel at91rm9200的armlinux的bootloader启动代码分析 " http://www.linuxfans.org/nuke/modules.php?name=News&file=print&sid=2765 里面介绍了u-boot移植到at91rm9200上的情况,可以参考一下.
另外就是仔细阅读u-boot下的README文件.
(3) 编译一把
看了相关的资料,心动不如行动.先编译一把看看情况.既然只有B2开发板是S3C44B0X CPU的,因此先编译一下B2开发板看看. 具体: #cd u-boot #make B2_config #make 结果顺利,成功编译.
(4) 开始动手移植
我以B2板子的程序做为模板来做. #cd board #cp -r dave wx (自己取个公司名wx) #cd wx #mv B2 wx20 (自己取个板子名wx20) #cd wx20 # mv B2.c wx20.c 修改Makefile及wx20.c, 主要是B2改成wx20.
增加配置文件: #cd include/configs #cp B2.h wx20.h 修改Makefile配置文件,增加wx20_config. 1432 wx20_config : unconfig 1433 @./mkconfig $(@:_config=) arm s3c44b0 wx20 wx [注:前面的数字是文件行号,以下一样]. 将board/wx目录下和wx20.h文件中的B2改成wx20或WX20.
这里其实是最重要的步骤,就是根据硬件的情况来修改相关的参数.由于对硬件板子的情况不是太了解,因此此时最需要的就是耐心地看看硬件资料.主要修改的地方有: include/configs/wx20.h ---- 配置文件,大部分参数是这里配置的. board/wx/wx20/lowlevel_init.S -- 内存参数配置 cpu/s3c44b0/serial.c -- 串口配置 cpu/s3c44b0/start.S -- 程序入口
如果此时配置全部正确了,那么我们就简单的很了.(如果你用我的patch的话,就是如此了!)那么我也就不会仔细再去研究u-boot其他部分了. 困难就是你学习的最好机会! |