Chinaunix首页 | 论坛 | 博客
  • 博客访问: 646094
  • 博文数量: 113
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 4176
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-15 20:22
个人简介

最大化我的市场价值

文章分类

全部博文(113)

文章存档

2013年(113)

分类: LINUX

2013-02-24 22:31:37

uboot移植方略


UbootARM开发中的移植,网上的移植攻略很多,良莠不齐,不免让人眼花缭乱,弄得一头雾水。对于初学者(注:笔者也是初学者哈),笔者认为,要想真正熟练掌握ubootARM核上的移植工作,应该从以下几个阶段去实践:

一、抄袭

针对自己手头的开发板,寻找一个前人已经移植成功的,且与自己想实现的功能比较接近的uboot,对其直接编译下载,验证运行结果是否与作者描述的一致,如果一致,接下来就可以认真研究作者是如何完成了移植工作。

二、研究

    对作者的移植源码进行分析,相比于官网发行的uboot版本,观察作者的版本进行了哪些修改,可以使用diff指令来实现比较。在已经了解uboot启动流程的基础上,深入理解针对本开发板,作者在官网发行的uboot的基础之上做了哪些修改。可以针对解压源码的文件和文件夹(以u-boot-2009.08为例),详细地列出一个清单,凸显出作者如何进行的移植工作。如下表1所示:

 

目录

移植方式

涉及的文件

board

添加

添加 \gy

添加 \gy\**2440

common

修改

cmd_load.c

cmd_mem.c

cmd_mmc.c

cmd_nand.c

serial.c

cpu

修改|添加

\arm920t\s3c24x0\interrupts.c

\arm920t\s3c24x0\Makefile

\arm920t\s3c24x0\mmc.c  --- 添加

\arm920t\s3c24x0\speed.c

\arm920t\s3c24x0\timer.c

\arm920t\s3c24x0\usb.c

\arm920t\s3c24x0\usb_ohci.c

\arm920t\config.mk

\arm920t\start.S

drivers

修改|添加

\i2c\s3c24x0_i2c.c

\mtd\nand\nand_base.c

\mtd\nand\nand_util.c

\mtd\nand\s3c2410_nand.c

\net\dm9000x.c

\rtc\s3c24x0_rtc.c

\serial\serial_s3c24x0.c

\usb\host\ohci-hcd.c

\vedio\cfb_console.c

\vedio\Makefile

\vedio\s3c2410_fb.c  --- 添加

\vedio\videomodes.c

\vedio\videomodes.h

include

修改|添加

\asm-arm\arch-s3c24x0\mmc.h    --- 添加

\asm-arm\arch-s3c24x0\regs-sdi.h  --- 添加

\configs\mini2440.h             --- 添加

\linux\mtd\mtd.h

common.h

mmc.h

part.h

s3c24x0.h

s3c2410.h

serial.h

lib_arm

修改

board.c

net

修改

bootp.c

bootp.h

net.c

nfs.c

rarp.c

sntp.c

tftp.c

根目录

修改

Makefile

表1 移植清单

    认真分析源码,深入理解作者移植工作的来龙去脉,为以后自己的移植工作打下坚实的基础。

三、实践

    有了前面的准备工作,我们就可以针对自己的开发板,针对不同版本的uboot量身定制自己的uboot移植了。恰当选择一个合适的uboot版本和编译工具链,针对自己想实现的功能,详细罗列一个清单,然后一个功能一个功能地去实现,例如:

 

1.LED有指示,串口有数据输出;

2.液晶console有LOGO;

3.支持网络功能;

4.支持usb下载功能;

5.添加MMC|SD卡、USB驱动;

6.支持基于ram、flash存储设备的文件系统:ramdisk、initramfs、yaffs|yaffs2、jffs|jffs2等;

7.对内核的引导。

   

如果没有十足的把握,切忌一股脑将所有的代码都修改完了再去debug各个功能的实现,这样只会增加调试的难度。

四、创新

    根据自己的工作需要,发挥自己的聪明才智,更加巧妙的实现各种功能,或者添加前人未实现的新功能,让uboot的功能更加完善。

五、总结

    好记性不如烂笔头,理论与实践紧密结合,在移植工作中不断归纳总结,积累经验,定能熟能生巧。在再现别人的移植成果的过程中,有必要了解对方选择了怎样的主机环境、u-boot版本、编译工具、集成开发环境、硬件支持(开发板)等。遇到了问题,戒骄戒躁,度娘、谷哥之,或者到各大论坛发帖求助,或者找有经验的同事、同学和老师求助,只要自己有信心有决心,我相信问题都会迎刃而解的。

以上,是我个人的一些粗浅心得,欢迎各位朋友留言批评指正。祝大家学习、使用linux愉快!


阅读(1338) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~