3.8内核对设备树的处理——在根文件系统中查看设备树

当内核启动完成后,会进入根文件系统,本节说明如何在根文件系统中查看设备树(有助于调试驱动程序)

原始dtb文件

我们知道,uboot会把dtb文件传给内核,并且存放dtb文件的那块内存会被保留下来,没有其他程序会来使用这块内存。

那么,我们就可以在内核启动之后,查看那块内存即查看dtb文件。

原始dtb文件的路径是:

/sys/firmware/fdt

可以使用hexdump指令查看dtb文件。

/sys/firmware/fdt

烧录的dtb文件

显然,两者是完全相同的。

目录结构呈现dtb文件

/sys/firmware路径下,不仅有原始的dtb文件——fdt,还有一个devicetree目录。

devicetree目录下,则有一个base目录,这个base目录,就对应着根节点

 

除了原始的dtb文件,根文件系统还以目录结构的方式,呈现dtb文件。

根节点对应base目录, base目录下每一个节点对应一个目录, 每一个属性对应一个文件

进入base目录,可以看到下面有五个文件,三个目录。

其中,除了name不对应dts文件中根节点的属性,其他文件分别对应一个根节点的属性。类似的,三个目录则分别对应根节点中的子节点。

即base目录下,每一个节点对应一个目录, 每一个属性对应一个文件

在这些目录中,一样遵循着文件对应属性目录对应节点的规则。

led目录为例,进入led目录,里面一共有三个文件,除name外,分别对应着led节点的两个属性

另外,文件的内容的存放格式还是按照大字节序(高位数据存内存高位地址),所以pin属性的值为0x00 05 00 05。

 

说明一下,如果节点没有设置name属性,那么转换为device_node时,会将节点自己的名称作为name属性值

所以led节点虽然没有name属性,但是led目录下也有name文件,对应led节点转换的device_node的name属性,它的值就是led节点的名称led。

查看platform_device

驱动调试时,可以在根文件系统下查看platform_device。

根文件系统中保存platform_device的路径:

/sys/devices/platform/

系统中所有的platform_device,都可以在/sys/devices/platform/路径下查看。

另外,系统中所有的platform_device,有来自设备树的,也有来自.c文件中注册的。

那么,我们怎么知道哪些platform_device是来自设备树,哪些是来自.c文件中注册的

答:可以查看该platform_device的相关目录下,是否有of_node,如果有of_node,那么这个platform_device就来自于设备树;否则,来自.c文件。

以led为例,进入led目录,可以看到有of_node,说明这个platform_device来自设备树。

同时,可以看到这个of_node是一个链接文件,指向的是/sys/firmware/devicetree/base/led

也就是说,可以进入 /sys/devices/platform/<设备名>/of_node 查看它的设备树属性

/proc/device-tree

最后,在/proc下有一个链接文件device-tree,它指向的是/sys/firmware/devicetree/base。

 

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值