首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/sys/bus/ i2c /./i2c文件是只读的。

/sys/bus/ i2c /./i2c文件是只读的。
EN

Stack Overflow用户
提问于 2018-09-25 07:51:06
回答 2查看 3.1K关注 0票数 1
  1. 我有一个X86 CPU与自定义I2C主硬件。我的Linux是Ubuntu14.04,内核3.13。
  2. 我为我的自定义I2c主硬件编写了一个I2C驱动程序。
  3. 当我加载驱动程序时,会创建设备/sys/bus/i2c/设备/i2c-11。
  4. 连接到我的I2C总线上有一个I2C eeprom内存。
  5. 当我加载linux驱动程序时,eeprom驱动程序会自动创建sys文件/sys/bus/i2c/设备/i2c-11/11-0050/ eeprom。
  6. 问题:此文件/sys/bus/i2c/设备/i2c-11/11-0050/eeprom是只读的。
  7. 从eeprom文件读取工作正常,例如:$ sudo /sys/bus/i2c/设备/i2c-11/11-0050/eeprom\x6转储-C。
  8. 但是我不能写到/sys/bus/i2c/设备/i2c-11/11-0050/eeprom,因为它是只读的。为什么创建这个文件是只读的?

谢谢。

佩奥

P.D:我尝试chmod eeprom文件到rwx,但在任何情况下,我都会收到一个错误,试图写到eeprom:"bash: eeprom:许可被拒绝“。

EN

回答 2

Stack Overflow用户

发布于 2018-09-25 08:07:28

看来eeprom Linux驱动程序只实现驱动程序/misc/eeprom/eeprom.c读取sysfs属性:

https://github.com/torvalds/linux/blob/master/drivers/misc/eeprom/eeprom.c#L117

代码语言:javascript
复制
static const struct bin_attribute eeprom_attr = {
    .attr = {
        .name = "eeprom",
        .mode = S_IRUGO,
    },
    .size = EEPROM_SIZE,
    .read = eeprom_read,
};
票数 0
EN

Stack Overflow用户

发布于 2019-02-21 17:41:56

一个问题是,您使用的eeprom.c驱动程序不支持写入eeprom,因为它没有写功能。

考虑在24.c时使用驱动程序。它具有编写的功能,例如at24_eeprom_write()

实际上,该驱动程序的探测()函数将决定该部件是否可写,然后根据需要设置函数在可写时调用。当部件是只读的时,写函数不可用。它会自动处理这件事。

下面是用于linux内核v3.3的at24.c驱动程序的代码,如下所示:https://elixir.bootlin.com/linux/v3.3/source/drivers/misc/eeprom/at24.c

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52493181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档