Linux kernel 重新接通交流电源后以太网端口不工作

Linux kernel 重新接通交流电源后以太网端口不工作,linux-kernel,linux-device-driver,yocto,ethernet,Linux Kernel,Linux Device Driver,Yocto,Ethernet,我有一个运行yocto嵌入式系统的设备。该设备配有超级电容器(supercap),可在交流电源突然断开时提供几分钟的备用电源。请注意,当设备处于“超级电容”状态时,外围设备的电源将被切断,以便为CPU提供更多的时间以实现安全关机 在以下情况下,以太网端口不工作(端口上的LED灯甚至不闪烁): 交流电源被切断,所以设备从超级电容获得电源(我假设以太网端口突然中断) 当设备处于打开状态时,重新接通交流电源,超级AP,以太网端口不再接通 注意:r8169内核驱动程序正用于以太网 有一些关于删除和插

我有一个运行
yocto
嵌入式系统的设备。该设备配有
超级电容器(supercap)
,可在交流电源突然断开时提供几分钟的备用电源。请注意,当设备处于“超级电容”状态时,外围设备的电源将被切断,以便为CPU提供更多的时间以实现安全关机

在以下情况下,以太网端口不工作(端口上的LED灯甚至不闪烁):

  • 交流电源被切断,所以设备从超级电容获得电源(我假设以太网端口突然中断)
  • 当设备处于打开状态时,重新接通交流电源,超级AP,以太网端口不再接通
注意:
r8169
内核驱动程序正用于以太网

有一些关于删除和插入
r8169
驱动程序的建议,但是驱动程序是内核中的内置模块,我觉得这不是解决问题的正确方法。应该有一些初始化/配置来修复此问题

我还尝试了两个命令,比如“ifconfig enp2s0 up/down”,但都没有成功

编辑1: 执行以下步骤以从
/sys/bus/pci/drivers/r8169
目录中的驱动程序中解除绑定设备

  • echo-n“0000:02:00.0”>解除绑定(成功)
  • echo-n“0000:02:00.0”>绑定(sh:echo:write error:无此类设备)
编辑2

这是执行
解除绑定后
lspci-v-kn
显示的有关设备的内容

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”发出后的结果绑定

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/删除
  • echo 1>/sys/devices/pci0000:00/0000:00:14.1/重新扫描
耶!我让界面正常工作,但它使用了
eth0
而不是
enp2s0

我检查了启动日志,并且
r8169
似乎正在重命名它。我可以重命名它而不重新启动它吗

r8169 0000:02:00.0 enp2s0: renamed from eth1

我认为你离题了。你的问题不是关于编程,也不是关于程序员的工具,我应该问超级用户还是其他什么地方?我不确定。unix和linux软件可能更合适。但可能更多的是硬件或网络。谷歌可能有一个类似问题发送到哪里的想法。但你有没有尝试过重新绑定?这有帮助吗?我不知道,是否有任何命令/实用程序可以绑定/取消绑定?如果你知道,请提供给我。我想你离题了。你的问题不是关于编程,也不是关于程序员的工具,我应该问超级用户还是其他什么地方?我不确定。unix和linux软件可能更合适。但可能更多的是硬件或网络。谷歌可能有一个类似问题发送到哪里的想法。但你有没有尝试过重新绑定?这有帮助吗?我不知道,是否有任何命令/实用程序可以绑定/取消绑定?如果知道,请提供给我。