Linux设备树由浅及深

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的设备树文件

参考

  1. https://github.com/devicetree-org/devicetree-specification/releases/tag/v0.3

  2. https://www.jianshu.com/p/f2f6e49fb5b6

  3. https://www.raspberrypi.org/documentation/configuration/device-tree.md

  4. https://elinux.org/Device_Tree_Source_Undocumented#conditional_node_compilation

  5. http://www.wowotech.net/device_model/dt-code-file-struct-parse.html

FAQ

  1. Bootloader初始化硬件与Linux设备驱动程序初始化是否重复冗余?

  2. PC与嵌入式的Bootloader有什么不同?
    BIOS 第一阶段,GRUB 、WIndow Bootmgr 第二阶段
    U-BOOT 第一二阶段、加载操作系统之后就不复存在了


    image.png
  3. 时钟树和中断是怎么样工作的?

你可能感兴趣的:(Linux设备树由浅及深)