Загрузчик для SPI NOR Flash одноплатного ПК OrangePi Zero2


  Intro     SPL     Shell     Env     FDT     USB       Net       SPI  

Работа с сетью

В SoC Allwinner H616 контроллер Ethernet имеет два интерфейса (см. Контроллер EMAC):

  • EMAC0: порт Ethernet 1000 Мбит c внешним Ethernet PHY (и согласующим трансяорматором)
  • EMAC1: порт Ethernet 100 Мбит со встроенным PHY

    Для работы с локальной сетью в SPI-загрузчике OrangePi Zero2 используется EMAC0, т.е. гигабитный порт Ethernet. Ethernet PHY - это приемопередатчик Ethernet RTL 8211F (см. Datasheet RTL8211F )

    EMAC0 имеет базовый адрес: 0x05020000 ( см. Регистры EMAC )

    В дереве устройств контроллер EMAC0 описывает узел soc/ethernet@5020000



    ethernet@5020000 {
      compatible = "allwinner,sun50i-h616-emac", "allwinner,sun50i-a64-emac";
      syscon = <0x00000012>;
      reg = <0x05020000 0x00010000>;
      interrupts = <0x00000000 0x0000000e 0x00000004>;
      interrupt-names = "macirq";
      resets = <0x00000002 0x0000001e>;
      reset-names = "stmmaceth";
      clocks = <0x00000002 0x00000052>;
      clock-names = "stmmaceth";
      status = "okay";
      pinctrl-names = "default";
      pinctrl-0 = <0x00000013>;
      phy-mode = "rgmii";
      phy-handle = <0x00000014>;
      phy-supply = <0x0000000a>;
      allwinner,rx-delay-ps = <0x00000c1c>;
      allwinner,tx-delay-ps = <0x000002bc>;
      phandle = <0x00000031>;
      mdio {
        compatible = "snps,dwmac-mdio";
        #address-cells = <0x00000001>;
        #size-cells = <0x00000000>;
        phandle = <0x00000032>;
        ethernet-phy@1 {
        compatible = "ethernet-phy-ieee802.3-c22";
        reg = <0x00000001>;
        phandle = <0x00000014>;
        };
      };
    };

    Примечания:

  • MDIO (Management Data Input Output) - управление вводом-выводом данных, это интерфейс премо-передатчика: четыре пары между контроллером (EMAC) и приемопередатчиком (PHY).
  • MDC ( Management Data Clock) - управление синхронизацией данных
  • MII (Media Independent Interface — независимый от среды передачи интерфейс для гигабитных Ethernet-интерфейсов, обеспечивающий передачу данных между устройствами, реализующими подуровень MAC (Media Access Control) канального уровня с устройствами, реализующими физический уровень (PHY).
  • GMII (Gigabit Media-Independent Interface)
  • RGMII (Reduced Gigabit Media Independent Interface) — улучшенный интерфейс GMII


    aliases {
      ethernet0 = "/soc/ethernet@5020000";
      serial0 = "/soc/serial@5000000";
      mmc0 = "/soc/mmc@4020000";
    };

    __symbols__ {
      ............
      emac0 = "/soc/ethernet@5020000";
      mdio0 = "/soc/ethernet@5020000/mdio";
      ext_rgmii_phy = "/soc/ethernet@5020000/mdio/ethernet-phy@1";
      ...........
    }
    Команды оболочки U-Boot для работы с сетью

  • net - команды для работы с сетью (пока только с аргументом list)

  • tftpboot - загрузка файла по сети, используя протокол TFTP

  • tftpput - передать файл на TFTP-сервер (в данной версии загрузчика не подключена)

  • nfs - загрузка образа по сети, используя протокол NFS

  • bootp - загрузка образа по сети, используя протокол BOOTP/TFTP

  • dhcp - загрузка образа по сети, используя протокол DHCP/TFTP

  • mdio - служебные команды интерфейса MDIO

  • mii - служебные команды интерфейса MII

  • ping - послать ICMP ECHO_REQUEST сетевому хосту


    В этих командах могут использоваться параметры (аргументы):

  • loadAddress - начальный адрес области памяти, в которую загружаются данные
  • hostIPaddr - IP-адрес сервера (необязательно, если в ENV установлена переменная serverip)
  • bootfilename - имя или путь загружаемого файла в TFTP-сервере (или другом сервере)


    net


    => help net
    net - NET sub-system

    Usage:
    net list - list available devices

    => net list
    eth0 : ethernet@5020000 02:00:59:aa:2d:08 active
    =>

    tftpboot


    => help tftpboot
    tftpboot - load file via network using TFTP protocol

    Usage:
    tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
    =>

    Например:


    => tftpboot 0x45000000 spl.bin
    Using ethernet@5020000 device
    TFTP from server 192.168.0.105; our IP address is 192.168.0.122
    Filename 'spl.bin'.
    Load address: 0x45000000
    Loading: #################################################
    2.9 MiB/s
    done
    Bytes transferred = 754349 (b82ad hex)
    =>

    tftpput


    tftpput address size [[hostIPaddr:]filename]

    Здесь:
    address - адрес памяти, с которого начинаются данные
    size - количество передаваемых байтов
    hostIPaddr - IP-адрес TFTP-сервера, по умолчанию значение переменной окружения serverip
    filename - путь к записываемому файлу, если он не указан, то для создания имени файла используется IP-адрес клиента

    nfs


    => help nfs
    nfs - boot image via network using NFS protocol

    Usage:
    nfs [loadAddress] [[hostIPaddr:]bootfilename]
    =>

    bootp



    => help bootp
    bootp - boot image via network using BOOTP/TFTP protocol

    Usage:
    bootp [loadAddress] [[hostIPaddr:]bootfilename]
    =>

    dhcp


    => help dhcp
    dhcp - boot image via network using DHCP/TFTP protocol

    Usage:
    dhcp [loadAddress] [[hostIPaddr:]bootfilename]
    =>

    mdio


    => help mdio
    mdio - MDIO utility commands

    Usage:
    mdio list - List MDIO buses
    mdio read <phydev> [<devad>.]<reg> - read PHY's register at <devad>.<reg>
    mdio write <phydev> [<devad>.]<reg> <data> - write PHY's register at <devad>.
    mdio rx <phydev> [<devad>.]<reg> - read PHY's extended register at <devad>.<reg>
    mdio wx <phydev> [<devad>.]<reg> <data> - write PHY's extended register at <devad>.
    <phydev> may be:
      <busname> <addr>
      <addr>
      <eth name>
    <addr> <devad>, and <reg> may be ranges, e.g. 1-5.4-0x1f.
    =>

    Например:


    => mdio list
    ethernet@5020000:
    1 - RealTek RTL8211F <--> ethernet@5020000
    =>

    mii


    => help mii
    mii - MII utility commands

    Usage:
    mii device - list available devices
    mii device - set current device
    mii info - display MII PHY info
    mii read - read MII PHY register
    mii write - write MII PHY register
    mii modify - modify MII PHY register
    updating bits identified in
    mii dump - pretty-print (0-5 only)
    Addr and/or reg may be ranges, e.g. 2-7.
    =>

    Например:



    => mii device
    MII devices: 'ethernet@5020000'
    Current device: 'ethernet@5020000'
    =>

    ping





    => help ping
    ping - send ICMP ECHO_REQUEST to network host

    Usage:
    ping pingAddress
    =>

    Например:


    => ping 192.168.0.112
    Using ethernet@5020000 device
    host 192.168.0.112 is alive

    => ping 192.168.0.113
    Using ethernet@5020000 device

    ARP Retry count exceeded; starting again
    ping failed; host 192.168.0.113 is not alive
    =>




  •   Intro     SPL     Shell     Env     FDT     USB       Net       SPI