0

我正在开发一些用户空间验证工具。我需要在其中验证 i2c 频率。

在我的 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
4

1 回答 1

1

它没有被压缩,它只是一个原始的二进制无符号 32 位 int 存储大端。您拥有的四个字节以八进制显示:0、6、32、200,十进制为 0、6、26 和 128,而 32 位 int 为 6*65536 + 26*256 + 128 = 400000 .

有很多方法可以解开它;来自 python,在我的 RPi 2 上,它当前的 i2c 频率为 100000:

>>> import struct; struct.unpack(">I", open('/proc/device-tree/soc/i2c@7e205000/clock-frequency').read())
(100000,)
于 2015-03-17T21:18:19.820 回答