编写相关
01-双引号中的内容表示字符串,<>
中的内容表示数值
示例如下:
/ {
swh_led@0 {
compatible = "swh_leddrv";
pin = <0x00030001>;
};
.......
};
compatible的具体内容为字符串swh_leddrv
,而pin的值为数值0x00030001
。
操作相关
设备树文件(dts文件)和编译生成的dtb文件在哪里?
请参考下面两篇博文:
https://blog.csdn.net/wenhao_ir/article/details/144421577
https://blog.csdn.net/wenhao_ir/article/details/145056170
如何查看系统中有哪些设备节点?如何查看设备节点的属性?
用下面的命令查看是否有相应的设备树节点对应的目录是否存在:
ls /sys/firmware/devicetree/base/
上图白框中的两个是我自己添加的。
还可以进入相应的目录查看下设备节点的属性。
cd /sys/firmware/devicetree/base/swh_led@0
ls
可以对着咱们的设备文件源码来理解三个属性文件:
从上图中可以看出,name
这个文件的名字是系统为我们自动加上的,我们在源码中定义设备文件时是不需加上的。
compatible
文件的具体内容查看命令如下:
cat compatible
pin
文件的具体内容查看命令如下【因为它是一个十六进制数,所以要用特殊的命令】:
hexdump pin
以上面这个结果的解释如下:
在 hexdump
命令的输出中,结果由两部分组成:
- 数据内容部分(如
0000000 0300 0100
):显示从设备树节点文件中读取的实际内容。 - 偏移地址部分(如
0000004
):表示读取到的最后一个字节的文件偏移地址。
让我们具体分析:
数据内容部分
0000000 0300 0100
0000000
: 文件的起始偏移地址,表示数据从文件的第 0 字节开始。0300 0100
: 文件中实际存储的数据内容。解释如下:03 00
: 高 16 位(组号3
)。01 00
: 低 16 位(引脚号1
)。- 数据以小端字节序存储,因此高位和低位的字节顺序颠倒了。
偏移地址部分
0000004
- 这个数字表示 文件中数据读取到的最后一个字节的偏移量,以十六进制表示。
- 在你的情况下:
- 设备树中存储的
pin
是一个 32 位整数,占用 4 个字节。 - 因此偏移量是
0x4
,表示读取到文件的第 4 个字节位置(实际数据范围为0x0
到0x3
)。
- 设备树中存储的
小结
- 数据内容部分显示的是
pin
属性的值(即GROUP_PIN(3, 1)
的 32 位表示)。 - 偏移地址部分仅是
hexdump
的输出格式,显示文件读取的结束位置,用于帮助定位文件中的数据,不是数据内容本身的一部分。
查看设备树节点生成的platform_device
结构体的属性文件
这部分内容请访问博文 https://blog.csdn.net/wenhao_ir/article/details/145056170 【搜索“查看设备树节点生成”】查看相应的内容。