环境:ubuntu 20.04
uboot源码下载以及编译
1 uboot源码下载:
1.1 进入uboot官网
uboot官网在进入之后如下所示:
我们可以直接选择Obtaining the source进入到获取源码的网址
1.2 下载源码
在点击Obtaining the source进入到新的网址之后就会看到下面提示去获取uboot的源码:
The source of the U-Boot project is maintained in a Git repository.
You can download the source via
git clone https://source.denx.de/u-boot/u-boot.git
A mirror of the source is maintained on Github
git clone https://github.com/u-boot/u-boot
The released versions are available as tags which use the naming scheme:
v<year>.<month>
Release candidates are named:
v<year>.<month>-rc<number>
To checkout the October 2020 release you would use:
git checkout v2020.10
2 编译uboot
2.1 配置
目录“configs/”包含维护的单板模板配置文件,命名如下:
<board name>_defconfig
比如,我想查看arm的公版的板卡配置,在我最新下载的uboot代码下有以下相关的配置文件:
rlk@rlk:configs$ pwd
/home/rlk/work/u-boot/u-boot/configs
rlk@rlk:configs$ ls vexpress_* -alh
-rw-rw-r-- 1 rlk rlk 1.2K Dec 21 09:48 vexpress_aemv8a_juno_defconfig
-rw-rw-r-- 1 rlk rlk 965 Dec 21 09:48 vexpress_aemv8a_semi_defconfig
-rw-rw-r-- 1 rlk rlk 554 Dec 21 09:48 vexpress_aemv8r_defconfig
-rw-rw-r-- 1 rlk rlk 1.6K Dec 21 09:48 vexpress_ca9x4_defconfig
rlk@rlk:configs$
这些文件已经去掉了默认设置。所以你不能直接使用它们。相反,它们的名称用作生成实际配置文件.config的make目标。例如,Odroid C2板的配置模板名为Odroid -c2_defconfig。对应的.config文件由下面的方式生成:
make odroid-c2_defconfig
如果当前的配置不能满足您的需求,您也可以通过下面的命令去调节相关的配置:
make menuconfig
2.2 编译
2.2.1 确认编译工具链是否ok
rlk@rlk:u-boot$ aarch64-linux-gnu-gcc --version
aarch64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
rlk@rlk:u-boot$
如果没有安装,则执行下面的命令去安装一下对应的软件即可:
sudo apt-get install gcc gcc-aarch64-linux-gnu
2.2.2 配置环境变量
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
2.2.3 编译
make -j8
3 注意事项
3.1 uboot 2022.04版本问题
在使用最新的2022.04的uboot源码编译的时候存在一些问题,可以先切换到稍微老的版本的上去做测试。
https://www.mail-archive.com/ports@freebsd.org/msg01825.html
3.2 unable to execute ‘swig’: No such file or directory
安装swig
sudo apt-get install swig