Linux设备树8(基于Linux6.6)---根文件系统中查看设备树
一、根文件系统查看设备树
在之前的分析中知道在内核启动时,是把dtb文件所在的内存块保留了下来。
而这个内存块是可以在内核中查看的。
查看的位置在sys文件系统中。
因为dtb文件是二进制文件,所以要用hexdump命令来查看。
hexdump -C /sys/firmware/fdt
部分信息如下,和我们传给内核的dtb文件里的完全一样。
当然在/sys/firmware/文件下还有另一个目录文件。
通过上面可以看到fdt文件只能查看。
查看转换后的设备节点文件
devicetree目录下的是叫base的根目录。
之后里面就是按照dts写的那样组织的.
通过这里可以查看各个子节点或者属性,比如查看compatible属性
也可以查看以32bit表示的整数.
这里要说的是对于函有reg节点的属性,一般我们在写dts的时候是在节点名字后面加上地址的即 node-name@unit-adderss
[label:] node-name[@unit-address] {
[properties definitions] //就是属性定义,对当前节点描述,将硬件信息提供给内核处理
[child nodes] //子节点
}
所以如果我们写的时候名字后面不跟地址,内核dtb转换device_node的时候名字会自动加上@unit-adderss的
在内核的/sys/devices/platform目录下是展现的现在的所有注册的的平台设备。
这里要说明的是如果设备下面有of_node,就证明这个platform_device是通过设备树传参来创建的。
当然这个节点是一个连接文件,它指向的是刚才前面在/sys/firmware/devicetree/bse/目录下的设备节点。
当然一个在/sys/devices/platform/目录下的设备若是没有of_node的一个链接文件,那么它就不是通过设备树文件创建的。
可能是内核编译的时候创建或者通过安装模块创建。
最后要说明的是proc文件系统里面的device-tree指向的就是sys文件系统里面的设备树。
二、U-Boot 下查看设备树
如果系统使用 U-Boot 作为引导加载程序,可以通过 U-Boot 提供的命令查看设备树。进入 U-Boot 命令行后,使用以下命令查看或修改设备树。
查看设备树:
fdt print
U-Boot 的 fdt
命令允许查看、修改和加载设备树。