1. 搭建U-Boot开发环境

搭建U-Boot开发环境 学习卡片

任务目标

在Linux主机上完成U-Boot编译所需的最小环境搭建:安装ARM交叉编译工具链、获取U-Boot源码、配置环境变量,最终能对指定开发板配置执行编译并生成U-Boot镜像。

环境与依赖

  • Linux主机(本文以Ubuntu 22.04为例,其他发行版需调整包管理器命令)
  • 基础工具:git、make、gcc、bison、flex、swig、python3-dev、libssl-dev、uuid-dev
  • 交叉编译工具链:gcc-arm-none-eabi(适用于ARM Cortex-A系列裸机/U-Boot编译)

实现步骤

1. 安装系统依赖与交叉编译工具链

sudo apt update
sudo apt install -y git make gcc bison flex swig python3-dev libssl-dev uuid-dev gcc-arm-none-eabi

安装完成后确认工具链可用:

arm-none-eabi-gcc --version

预期输出包含版本号信息,例如 arm-none-eabi-gcc (15:10.3-2021.07) 10.3.1 20210621。

2. 下载U-Boot源码

mkdir -p ~/uboot-lab && cd ~/uboot-lab
git clone https://github.com/u-boot/u-boot.git
cd u-boot

如需固定版本,可检出稳定分支(例如 git checkout v2024.01)。

3. 配置环境变量

将以下内容追加到 ~/.bashrc(或 ~/.profile):

export PATH=/usr/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-none-eabi-

然后使配置生效:

source ~/.bashrc

验证环境变量:

echo $ARCH $CROSS_COMPILE

预期输出:arm arm-none-eabi-

4. 编译U-Boot

以QEMU虚拟ARM板(qemu_arm_defconfig)为例验证编译链路:

make qemu_arm_defconfig
make -j$(nproc)

编译完成后检查生成的关键文件:

ls -l u-boot.bin

预期输出显示 u-boot.bin 文件存在且大小非零(例如 -rwxrwxr-x 1 user user 479856 Apr 10 10:00 u-boot.bin)。

验证方法与判定标准

  • 工具链验证:arm-none-eabi-gcc --version 能输出版本信息,说明交叉编译器安装正确。
  • 环境变量验证:echo $ARCH $CROSS_COMPILE 输出 arm arm-none-eabi-,说明U-Boot构建系统能正确找到交叉编译器。
  • 编译验证:make qemu_arm_defconfig 无报错且生成 .config 文件;make -j$(nproc) 正常结束(退出码为0),并生成 u-boot.bin 镜像文件。

以上三步全部通过,即证明U-Boot开发环境搭建成功,可进行后续的板级移植与调试工作。

常见问题

  • 编译报错 arm-none-eabi-gcc: command not found:工具链未安装或PATH未包含 /usr/bin,重新执行步骤1和3。
  • 编译中途报错缺少 libssl-dev 或 swig:按步骤1补齐依赖后重新执行 make。
  • 使用其他开发板配置:将 qemu_arm_defconfig 替换为目标板卡的defconfig名称(可在 configs/ 目录下查找),编译流程不变。