原创 U-Boot 移植

2010-9-3 15:26 1947 12 12 分类: MCU/ 嵌入式

来源:http://blog.chinaunix.net/u2/66039/showart_571021.html


U-Boot能够支持多种体系结构的处理器,支持的开发板也越来越多。因为Bootloader是完全依赖硬件平台的,所以在新电路板上需要移植U-Boot程序。


开始移植U-Boot之前,先要熟悉硬件电路板和处理器。确认U-Boot是否已经支持新开发板的处理器和I/O设备。假如U-Boot已经支持一块非常相似的电路板,那么移植的过程将非常简单。


移植U-Boot工作就是添加开发板硬件相关的文件、配置选项,然后配置编译。


开始移植之前,需要先分析一下U-Boot已经支持的开发板,比较出硬件配置最接近的开发板。选择的原则是,首先处理器相同,其次处理器体系结构相同,然后是以太网接口等外围接口。还要验证一下这个参考开发板的U-Boot,至少能够配置编译通过。


以S3C2410处理器的开发板为例,U-Boot-1.1.2版本已经支持SMDK2410开发板。我们可以基于SMDK2410移植,那么先把SMDK2410编译通过。


我们以S3C2410开发板fs2410为例说明。移植的过程参考SMDK2410开发板,SMDK2410在U-Boot-1.1.2中已经支持。


移植U-Boot的基本步骤如下。


(1)在顶层Makefile中为开发板添加新的配置选项,使用已有的配置项目为例。


 


smdk2410_config   :       unconfig


         @./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0


 


参考上面2行,添加下面2行。


 


fs2410_config   :       unconfig


      @./mkconfig $(@:_config=) arm arm920t fs2410 NULL s3c24x0


 


(2)创建一个新目录存放开发板相关的代码,并且添加文件。


board/fs2410/config.mk


board/fs2410/flash.c


board/fs2410/fs2410.c


board/fs2410/Makefile


board/fs2410/memsetup.S


board/fs2410/u-boot.lds


(3)为开发板添加新的配置文件


可以先复制参考开发板的配置文件,再修改。例如:


$cp include/configs/smdk2410.h  include/configs/fs2410.h


如果是为一颗新的CPU移植,还要创建一个新的目录存放CPU相关的代码。


(4)配置开发板


$ make fs2410_config


(5)编译U-Boot


执行make命令,编译成功可以得到U-Boot映像。有些错误是跟配置选项是有关系的,通常打开某些功能选项会带来一些错误,一开始可以尽量跟参考板配置相同。


(6)添加驱动或者功能选项


在能够编译通过的基础上,还要实现U-Boot的以太网接口、Flash擦写等功能。


对于FS2410开发板的以太网驱动和smdk2410完全相同,所以可以直接使用。CS8900驱动程序文件如下。


drivers/cs8900.c


drivers/cs8900.h


对于Flash的选择就麻烦多了,Flash芯片价格或者采购方面的因素都有影响。多数开发板大小、型号不都相同。所以还需要移植Flash的驱动。每种开发板目录下一般都有flash.c这个文件,需要根据具体的Flash类型修改。例如:


board/fs2410/flash.c


(7)调试U-Boot源代码,直到U-Boot在开发板上能够正常启动。


调试的过程可能是很艰难的,需要借助工具,并且有些问题可能困扰很长时间。

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条