3.2 编译U-Boot和移植镜像文件
在源代码修改完成后,即可进行编译。编译U-Boot需要在Linux主机上建立交叉编译环境,本文使用Montavista公司的Montavista Linux Pro 4.0。在Linux主机上安装Montavista交叉编译工具后,设置环境变量,将Montavista工具链路径导入到主机系统的环境变量中。如:#gedit./.bash_profile,打开文件.bash_profile,增加PATH=$PATH:/opt/montavista/pro/devrocket/ppc/82xx/bin,然后删除之前可能错误创建的所有目标文件,并针对目标板编译。如下所示:
编译完成后,得到3个文件:1)u-boot:ELF格式的文件,可被多数Debug程序识别;2)u-boot.bin:二进制bin文件,U-boot的二进制执行代码,可通过JTAG接口下载到开发板;3)u-boot.srec: Motorola的S-Record格式文件,可通过BDM接口下载到开发板。
不同开发板对U-Boot镜像文件在Flash中的存放地址要求不同,这是由处理器中断复位向量决定的,与开发板硬件相关,源代码中U-Boot起始地址必须与硬件复位向量相符合。
使用MPC82xx系列处理器的主板是由硬件配置字(HRCW)决定的,如RPXlite板的中断复位向量设置为Ox00000100,因此U-B00t镜像文件必须烧写到Flash的起始位置。多数的PPC系列的处理器中断复位向量是Ox00000100和Oxfff00100,即高位启动和低位启动的Bootloader所在位置。U-boot镜像文件在Flash中的存放地址可通过设置U-Boot源码的<目标板>.h头文件中CFG_MONITOR_BASE以及board/<目标板>/confi-g.mk中的TEXT_BASE来与硬件配置相对应。
U-Boot镜像文件在Flash中烧录完成后,将目标板和主机的串口连接起来,目标板上电复位,即可在主机终端窗口看到串口回显的开发板上U-Boot的启动引导信息,如图2所示。
在终端窗口中输入help,可以列出U-Boot所有命令列表。然后测试网口和Flash读写,工作正常,则可以认为U-Boot移植工作基本完成,接下来可以添加一些其他功能,并进行Linux内核的引导和文件系统的移植。
4 结束语
Bootloader在嵌入式开发中是操作系统和硬件的枢纽。在U-Boot移植过程中,不仅要掌握U-Boot的结构和工作流程外还需要对硬件有一定了解。本文移植的U-Boot已稳定运行在开发板上,而且可以通过FIash和网络加载Linux内核和NFS文件系统,为后续开发奠定了良好的基础。对于不同的CPU和开发板,基本方法和步骤是相同的,本文的工作对于基于MPC82xx系列处理器的硬件平台的U-Boot移植具有借鉴意义,并对嵌入式Linux系统的开发提供了有益的技术参考。
上一页 [1] [2] [3] 下一页