我有 2 个 Atmel EEPROM - 24c128 - 地址为 0x0A 和 0x0B。
sudo i2cdetect -y -r -a 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- 02 03 -- -- -- -- -- -- 0a 0b -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- UU UU -- --
40: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- UU UU -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
我可以使用 i2c 命令读/写:
$ sudo i2ctransfer -y -f 1 w4@0x0a 0 0 123 22 $ sudo i2ctransfer -y -f 1 w2@0x0a 0 0 r10 0x7b 0x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
我不知道如何将 eeprom 视为一个文件,以便能够使用文件命令打开、查找、写入和读取:
/sys/bus/i2c/devices/i2c-1/1-000a$ ll 总计 0 drwxr-xr-x 3 root root 0 Mar 14 13:51 ./ drwxr-xr-x 15 root root 0 Mar 14 13:51 ../ -r--r--r-- 1 root root 4096 Mar 14 14:56 modalias -r--r--r-- 1 root root 4096 Mar 14 14:56 名称 lrwxrwxrwx 1 root root 0 Mar 14 14:56 of_node -> '../../../../firmware/devicetree/base/i2c@c240000/ub960@3C/link@2/ub953@42/sc9732cam_EEP@ A'/ drwxr-xr-x 2 root root 0 Mar 14 14:56 power/ lrwxrwxrwx 1 root root 0 Mar 14 13:51 子系统 -> ../../../../bus/i2c/ -rw-r--r-- 1 root root 4096 Mar 14 13:51 uevent
dtsi文件中:
EEP_NODE: EEP_NODE_NAME { status = "okay"; compatible = "24c128","at24"; address-width = <16>; #address-cells = <1>; #size-cells = <0>; reg = <0x0A>; physical-addr = <0x52>; pagesize = <64>; size = <16384>; has-eeprom = "1"; /* Enable EEPROM support */ node_name_alias = "EEP";
};
作为用户: /sys/bus/i2c/devices/i2c-1$ sudo echo 24c128 0xa > new_device -bash: new_device: 权限被拒绝
作为根: root@mechi:/sys/devices/c240000.i2c/i2c-1# sudo echo 24c128 0xa > new_device echo: 写入错误:参数无效
任何想法将不胜感激。 谢谢, 机械
问题是我依赖于
d3_defconfig
文件。我用过:
sudo make linux-menuconfig
并在
Device Drivers/Misc./EEPROM
中选择i2c
选项。现在可以了。