Linux查看设备树信息
Linux查看设备树信息
一、设备树基础概念
设备树(Device Tree,简称DT)是Linux内核中用于描述硬件配置的一种数据结构,它通过树形结构组织硬件信息,替代了传统内核中硬编码的硬件描述方式。设备树的核心优势在于:
- 硬件无关性:同一内核可适配不同硬件平台
- 动态配置:无需重新编译内核即可修改硬件参数
- 模块化设计:支持设备驱动与硬件描述分离
设备树源文件通常以.dts
(源文件)和.dtsi
(包含文件)为扩展名,编译后生成.dtb
二进制文件,由Bootloader在启动时传递给内核。
二、查看设备树信息的常用方法
1. 通过/proc/device-tree虚拟文件系统
# 查看完整设备树结构(需root权限)
ls -lR /proc/device-tree/# 查看特定节点属性(示例:查看CPU信息)
cat /proc/device-tree/cpus/cpu@0/compatible# 查看内存节点信息
hexdump -C /proc/device-tree/memory/reg -s 4 -n 4 # 显示内存起始地址
2. 使用dtc工具反编译设备树
# 安装dtc工具(Debian/Ubuntu)
sudo apt install device-tree-compiler# 提取当前运行的dtb文件(需root)
cat /proc/device-tree > my_dtb.dtb# 反编译为dts源文件
dtc -I dtb -O dts -o my_dtb.dts my_dtb.dtb# 查看反编译后的文本格式
less my_dtb.dts
3. 通过sysfs获取设备树属性
# 查看所有设备树兼容属性
ls /sys/firmware/devicetree/base/compatible# 查看特定设备的设备树属性(示例:以太网控制器)
ls /sys/firmware/devicetree/base/soc/ethernet@.../# 读取具体属性值
cat /sys/firmware/devicetree/base/soc/ethernet@.../reg
4. 使用fdtdump工具分析
# 安装fdtdump
sudo apt install u-boot-tools# 导出并分析设备树
fdtdump /boot/dtb/$(uname -r)/<your-dtb-file>.dtb > dtb_analysis.txt
三、关键命令详解
1. dtc命令参数详解
dtc --help
# 常用参数:
# -I <input-format> 输入格式(bin/dts/dtb)
# -O <output-format> 输出格式(bin/dts/asm)
# -o <output-file> 指定输出文件
# -p <padding> 指定对齐填充值
# -V <version> 指定设备树版本
2. 设备树节点解析示例
典型设备树节点结构:
/ {compatible = "vendor,board-name";#address-cells = <1>;#size-cells = <1>;memory {reg = <0x80000000 0x20000000>;};soc {compatible = "vendor,soc-name";uart0: serial@101f0000 {compatible = "vendor,uart";reg = <0x101