一、设备树。
一般.dts 描述板级信息(也就是开发板上有哪些 IIC 设备、 SPI 设备等), .dtsi 描述 SOC 级信息(也就是 SOC 有几个 CPU、主频是多少、各个外设控制器信息等)。
二、DTB,DTC
dtb是dts被DTC编译后生成的二进制格式Device Tree描述,可由Linux内核解析。系统设计时通常会单独留下一个很小的flash空间存放.dtb文件,bootloader在引导kernel的过程中,会先读取该.dtb到内存。
三、解析dts
在Linux的BSP和驱动代码中,解析dts的API通常被以“of_”作为前缀,它们的实现代码位于内核的drivers/of目录
四、根节点属性compatible
Linux 内核会通过根节点的 compoatible 属性查看是否支持此设备,如果支持的话设备就会启动 Linux 内核.
4.1、使用设备树之前设备匹配方法
Linux 内核是支持很多设备的,针对每一个设备(板子),Linux内核都用 MACHINE_START和 MACHINE_END来定义一个 machine_desc 结构体来描述这个设备
4.2、使用设备树以后的设备匹配方法
当 Linux 内 核 引 入 设 备 树 以 后 就 不 再 使 用 MACHINE_START 了 , 而 是 换 为 了
DT_MACHINE_START。DT_MACHINE_START 也定义在文件 /arm/include/asm/mach/arch.h
里面。
machine_desc 结构体中有个.dt_compat 成员变量,此成员变量保存着本设备兼容属性
4.3、Linux 内核通过根节点 compatible 属性找到对应的设备的函数调用过程
4.4、设备树在系统中的体现
Linux 内核启动的时候会解析设备树中各个节点的信息,并且在根文件系统的/proc/devicetree 目录下根据节点名字创建不同文件夹和文件,可以查看相应的内容
三、设备树
最新推荐文章于 2022-10-23 14:37:42 发布