Armbian 适配 Rockchip RK3326 (PX30) U-Boot 打包修复指南
2026/7/14 1:27:50 网站建设 项目流程

📌 背景介绍

在为 KYX T7Y 开发板(主控:Rockchip RK3326 / PX30 系列)适配 Armbian 系统时,发现 Armbian 官方的构建脚本对 RK3326/PX30 的 only-blobs 启动方案支持存在缺陷。由于 Armbian 官方拉取的 Rockchip rkbin 仓库结构已更新(移除了 bin/ 目录层级),且不再提供 RKTRUST 模板文件,导致在编译 U-Boot 阶段会出现各种“找不到文件”或“无法生成 trust.bin”的报错,最终导致系统镜像无法启动。

本指南记录了如何通过修改userpatches/config/sources/families/rockchip-rk3326.conf来彻底修复这些问题。

🛠️ 核心修复点

1. 修正 rkbin 文件路径与版本号

Armbian 官方脚本中写死的 blob 路径带有bin/前缀,且版本号与实际仓库不符。我们将路径直接指向rk33/,并匹配仓库中实际存在的版本。

# 修正前: # DDR_BLOB="bin/rk33/rk3326_ddr_333MHz_v2.12.bin" # MINILOADER_BLOB="bin/rk33/rk3326_miniloader_v1.40.bin" 修正后: DDR_BLOB="rk33/rk3326_ddr_333MHz_v1.10.bin" MINILOADER_BLOB="rk33/rk3326_miniloader_v1.12.bin" BL31_BLOB="rk33/rk3326_bl31_v1.14.elf"

2. 重写 trust.ini 动态生成逻辑

由于新版 rkbin 移除了 RKTRUST 模板,我们需要在uboot_custom_postprocess()函数中动态生成它。

关键陷阱:旧版脚本中生成的 trust.ini 存在致命错误(BL31 的 SEC=0 且 ADDR=0x10000),这与 Rockchip 官方的 ATF 加载地址不符,会导致板子完全无法启动。

我们参考了官方 RK3326TRUST.ini 模板,重写了生成逻辑,确保安全固件能被正确加载:

function uboot_custom_postprocess() { if [[ "${BOOT_SCENARIO}" == "only-blobs" ]]; then display_alert "RK3326 only-blobs postprocess" "preparing trust.ini" "info" # 动态查找 bl31 和 bl32 blob local bl31_blob=$(find $RKBIN_DIR/rk33 -name "rk3326_bl31_*.elf" | head -1) local bl32_blob=$(find $RKBIN_DIR/rk33 -name "rk3326_bl32_*.bin" | head -1) # 严格按照官方模板格式生成 cat > trust.ini <<EOF [VERSION] MAJOR=1 MINOR=0 [BL30_OPTION] SEC=0 [BL31_OPTION] SEC=1 PATH=${bl31_blob} ADDR=0x00040000 [BL32_OPTION] SEC=1 PATH=${bl32_blob} ADDR=0x08400000 [BL33_OPTION] SEC=0 [OUTPUT] PATH=trust.img EOF # 步骤 1: 生成 idbloader.bin (DDR blob + miniloader) run_host_command_logged tools/mkimage -n "${BOOT_SOC_MKIMAGE}" -T rksd -d $RKBIN_DIR/$DDR_BLOB idbloader.bin cat $RKBIN_DIR/$MINILOADER_BLOB >> idbloader.bin # 步骤 2: 生成 uboot.img run_host_x86_binary_logged $RKBIN_DIR/tools/loaderimage --pack --uboot ./u-boot-dtb.bin uboot.img ${LOADER_UBOOT_OFFSET} # 步骤 3: 生成 trust.bin run_host_x86_binary_logged $RKBIN_DIR/tools/trust_merger trust.ini mv trust.img trust.bin fi }

🚀 如何使用

  1. 将修改后的rockchip-rk3326.conf放入 Armbian build 环境的userpatches/config/sources/families/目录。
  2. 确保你的板级配置(如kyx-t7y.conf)中指定了BOARDFAMILY="rockchip-rk3326"
  3. 运行编译命令:./compile.sh kyx-t7y build

💡 总结

如果你在适配其他基于 PX30/RK3326 的开发板时,遇到 U-Boot 编译报错或烧录后无任何串口输出的问题,大概率也是 trust.ini 生成逻辑失效导致的。希望这份修复指南能帮到大家!

你可以把这段文字连同你的rockchip-rk3326.confkyx-t7y.conf一起打包发到 GitHub 或相关的开发者社区。感谢你的开源精神!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询