问题描述
我有一台运行yocto
嵌入式系统的设备。当突然断开交流电源时,设备具有Super Capacitors(supercap)
可以提供几分钟的备份时间。请注意,当设备处于Supercap
上时,外围设备电源将被切断,从而为cpu提供了更多的时间来安全关机。
在以下情况下,以太网端口不起作用(端口上的LED甚至不闪烁):
- 拔下交流电,以便设备从
Supercap
供电(因此我认为以太网端口突然挂起) - 在设备
supercap
上并且以太网端口不再出现时重新接通交流电
注意:r8169
内核驱动程序正在用于以太网。
有一些建议可以删除并插入r8169
驱动程序,但是该驱动程序是内核中的内置模块,我觉得这不是解决问题的正确方法。应该有一些初始化/配置来解决此问题。
我还尝试了一些命令,例如“ ifconfig enp2s0 up / down”,但没有解决。
编辑1 :
从unbind/bind
目录中的驱动程序对/sys/bus/pci/drivers/r8169
设备执行以下步骤
- echo -n“ 0000:02:00.0”>取消绑定(成功)
- echo -n“ 0000:02:00.0”>绑定(sh:echo:写错误:没有这样的设备)
编辑2 :
这是lspci -v -kn
在执行unbind
之后显示的关于设备的信息。
02:00.0 0200: 10ec:8168 (rev 15)
Subsystem: 10ec:0123
Flags: fast devsel,IRQ 23
[virtual] I/O ports at d000 [size=256]
[virtual] Memory at 92104000 (64-bit,non-prefetchable) [size=4K]
[virtual] Memory at 92100000 (64-bit,non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint,MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
Capabilities: [170] Latency Tolerance Reporting
Capabilities: [178] L1 PM Substates
发出dmesg
后的 echo -n "0000:02:00.0" > bind
结果
r8169 0000:02:00.0: unkNown MAC,using family default
r8169 0000:02:00.0 (unnamed net_device) (uninitialized): rtl_chipcmd_cond == 1 (loop: 100,delay: 100).
libphy: r8169: probed
然后我尝试删除以太网接口enp2s0
,并使用以下命令重新扫描PCI总线:
- echo 1> /sys/devices/pci0000:00/0000:00:14.1/0000:02:00.0/remove
- echo 1> /sys/devices/pci0000:00/0000:00:14.1/rescan
Yeeee!我可以使用界面,但是它附带了eth0
而不是enp2s0
。
我检查了引导日志,r8169
似乎正在重命名。我可以重命名而不重启吗?
r8169 0000:02:00.0 enp2s0: renamed from eth1
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)