跳到主要内容

U-boot 开发

使用 bsp

bsp 是 Radxa 提供的一套快速构建 U-Boot Kernel 的工具,使用 bsp 非常方便就能构建出自己的 U-Boot 和 Kernel.

下面将为您展示,以 Radxa ROCK 5B 为例如何使用 bsp 构建 U-Boot 。

bsp 环境配置

以下为 bsp 推荐使用环境:
硬件:推荐使用 x86_64 PC
系统:Ubuntu 或者 Debian

安装依赖

sudo apt update
sudo apt install -y git qemu-user-static binfmt-support

# Podman (推荐)
sudo apt install -y podman podman-docker
sudo touch /etc/containers/nodocker
# Docker
#sudo apt install docker.io

# 次要功能的可选依赖
sudo apt install -y systemd-container

获取代码

bsp 使用了 git 子模块。因此,请使用以下命令获取代码:

git clone --recurse-submodules https://github.com/radxa-repo/bsp.git

了解 bsp 的用法

在您的机器上获取了 bsp 代码后,您可以运行 bsp 查看内置帮助:

cd bsp
./bsp

构建 U-Boot

直接运行 ./bsp 会显示所有参数及其解释,根据提示可知命令: bsp [options] <linux|u-boot> <profile> [product]
以 Radxa ROCK 5B u-boot profile 为 rk2410,以下是其他产品的 profile:

productprofileproductprofileproductprofileproductprofile
rock-2rk2410radxa-e54crk2410radxa-zerolatestrock-pi-elatest
radxa-e24c-spirk2410radxa-nx5-iork2410radxa-zero-2prolatestrock-4selatest
rock-5-itxrk2410radxa-cm4-rpi-cm4-iork2410radxa-cm3-iolatestrock-pi-4a-pluslatest
rock-5ark2410radxa-cm5-iork2410radxa-cm3-rpi-cm4-iolatestrock-pi-4b-pluslatest
rock-5brk2410radxa-cm5-rpi-cm4-iork2410radxa-cm3-sodimm-iolatestrock-4c-pluslatest
rock-5b-plusrk2410radxa-cm3j-rpi-cm4-iork2410radxa-e23latestrock-pi-4alatest
rock-5crk2410radxa-e25rknextradxa-zero3latestrock-pi-4blatest
rock-5drk2410radxa-cm3i-iorknextrock-3alatestrock-pi-4clatest
rock-5trk2410rock-3blatestrock-4-core-iolatest
rock-5a-spirk2410rock-3clatest
rock-5c-spirk2410rock-pi-n10latest
rock-5d-spirk2410rock-s0latest
radxa-e52crk2410rock-pi-slatest

然后将产品对应 profile: rk2410 填入 bsp 命令的 profile 参数即可拉取与配置代码,例如:

./bsp u-boot rk2410 rock-5b --no-build
# `--no-build` 仅配置代码不编译

U-boot 源码的路径位于 bsp 目录下的 .src/linux,在修改内核源码后,可再次构建 U-boot:

cd bsp
./bsp --no-prepare-source u-boot rk2410 rock-5b -r 999
# 参数说明:
# --no-prepare-source # 首次编译不需要加该参数,加该参数是为了使用本地修改进行编译,如果不加这个参数将会从 Radxa kernel 仓库同步最新代码并覆盖本地修改
# -r 999 # 指定内核的版本号为 999,以优先使用

编译完成后会在当前目录生成许多 deb 包, 只需要安装下面的 deb 即可

u-boot-rk2410_2017.09-999_arm64.deb

将上面两个 deb 包复制到板子上使用 dpkg 指令安装即可完成 U-Boot 安装

sudo dpkg -i u-boot-rk2410_2017.09-999_arm64.deb

安装完成后需要将 U-Boot 刷到启动介质中

cd /usr/lib/u-boot/rock-5b/                     # rock-5b 为你当前使用的型号,需要根据实际使用的设备来选择
sudo ./setup.sh update_bootloader /dev/mmcblk1 # /dev/mmcblk1 为你当前使用的启动介质,需要根据实际使用的设备来选择
sudo reboot

重启后可以观察 U-Boot 启动 log 查看 U-Boot 是否更新成功。

手动编译

提示

bsp 是目前唯一在维护的编译方式,并且在编译的时候会对源代码进行额外的修改。 如果想要基于我们正式发布的软件进行开发,则最低限度也需要使用 bsp 来下载和配置代码。

如果需要使用自定义的 make 命令来进行编译,请参照 Prepare working tree 部分来配置代码。

参考