在我的 DT 文件中,我设置了
clock-frequency = <400000>;
,然后我从用户空间的
/proc/device-tree/i2c@XXXXX/clock-frequency
读回它。但我得到了一些垃圾数据。输出:
root@mymachine:~# od -bc /proc/device-tree/i2c\@XXXXXX/clock-frequency
0000000 000 006 032 200
\0 006 032 200
0000004
它是压缩形式吗?如果是的话我该如何解压?
file
命令的输出:
root@nvidia:/proc/device-tree# file i2c\@7000*/clock-frequency
i2c@7000XXXX/clock-frequency: TTComp archive data
i2c@7000XXXX/clock-frequency: raw G3 data, byte-padded
i2c@7000XXXX/clock-frequency: TTComp archive data
i2c@7000XXXX/clock-frequency: raw G3 data, byte-padded
i2c@7000XXXX/clock-frequency: TTComp archive data
i2c@7000XXXX/clock-frequency: TTComp archive data
有很多方法可以解开这个问题;来自 python,在我的 RPi 2 上,当前 i2c 频率为 100000:
>>> import struct; struct.unpack(">I", open('/proc/device-tree/soc/i2c@7e205000/clock-frequency').read())
(100000,)
od
-txz -Ax /proc/device-tree/i2c@XXXXXX/时钟频率
如果你的时钟频率设置为 100KHz,你应该得到这样的结果:000000a0860100
000004
交换字节序后,你应该得到:
0x186a0 = 十进制为 100KHz