如何将基于Exynos4412的U-Boot引导程序移植成?

摘要:【Linux】基于Exynos4412的U-Boot引导程序移植 零、准备 首先我们得去下载好U-Boot的源码,因为用的芯片是2012年出的Exynos4412,因此我们选择这个时间节点附近的U-Boot版本。本文选择U-Boot的v20
【Linux】基于Exynos4412的U-Boot引导程序移植 零、准备 首先我们得去下载好U-Boot的源码,因为用的芯片是2012年出的Exynos4412,因此我们选择这个时间节点附近的U-Boot版本。本文选择U-Boot的v2013.01.01版本。 U-Boot官方网站:https://www.u-boot.org/ U-Boot下载页面:https://ftp.denx.de/pub/u-boot/ U-Boot-v2013.01.01版本下载页面:https://source.denx.de/u-boot/u-boot/-/tree/v2013.01.01 U-Boot-v2013.01.01版本下载链接:https://ftp.denx.de/pub/u-boot/u-boot-2013.01.01.tar.bz2 下载后得到如下文件: 另外我们需要一套ARM的交叉编译工具链,交叉编译工具本文不介绍。 壹、初次编译 1. 解压 使用如下命令解压: yu@Yubuntu:~/ex4412/uboot$ tar -vxf u-boot-2013.01.01.tar.bz2 得到如下文件夹: 进入到u-boot-2013.01.01文件夹中去,准备移植工作。 2. 设置编译器 我们在编译U-Uoot源码之前需要指定我们使用的处理器架构和编译器,指定的方式有两种,一种是通过make命令参数临时指定,一种是修改Makefile文件永久指定,两种方式各有优缺点。 因为我们是针对于ARM处理器的移植,所以选择修改Makefile更方便些。 使用如下命令修改Makefile文件: yu@Yubuntu:~/ex4412/uboot/u-boot-2013.01.01$ vi Makefile 将185行的变量CROSS_COMPILE直接指定为我们交叉编译工具的前缀arm-none-linux-gnueabi-,注意后面不要有空格。 修改好后保存退出。 3. 添加板子(Board)信息 每个人使用的开发板都有可能不同,U-Boot不可能支持所有的开发板,故有时候需要我们自己在U-Boot中添加对我们板子的支持。 U-Boot中支持了一部分板子,为了减少工作量提高效率,我们可以选择一款与我们板子相近的板子作为基础,我们可以在此基础之上进行针对我们板子的修改。 这边我选择的是Samsung公司的Origen。 3.1 使用如下命令把Origen的代码复制一份并且重命名: yu@Yubuntu:~/ex4412/uboot/u-boot-2013.01.01$ cp -rf board/samsung/origen/ board/samsung/ex4412 # 复制源码 yu@Yubuntu:~/ex4412/uboot/u-boot-2013.01.01$ mv board/samsung/ex4412/origen.c board/samsung/ex4412/ex4412.c # 重命名 yu@Yubuntu:~/ex4412/uboot/u-boot-2013.01.01$ yu@Yubuntu:~/ex4412/uboot/u-boot-2013.01.01$ cp include/configs/origen.h include/configs/ex4412.h # 复制头文件 3.2 复制代码后,我们还需要对Makefile文件进行修改,让我们复制出来的代码能够正常编译。 使用如下命令修改Makefile文件: yu@Yubuntu:~/ex4412/uboot/u-boot-2013.01.01$ vi board/samsung/ex4412/Makefile 把31行的COBJS += origen.o改为COBJS += ex4412.o后保存退出。 3.3 我们还需要让我们的代码能够被编译进U-Boot中,即添加U-Boot对我们板子的支持,类似于在U-Boot中注册我们的板子。 使用如下命令编辑U-Boot的配置文件: yu@Yubuntu:~/ex4412/uboot/u-boot-2013.01.01$ vi boards.cfg 我们把我们参考的板子的配置信息复制一行,修改为我们的板子。修改完成后保存退出,这样我们就在U-Boot中注册了我们的板子了。 3.4 为了区别于其他板子的U-Boot程序,我们有时候需要在程序运行时输出一些提示信息,此类信息对程序运行影响不大,主要是供开发者调试,因此是可选的操作。
阅读全文