求助:无法将Atmel 24c128 EEPROM实例化为用户空间文件
AT24C128 EEPROM无法在用户空间实例化为文件节点求助
我有两个Atmel 24c128 EEPROM,地址分别为0x0A和0x0B,通过i2cdetect可正常检测到设备存在:
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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
同时可以使用i2ctransfer命令进行读写操作:
$ 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
但无法在用户空间将其实例化为文件,从而使用open、seek、write、read等标准文件操作命令。查看设备目录/sys/bus/i2c/devices/i2c-1/1-000a下无对应文件节点:
/sys/bus/i2c/devices/i2c-1/1-000a$ ll
输出:
total 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 name 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 subsystem -> ../../../../bus/i2c/ -rw-r--r-- 1 root root 4096 Mar 14 13:51 uevent
我的dtsi文件中已配置该EEPROM节点:
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"; };
参考相关内容尝试在用户空间实例化:
- 普通用户执行
sudo echo 24c128 0xa > /sys/bus/i2c/devices/i2c-1/new_device提示权限拒绝 - root用户执行该命令提示
echo: write error: Invalid argument
恳请提供解决思路。
内容的提问来源于stack exchange,提问作者Mechi
相关产品推荐
相关产品推荐

