0. 写在前面
image.png
1. 深入浅出Device Tree
image.png
在设备树之前,板级信息都是通过硬编码的方式编译进内核的,
TODO:内核中的实际源代码是怎样的
1.2 DTS格式
1.2.1
image.png
1.2.x 设备树实例
2. 深入理解Device Tree的运作原理*
2.1 DTB文件格式
之前猜测DTB文件会是直接把树形结构dump下来,但仔细想想这样也是不合理的,并不能很容易的读取一棵树,通过文档和DTC编译器源码了解到DTB文件的格式是一种扁平化结构,在启动时进行设备树的构建。
TODO:
Device Tree Blob
dt_structure
image.png
内核如何构建DTB
TODO: 启动阶段内核是如何解析DTB的?
驱动侧如何使用设备树
3. 分析Raspiberry Pi 4B的设备树文件
参考
https://github.com/devicetree-org/devicetree-specification/releases/tag/v0.3
https://www.raspberrypi.org/documentation/configuration/device-tree.md
https://elinux.org/Device_Tree_Source_Undocumented#conditional_node_compilation
http://www.wowotech.net/device_model/dt-code-file-struct-parse.html
FAQ
Bootloader初始化硬件与Linux设备驱动程序初始化是否重复冗余?
-
PC与嵌入式的Bootloader有什么不同?
BIOS 第一阶段,GRUB 、WIndow Bootmgr 第二阶段
U-BOOT 第一二阶段、加载操作系统之后就不复存在了
image.png 时钟树和中断是怎么样工作的?