linux 设备树学习 1

一、什么是设备树?

1.device tree ,设备树,是一种描述硬件的数据结构,在Linux内核中采用的参数表示和传递技术。由一系列被命名的节点(node)和属性(property)组成,而节点本身可包含子节点。所谓属性,其实就是成对出现的name和value。在Device Tree中,可描述的信息包括:CPU的数量和类别,内存基地址和大小,总线和桥,外设连接,中断控制器和中断使用情况,GPIO控制器和GPIO使用情况,Clock控制器和Clock使用情况。设备树基本上就是画一棵电路板上由CPU、总线、设备组成的树,Bootloader会将这棵树传递给内核,然后内核可以识别这棵树,并根据它展开出Linux内核中的platform_device、i2c_client、spi_device等设备,而这些设备用到的内存、IRQ等资源,也被传递给了内核,内核会将这些资源绑定给展开的相应的设备。

2.dts device tree source ,设备树源文件,相当于xxx.c文件,就是用来做参数表示的,也就是说我们需要把参数写成源文件,按照格式将参数写出来,就构成了设备树源文件。

3.dtc device tree compiler ,设备树编译器,设备树编译/反编译/调试工具,负责将dts文件编译为可读取文件,参数文件相当于一些数字,这些数字经过编译之后就变成了二进制文件,dtc相当于一个编译工具,相当于gcc。

4.dtb device tree blob,二进制设备树镜像,可执行文件,dtc将dts编译出来的二进制设备树镜像就叫dtc. blob--二进制大对象,binary large object。相当于xxx.bin

5.dtsi,设备树源文件的头文件,相当于xxx.h

二、设备树如何工作?

1.驱动开发者编写dts,适配硬件和自己的需求。

2.make image的时候,kernel内部会先编译出编译工具dtc,然后用dtc将dts源文件加工成可执行文件dtb。

3.uboot启动kernel时,将image和dtb都准备好并告知image在哪里找dtb

4.kernel启动初期调用内部函数解析dtb,得到硬件信息,并组装成数据结构,配合策略函数工作。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 4
收藏 2
关注 28
成为作者 赚取收益
全部留言
0/200
  • dy-uzwepapV 2022-03-30 16:09
    感谢分享,很有帮助
    回复
  • dy-DHzbiapC 2022-03-30 16:06
    可以
    回复