首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过sysFS动态移除或重新触发探测EEPROM?

如何通过sysFS动态移除或重新触发探测EEPROM?
EN

Stack Overflow用户
提问于 2019-11-14 02:50:13
回答 2查看 997关注 0票数 1

我想知道动态删除EEPROM的正确方法是什么。另一种同样有效的方法是告诉设备重新做探头。我尝试将其回显给delete_device,但结果显示在设备列表中找不到它的错误。我正在运行4.14.149内核(使用Yocto Pyro构建)。问题中的EEPROM是Atmel 24CS02 (兼容at24)。

这是一种奇怪的用例;这是在一个模拟器中,它有两个基于i.MX6的so,用于持续集成,并且没有物理EEPROM,因此启动时的初始探测将失败。这就是目录中没有eeprom文件的原因。EEPROM由FPGA模拟(直到初始引导之后才加载和配置)。一旦完成,我需要重新探测(这样它将在那里看到一个EEPROM并填充sysFS),或者删除并重新添加设备(这将重新触发探测)。

下面是我尝试删除它时的输出:

代码语言:javascript
复制
root@PLX-23-UUT:~# cd /sys/bus/i2c/devices/
root@PLX-23-UUT:/sys/bus/i2c/devices# ls
2-0041  2-0050  2-0052  2-0056  2-0057  2-006f  i2c-1  i2c-2
root@PLX-23-UUT:/sys/bus/i2c/devices# ls 2-0052
modalias  name  of_node  subsystem  uevent
root@PLX-23-UUT:/sys/bus/i2c/devices# echo 0x52 > i2c-2/delete_device
[   72.717009] i2c i2c-2: delete_device: Can't find device in list
-sh: echo: write error: No such file or directory
EN

回答 2

Stack Overflow用户

发布于 2020-12-06 02:43:17

您可以解除绑定并绑定驱动程序:

代码语言:javascript
复制
# echo 2-0052 > /sys/bus/i2c/drivers/at24/unbind
# echo 2-0052 > /sys/bus/i2c/drivers/at24/bind
at24 2-0052: supply vcc not found, using dummy regulator
at24 2-0052: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
票数 1
EN

Stack Overflow用户

发布于 2020-12-05 14:49:22

https://github.com/torvalds/linux/blob/master/drivers/i2c/i2c-core-base.c

代码语言:javascript
复制
/*
 * And of course let the users delete the devices they instantiated, if
 * they got it wrong. This interface can only be used to delete devices
 * instantiated by i2c_sysfs_new_device above. This guarantees that we
 * don't delete devices to which some kernel code still has references.
 *
 * Parameter checking may look overzealous, but we really don't want
 * the user to delete the wrong device.
 */

换句话说,如果你没有实例化这个设备,你就不能移除它。

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

https://stackoverflow.com/questions/58843718

复制
相关文章

相似问题

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