Проблема Xilinx AXI Ethernet Lite на плате ARTY100T на специальной плате
В настоящее время я работаю над проектом по включению ethernet lite в arty-100t от Xilinx. Специальная плата основана на Shakti SoC. Я внес изменения в файл DTS, чтобы включить в него узел PLIC и Ethernet lite. Плата PLIC настроена, и прерывание для AXI Ethernet Lite можно найти в файле прерываний (/proc/interrupts). Идентификатор прерывания для AXI Ethernet Lite - от 31 до PLIC. Драйвер Ethernet проверяется, шина MDIO настраивается (возвращаемое значение 0) и вызывается функция xemaclite_open для инициализации. Интерфейс настроен, но в конце процесса в журнале ядра написано: «Link is down». Обычно интерфейс должен быть запущен после вызова функции open, но здесь выводится сообщение «Link is down». Есть ли какая-то конкретная причина или случай, вызывающий это?
Кроме того, когда я пытаюсь прочитать регистры интерфейса с помощью $ mii-diag --force, я обнаружил, что результат выглядит следующим образом:
$ mii-diag ␛[J --force
Using the default interface 'eth0'.
Basic registers of MII PHY #1: ffff ffff ffff ffff ffff ffff ffff ffff.
No MII transceiver present!.
The autonegotiated capability is 03e0.
The autonegotiated media type is 100baseTx-FD.
Basic mode control register 0xffff: Auto-negotiation enabled.
Internal Collision-Test enabled!
Restarted auto-negotiation in progress!
Transceiver isolated from the MII!
Transceiver powered down!
Transceiver in loopback mode!
Transceiver currently being reset!
Basic mode status register 0xffff ... ffff.
Link status: established.
Remote fault detected!
*** Link Jabber! ***
Your link partner advertised ffff: Flow-control 100baseT4 100baseTx-FD 100baseTx 10baseT-FD 10baseT, w/ 802.3X flow control.
End of basic transceiver information.```
I don't understand why the basic register value and the basic registers of MII PHY#1 is fff..fff.
Файл DTS для PLIC и AXI Ethernet выглядит следующим образом:
plic_0: interrupt-controller@c000000 {
#interrupt-cells = <1>;
compatible = "riscv,plic0";
interrupt-controller;
reg = <0x0 0xc000000 0x0 0x4000000>;
interrupts-extended = <&CPU0_intc 11>;
riscv,ndev = <31>;
};
ethernet: ethernet@44000{
device_type = "network";
compatible = "xlnx,xps-ethernetlite-3.00.a", "xlnx,xps-ethernetlite-1.00.a";
interrupt-parent = <&plic_0>;
interrupts = <31 0>;
local-mac-address = [00 0a 35 00 00 00];
phy-handle = <&phy0>;
reg = <0x0 0x44000 0x0 0x4000>;
xlnx,phy-type = <0x3>;
xlnx,duplex = <0x1>;
xlnx,include-global-buffers = <0x1>;
xlnx,include-internal-loopback = <0x1>;
xlnx,include-mdio = <0x1>;
xlnx,instance = "axi_ethernetlite_inst";
xlnx,rx-ping-pong = <0x1>;
xlnx,s-axi-id-width = <0x1>;
xlnx,tx-ping-pong = <0x1>;
xlnx,use-internal = <0x0>;
axi_ethernetlite_0_mdio: mdio {
#address-cells = <0x1>;
#size-cells = <0x0>;
phy0: phy@1{
device_type = "ethernet-phy";
phy-mode = "mii";
compatible = "ethernet-phy-ieee802.3-c45";
ti,rx-internal-delay = <1000000000>;
ti,tx-internal-delay = <1000000000>;
ti,fifo-depth = <0x1>;
reg = <1>;
status = "okay";
};
};
};
Плата Xilinx ARTY-100T оснащена Texas Instruments DP83848J PHY. Я думаю, что встроенный Linux не может обнаружить какую-либо ссылку в порту Ethernet, поскольку вывод ethtool был
$ ethtool eth0
Settings for eth0:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Link detected: no
Порт поддержки не отображается, и обнаруженная ссылка отсутствует. Есть ли проблемы с настройкой файла конфигурации /DTS или с драйвером.
Спасибо