Проблема 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 или с драйвером.

Спасибо

0 ответов

Другие вопросы по тегам