RK3399 驱动开发 _ 04 - Android系统中通过fdt文件系统反编译查看设备中真实生效的设备树配置信息

文章目录

  • 前言
  • 一、设备树保存在文件系哪里?
  • 二、文件系统设备树dts编译与反编译
    • 2.1 设备树原始 dtb 格式
    • 2.2 从设备中获取目标文件fdt
    • 2.3 在ubuntu系统中将fdt反编译成dts
      • 2.3.1 安装反编译dtc工具
      • 2.3.2 使用安卓系统自带的dtc工具
      • 2.3.3 将fdt反编译成dts
      • 2.3.4 从文件系统反编译设备树dts
    • 2.4. 在ubuntu系统中将dtb编译成dts
  • 三、重要补充


前言

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


一、设备树保存在文件系哪里?

a. /sys/firmware/fdt
进入/sys/firmware目录后便可看到二个文件,一个是devicetree文件夹,另一个是fdt(原始dtb文件,可以用hexdump -C fdt 将其打印出来查看就会发现里面的数据和dtb文件是一致的)。

b. /sys/firmware/devicetree
以目录结构呈现的dtb文件。 根节点对应base目录, 每一个节点对应一个目录, 每一个属性对应一个文件

c. /sys/devices/platform
系统中所有的platform_device, 有来自设备树的, 也有来有.c文件中注册的
对于来自设备树的platform_device,可以进入 /sys/devices/platform/<设备名>/of_node 查看它的设备树属性(例如进入/sys/devices/platform/led/后若发现该目录下有of_node节点,就表明该platform_device来自设备树)

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

二、文件系统设备树dts编译与反编译

2.1 设备树原始 dtb 格式

进入/sys/firmware目录后便可看到二个文件,一个是devicetree文件夹,另一个是fdt(原始dtb文件,可以用hexdump -C fdt 将其打印出来查看就会发现里面的数据和dtb文件是一致的)。

rk3399_xxx:/sys/firmware # ls
devicetree fdt

2.2 从设备中获取目标文件fdt

adb pull /sys/firmware/fdt
或者:
adb pull sys/firmware/devicetree/base/

2.3 在ubuntu系统中将fdt反编译成dts

2.3.1 安装反编译dtc工具

在ubuntu 系统中安装反编译dtc工具:
apt install device-tree-compiler

2.3.2 使用安卓系统自带的dtc工具

1. 在Android 源码中查找二进制工具dtc :
$  find ./ -name "*dtc*"
./out/soong/.glob/external/dtc
./prebuilts/misc/linux-x86/dtc
./prebuilts/misc/linux-x86/dtc/dtc

2.3.3 将fdt反编译成dts

dtc -I dtb -O dts fdt -o fdt.dts
-I 输入格式 dtb
-O 输出格式 dts
-o 输出文件名 fdt.dtsi

2.3.4 从文件系统反编译设备树dts

fdtdump devicetree.dtb > devicetree.dts

2.4. 在ubuntu系统中将dtb编译成dts

dtc -I dtb -O dts *.dtb > my.dts

三、重要补充

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

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

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

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

你可能感兴趣的:(驱动开发,android)