文章目录
- 一、概述
- 二、形象比喻:小区物业的档案室和门岗卡片
- 三、U-Boot 使用设备树的方式
- 四、SPL 与 U-Boot Proper 的设备树差异
- 五、U-Boot DTS 配置详解
- DTB 自动裁剪机制
- 六、U-Boot DTS 与内核 DTS 的同步机制
- 实际同步命令
- 七、U-Boot 设备树节点示例
- U-Boot 特有的 DTS 属性
- 八、FDT Fixup:U-Boot 如何修补设备树
- 九、U-Boot DTS 与内核 DTS 的关系总结
- 十、常见问题排查
- 📝 本章小结
- 🏠 课后练习
前面几章把 U-Boot 的整体架构、启动流程、SPL 都过了一遍,大家对"U-Boot 是怎么跑起来的"应该有了完整认识。但有一个关键的东西一直没展开–设备树。你可能会问:U-Boot 不是引导程序吗,它也要用设备树?答案是肯定的,而且 RK3506 的 U-Boot 设备树是从内核设备树同步过来的,只不过做了大量裁剪。这一章就把 U-Boot 设备树这件事讲透。开讲前建议先在终端里把u-boot/dts/和kernel-6.1/arch/arm/boot/dts/两个目录对比着ls一遍,带着感性认识来听课会轻松很多。
这一章要解决四个核心问题:第一,U-Boot 的设备树和内核设备树到底是什么关系?第二,SPL 和 U-Boot Proper 分别怎么使用设备树?第三,为什么 SPL 的 DTB 要裁剪到最小?第四,怎么从内核 DTS 同步更新 U-Boot 的设备树?四个问题对应后面第三到第七节。这章是承上启下的章节–往上接第十二、十三节的 U-Boot 架构,往下给第十五节 U-Boot 驱动模型 DM 铺路,因为 DM 就是靠设备树来匹配设备和驱动的,没有设备树 DM 无从谈起。
一、概述
把基本概念建立起来。U-Boot 自 2014 年起全面转向设备树(Device Tree),与 Linux 内核共享相同的 DTS 语法。RK3506 的 U-Boot 设备树从内核 DTS 同步而来,但进行了裁剪(删除不需要的节点以节省体积)。这使得 U-Boot 可以像内核一样,通过设备树自动识别硬件,而不是硬编码板级文件。
几个关键信息要分清。第一,2014