社区编辑申请
注册/登录
聊聊Linux 运行时设备树
系统 Linux
在根文件系统中查看设备树,是一种不错的调试手段。因此查看板子中真实生效的设备树配置信息是很重要的。

在根文件系统中查看设备树,是一种不错的调试手段。因为很多时候会出现你修改了 dts 文件,并且也编译了新的 dtb,但是下载到板子上的还是以前的 dtb,因此查看板子中真实生效的设备树配置信息是很重要的。

1、设备树原始 dtb 格式

在如下目录,fdt 就是我们的 设备树*.dtb文件

/sys/firmware/fdt     //原始dtb文件

执行以下指令可看

hexdump -C /sys/firmware/fdt

这个命令打开后是十六进制模式,如图:

这样是很难看到真实配置的,可以把 fdt 弄出来,放到 ubuntu 中,使用 Linux 源码自带的 DTC 工具反编译,查看真实的配置。反编译命令为

/script/dtc/dtc -I dtb -O dts -o xxx.dts xxx.dtb

DTS 是设备树源码文件,DTB 是将 DTS 编译以后得到的二进制文件。将 .c 文件编译为 .o 需要用到 gcc 编译器,那么将.dts 编译为.dtb 需要什么工具呢?需要用到 DTC 工具!反编译也是这个工具,反编译后可以看到方便查看的设备树,字符串会恢复,数字会变成十六进制格式。

在 u-boot 启动内核时,会将 dtb 文件的内存地址传递给内核,并将其所占内存保留;因此,我们在内核启动后,访问该内存,获得原始的 dtb。

2、设备树目录结构 dtb 格式

/sys/firmware/devicetree

以目录结构程现的 dtb 文件, 根节点对应 base 目录, 每一个节点对应一个目录, 每一个属性对应一个文件:

在这里你就可以看到你配置的设备树节点信息,字符串使用 cat,数字使用 xxd 、hexdump 命令:

3、内核中现存的所有 platform_device

/sys/devices/platform 

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

对于来自设备树的 platform_device,可以进入 /sys/devices/platform/<设备名>/of_node 查看它的设备树属性。

对于有 of_node 属性的 platform_device,证明其来源于 dtb。

note:/proc/device-tree 是链接文件, 指向 /sys/firmware/devicetree/base

以上是 Linux 原生的节点,可以供我们使用。如果你用的芯片是某个厂家,这个厂家客制化的时候会增加一些调试节点,你可以很方便的在 IC 厂商增加的调试节点中查看设备树信息。

重要补充:

Linux 常用的文件系统有三个:procfs、sysfs、debugfs

procfs:该文件系统主要用来反馈内核的信息,包括系统中所有的中断、进程信息都可以在这里查看。挂载在 /proc/...

sysfs:该文件系统主要是和驱动强相关,会反馈所有的驱动信息,以目录形式显示。挂载在 /sys/...

debugfs:该文件系统挂载在 /sys/kernel/debug/... ,主要用来 debug。

责任编辑:姜华 来源: 嵌入式Linux系统开发
相关推荐

2022-04-14 10:10:59

Nginx开源Linux

2022-04-21 10:01:48

VMware

2022-05-16 13:37:12

Sysrv僵尸网络微软

2022-05-16 08:50:23

2022-05-09 15:08:56

存储厂商NFV领域华为

2022-04-19 11:23:26

release3.1子系统鸿蒙

2022-04-28 09:46:20

Nginx文件Linux

2022-05-16 07:35:21

Windows远程桌面远程服务器

2022-04-25 08:45:38

Linux 发行版旧计算机PC

2022-03-31 07:52:01

Java多线程并发

2022-05-17 09:19:17

XebianLinuxLinux 发行版

2022-04-06 13:55:22

DockerLinux

2022-05-18 23:42:08

网络安全安全分析工具

2022-04-22 13:04:43

微软Windows 10

2022-04-20 22:04:58

物联网安全勒索软件网络攻击

2022-04-06 06:35:58

进程命令CPU

2022-05-13 10:24:44

WineWindowsLinux

2022-05-14 08:05:18

Linux内存管理

2022-05-03 22:25:57

Python浏览器语言

2022-04-23 16:30:22

Linux磁盘性能

同话题下的热门内容

NVIDIA 终于发布开源 Linux GPU 内核模块Fedora 36 通过桌面大修吸引开发者,但它能取悦 Linux 之父吗?万字多图,搞懂 Nginx 高性能网络工作原理!80%的 Linux 使用者都不懂的内存问题GPIO到底该如何控制43个Bash编程最容易犯的错误大全几种超实用的 Kubernetes Pod 高级调度策略Kali Linux 2022.2 发布:增加了一个吓唬人的有趣新功能

编辑推荐

Linux系统下安装MySQL的步骤详解CentOS与Ubuntu有什么不同?Linux下如何使用minicom USB串口为什么你可能想要略过Ubuntu 17.04?Linux中7个判断文件系统类型的方法
我收藏的内容
点赞
收藏

51CTO技术栈公众号