在电路板上移植U-Boot程序

分享到:
           

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

    开始移植U-Boot之前,要先熟悉硬件电路板和处理器,确认U-Boot是否已经支持新开发板的处理器和I/O设备。假如U-Boot已经支持一块非常相似的电路板,那么移植的过程将非常简单。移植U-Boot工作就是添加开发板硬件相关的文件、配置选项,然后配置编译。开始移植之前,需要先分析一下U-Boot已经支持的开发板,比较出硬件配置接近的开发板。选择的原则是,首先处理器相同,其次处理器体系结构相同,然后是以太网接口等外围接口相同。还要验证一下这个参考开发板的U-Boot,至少能够配置编译通过。

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

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

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

    参考上面两行,添加下面两行:

    fs2410_config : unconfig
         @./mkconfig $(@:_config=) arm arm920t EduKit2410 NULL s3c24x0

    (2)创建一个新目录存放开发板相关的代码,并且添加新文件。
     ① board/fs2410/config.mk。
     ② board/ fs2410/flash.c。
     ③ board/ fs2410/EduKit2410.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在开发板上能够正常启动。调试的过程是很艰难的,需要借助工具,并且有些问题可能会困扰很长时间。

    本文选自华清远见嵌入式培训教材《从实践中学嵌入式Linux应用程序开发》

   热点链接:

   1、在电路板上移植U-Boot程序
   2、U-Boot编译过程解析
   3、U-Boot源代码下载地址
   4、Bootloader的种类
   5、配置主机交叉开发环境

更多新闻>>