UBoot的编译与烧写

时间:2023-03-10 04:52:42
UBoot的编译与烧写

每当我们学习任何编译语言之前,第一节课都是介绍我们要学习的是什么,以及编译语言和工具,最后写一个小程序编译并运行就算入门,也就是所谓的“Hello, world!”。这里也不例外,带想学习UBoot的小伙伴学习UBoot的编译和烧写(主要是记录一下个人学习的过程),也就是UBoot的“Hello, world!”。

首先我们要弄明白是什么是U-Boot,注意我们常说的UBoot就是U-boot。

一、准备材料

可以根据自己的需要准备相应材料,以下是我自己使用的:

开发环境:VMware

操作系统:ubuntu

开发版:湃兔i2S-6UB

烧写工具:SD卡

二、环境配置

学习ARM架构的移植和应用开发主要用到的工具是交叉编译工具,所以需要在ubuntu安装配置交叉编译链工具。

交叉编译器的安装配置https://www.cnblogs.com/jzcn/p/14889438.html

注意:安装交叉编译器时需要注意版本号,有的开发版会提供自己更改的交叉编译器,我使用的版本号是6.2的,如下图所示:

UBoot的编译与烧写

三、下载UBoot文件

这里主要是下载开发版对应的UBoot文件,每个开发版都有对应的下载地址,一般都会在相应的学习资料里,如果没有的小伙伴可以找相应的店家。

这里是湃兔的下载地址http://i2som-zh.oss-cn-beijing.aliyuncs.com/i2SOM-iMX-uboot-904f545.tar.gz

下载完成后将文件拷贝到linux系统下进行解压,解压后会的目录如下图所示:

UBoot的编译与烧写

注意:编译时一定要在当前路径下才能编译

四、编译UBoot

1.清理项目工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

2.设置UBoot的默认配置文件

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- i2som_imx6ull_14x14_emmc_defconfig

编译完成后会生成“.config”,如下图所示:

UBoot的编译与烧写

注意:湃兔的默认配置文件是“i2som_imx6ull_14x14_emmc_defconfig”,不同厂商的默认配置文件有所不同,可与根据相应的资料查看。如湃兔官网的说明,如下图所示

UBoot的编译与烧写

3.编译UBoot项目工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

编译完成后会生成u-boot.imx文件,如下图所示:

UBoot的编译与烧写

注意:到这里UBoot的编译就算完成了,如果细心的小伙伴就会发现,为啥我的命令会长一些。每个指令中都用“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”,这是设置编译器为交叉编译器。

以后在做UBoot移植时会经常用到这些编译指令。为了使编译指令简介一些,可以在Makefile文件中添加ARCH和CROSS_COMPILE的配置,以后就可以编译时就可以省掉命令中的“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”部分,如下图所示:

UBoot的编译与烧写

四、烧写UBoot

将编译好的u-boot.imx拷贝到SD卡中,SD卡的格式是VFAT格式,不然开发版会识别不了。拷贝完成后将SD卡插入开发版,然后进入UBoot执行更新命令。

湃兔通过SD卡更新UBoot命令

update uboot mmc 0 1 u-boot.imx

更新过程如下图所示:

UBoot的编译与烧写

更新完成后,可以通过启动时的第一行日志的编译时间观察是烧写成功,如下图所示:

UBoot的编译与烧写

到这里“Hello, world!”也算是完成,有兴趣的小伙伴可以进行UBoot的移植学习了。

注意:每个厂商的烧写过程可能不一样,使用不同开发版的小伙伴可以去相应的学习资料中查找自己的烧写过程。

五、参考资料

湃兔资料:https://wiki.i2som.com/pages/viewpage.action?pageId=65576

原子哥的视屏教程:https://www.bilibili.com/video/BV12E411h71h?p=4&share_source=copy_web