LTIB原来的U-boot版本为u-boot-2009.11-rc1,本节的内容是移植最新的u-boot到ltib中。移植成功后可以在原来的uboot版本和现在的uboot版本中进行选择编译。本小节只讲述如何如何移植,u-boot本身的分析可以参考本人编著的《嵌入式开发应用笔记》。
从denx官网下载u-boot-2012.04-rc3(这时本笔记使用的版本,您也可以下载其他的希望移植的版本,此处仅是一个示例),这是当前最新的U-boot版本。之后开始移植工作,过程如下:
首先,将U-Boot源码包拷贝到/opt/freescale/pkgs目录下;
然后,新建u-boot-2012.04-rc3-mpc8308erdb.spec.in文件,也可以拷贝相似文件,在其基础上进行修改。之后增加如下内容(spec文件的格式在‘添加一个全新的包到根文件系统’一节中有简单介绍):
# template = u-boot-common.tmpl %define pfx /opt/freescale/rootfs/%{_target_cpu} %define dversion rc3 Summary : Universal Bootloader firmware Name : u-boot Version : 2012.04 Release : 1 License : GPL Vendor : Freescale Packager : [email protected] Group : Applications/System URL : git://git.ap.freescale.net/scm/%{name}-mpc8315-jyt.git Source : %{name}-%{version}-%{dversion}.tar.bz2 BuildRoot : %{_tmppath}/%{name} Prefix : %{pfx} %Description %{summary} The source is taken from //ftp.denx.de/pub/u-boot and add in patches for MPC8308erdb. %Prep %setup -n %{name}-%{version}-%{dversion} |
修改完后,将其保存。然后修改mian.lkc文件,该文件所在目录为:
/freescale/PPC/ltib-mpc8308erdb-20100413/config/platform/mpc8308erdb
在comment “Bootloader”( mian.lkc文件中的内容,可以执行搜索找到)下添加对uboot的选择,简单的修改内容如下:
choice prompt "u-boot version" default VER_U_BOOT1 help This menu let you choose the u-boot version
config VER_U_BOOT1 bool "u-boot-2009.11-rc1-mpc8308erdb" config VER_U_BOOT2 bool "u-boot-2012.04-rc3-mpc8308erdb" endchoice
config PKG_U_BOOT string default "u-boot-2009.11-rc1-mpc8308erdb" if VER_U_BOOT1 default "u-boot-2012.04-rc3-mpc8308erdb" if VER_U_BOOT2 |
上面完成对新版本的选择菜单支持,接下来需要为该选项增加软件包的支持,修改内容(红色部分)如下:
config PKG_U_BOOT_CONFIG_TYPE string default "MPC8308ERDB_config" if PKG_U_BOOT_GENERAL && VER_U_BOOT1 default "MPC8308ERDB_NAND_config" if PKG_U_BOOT_NAND default "MPC8308ERDB_NAND_ECC_OFF_config" if PKG_U_BOOT_NAND_ECCOFF default "MPC8308ERDB_16bit_config" if PKG_U_BOOT_16BIT default "MPC8308RDB_config" if PKG_U_BOOT_GENERAL && VER_U_BOOT2 |
需要修改的地方已经全部完成了,接下来可以在配置菜单中选择所移植的新的U-Boot版本并编译它。
执行./ltib –m config选择新增的UBOOT包(该命令只配置不编译)。
配置完成之后,可以通过执行./ltib -m listpkgs | grep ' y ' (注意y与单引号之间有空格)查看是否修改成功。可以看到选择的u-boot包已经变成了我们新增的包。
对比:
最后,执行./ltib 完成编译。