Linux
LAN9500A Linux USB 乙太網驅動問題!
我正在開發一個配備 iMX28 模組和 LAN9500A USB 到乙太網控制器的定制板,沒有用於網路介面的 EEPROM。作業系統是 Linux(核心 v3.16)。LAN9500A 連接到帶有集成磁性元件和 LED 的 RJ45 插孔。
我對照我的設計檢查了 Microchip 的參考原理圖。 http://ww1.microchip.com/downloads/en/DeviceDoc/9500a_sch.pdf
我可以看到檢測到 LAN9500A 並載入了正確的驅動程序…,
# dmesg | grep -i smsc [ 1.549126] usbcore: registered new interface driver smsc95xx [ 2.186356] smsc95xx v1.0.4 [ 2.258622] smsc95xx 1-1:1.0 eth2: register 'smsc95xx' at usb-ci_hdrc.1-1, smsc95xx USB 2.0 Ethernet, 62:94:6a:f1:ec:26 [ 9.588663] fec 800f0000.ethernet eth0: Freescale FEC PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=800f0000.etherne:00, irq=-1)
系統打開後,連結和活動 LED 會亮起…
# ifconfig eth2 up IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready root@imx28evk:~# IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready smsc95xx 1-1:1.0 eth2: link up, 100Mbps, full-duplex, lpa 0x4DE1 IPv6: eth2: IPv6 duplicate address fe80::fa:25ff:fe59:cf38 detected! # ifconfig eth2 down
LED仍然亮著…
# ifconfig eth2 up smsc95xx 1-1:1.0 eth2: link up, 100Mbps, full-duplex, lpa 0xC5E1 # ifconfig eth2 down
LED仍然亮著…
$ ifconfig eth2 up
現在 LED 熄滅…
# ethtool eth2 Settings for eth2: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Speed: 10Mb/s Duplex: Half Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbag Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: no # mii-tool eth2 eth2: no link # ifconfig eth2 down $ ifconfig eth2 up smsc95xx 1-1:1.0 eth2: link up, 100Mbps, full-duplex, lpa 0xC5E1
LED 燈亮起
ethtool eth2 Settings for eth2: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbag Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes # mii-tool eth2 eth2: negotiated 1000baseT-HD flow-control, link ok
另一個問題是,當我從 RJ45 插座上拔下並插入乙太網電纜時,Linux 沒有檢測到它,…
有沒有其他人看過這個?我非常感謝您能提供的任何幫助。
我意識到這個問題在Linux Kernel 3.16.48中已經得到了一定程度的解決。