编译 U-Boot¶
U-Boot 配置决定系统从 TF 卡还是 SPI NAND 读取内核和根文件系统参数。切换启动方式前应先清理旧配置。
检查工具链¶
export PATH=/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
arm-linux-gnueabihf-gcc -v
编译 SPI NAND 版本¶
cd ~/v3s-workspace/uboot
make distclean
make strongpi_v3s_nandflash_defconfig
make -j"$(nproc)"
该版本从 NAND 固定偏移读取设备树和内核,并将根文件系统挂载为 ubi0:rootfs。
编译 TF 卡版本¶
cd ~/v3s-workspace/uboot
make distclean
make strongpi_v3s_tfcard_defconfig
make -j"$(nproc)"
该版本从 TF 卡第一个 FAT32 分区读取:
zImage
sun8i-v3s-strongpi.dtb
根文件系统位于 TF 卡第二个 ext4 分区。
编译产物¶
ls -lh u-boot-sunxi-with-spl.bin u-boot.img u-boot.dtb
| 文件 | 用途 |
|---|---|
u-boot-sunxi-with-spl.bin |
包含 SPL,写入 TF 卡 8KiB 偏移或通过 xfel 写入 NAND SPL 区域 |
u-boot.img |
NAND 中的 U-Boot 主体 |
u-boot.dtb |
U-Boot 自身使用的设备树 |
Linux 启动使用的 sun8i-v3s-strongpi-spinand.dtb 来自 Linux 内核源码,不是这里的 u-boot.dtb。
常见错误¶
缺少 Python 2:
/usr/bin/env: 'python': No such file or directory
确认 python --version 输出 Python 2.x。
缺少 SWIG、DTC 或 GnuTLS 开发库时执行:
sudo apt install swig device-tree-compiler libgnutls28-dev