U-Boot 板级配置与设备树适配
U-Boot 对一块板子的支持通常由三类内容组成:Kconfig/defconfig 选择功能,板级 C 代码处理特殊初始化,设备树描述硬件。移植时你要让这三者互相匹配。
如果把一块板子的 U-Boot 支持比作一套房子,defconfig 像“装修清单”,设备树像“户型图”,板级代码像“那些图纸表达不了的现场处理”。三者缺一块,系统就可能看起来编译成功,但上板后无法启动或设备不可用。
1. 从相近开发板开始
不要从空目录开始。先在 configs/、board/、arch/、dts/ 中寻找同 SoC 或同系列开发板:
# [Host]
rg "YOUR_SOC_NAME" configs board arch dts
如果已有相近板子,复制并裁剪通常比完全新建更稳妥。
选择相近板子时,优先级通常是:
- 同一块板的 mainline 支持。
- 同 SoC、同 DRAM、同启动介质的开发板。
- 同 SoC 但外设不同的开发板。
- 同系列 SoC 的开发板。
不要只看 CPU 核心相同。启动介质、DDR 初始化、PMIC、电源时序、pinmux 都可能决定能否启动。