diff --git a/bsp/zynqmp-a53-dfzu2eg/.config b/bsp/zynqmp-a53-dfzu2eg/.config index c8cc09b1f11e..758a0c4be02a 100644 --- a/bsp/zynqmp-a53-dfzu2eg/.config +++ b/bsp/zynqmp-a53-dfzu2eg/.config @@ -310,9 +310,11 @@ CONFIG_RT_SERIAL_XILINX_PS=y # CONFIG_RT_USING_CAN is not set CONFIG_RT_USING_CLOCK_TIME=y CONFIG_RT_CLOCK_TIME_ARM_ARCH=y +CONFIG_RT_USING_ETHERNET=y +CONFIG_RT_ETHERNET_CADENCE=y # CONFIG_RT_USING_I2C is not set # CONFIG_RT_USING_PHY is not set -# CONFIG_RT_USING_PHY_V2 is not set +CONFIG_RT_USING_PHY_V2=y # CONFIG_RT_USING_ADC is not set # CONFIG_RT_USING_DAC is not set CONFIG_RT_USING_NULL=y @@ -343,6 +345,7 @@ CONFIG_RT_RTC_ZYNQMP=y # CONFIG_RT_USING_GRAPHIC is not set # CONFIG_RT_USING_HWCRYPTO is not set # CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_PTP is not set # CONFIG_RT_USING_LED is not set # CONFIG_RT_USING_INPUT is not set # CONFIG_RT_USING_MBOX is not set @@ -366,7 +369,9 @@ CONFIG_RT_USING_RESET=y # CONFIG_RT_USING_POWER_SUPPLY is not set # CONFIG_RT_USING_THERMAL is not set # CONFIG_RT_USING_VIRTIO is not set -# CONFIG_RT_USING_DMA is not set +# CONFIG_RT_USING_NVMEM is not set +CONFIG_RT_USING_DMA=y +# CONFIG_RT_DMA_PL330 is not set # CONFIG_RT_USING_MFD is not set CONFIG_RT_USING_OFW=y CONFIG_RT_USING_BUILTIN_FDT=y @@ -380,7 +385,9 @@ CONFIG_MAX_HANDLERS=256 CONFIG_RT_PIC_ARM_GIC=y # CONFIG_RT_PIC_ARM_GIC_V3 is not set CONFIG_RT_PIC_ARM_GIC_MAX_NR=1 -# CONFIG_RT_USING_PIN is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_PIN_PL061 is not set +# CONFIG_RT_USING_PINCTRL is not set CONFIG_RT_USING_CLK=y # CONFIG_RT_USING_CHERRYUSB is not set @@ -448,9 +455,90 @@ CONFIG_RT_USING_POSIX_PIPE_SIZE=512 # # Network # -# CONFIG_RT_USING_SAL is not set -# CONFIG_RT_USING_NETDEV is not set -# CONFIG_RT_USING_LWIP is not set +CONFIG_RT_USING_SAL=y +CONFIG_SAL_INTERNET_CHECK=y +CONFIG_SOCKET_TABLE_STEP_LEN=4 + +# +# Docking with protocol stacks +# +CONFIG_SAL_USING_LWIP=y +# CONFIG_SAL_USING_AT is not set +# CONFIG_SAL_USING_TLS is not set +# end of Docking with protocol stacks + +CONFIG_SAL_USING_POSIX=y +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y +CONFIG_NETDEV_USING_AUTO_DEFAULT=y +# CONFIG_NETDEV_USING_LINK_STATUS_CALLBACK is not set +# CONFIG_NETDEV_USING_IPV6 is not set +CONFIG_NETDEV_IPV4=1 +CONFIG_NETDEV_IPV6=0 +CONFIG_RT_USING_LWIP=y +# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set +# CONFIG_RT_USING_LWIP141 is not set +CONFIG_RT_USING_LWIP203=y +# CONFIG_RT_USING_LWIP212 is not set +# CONFIG_RT_USING_LWIP_LATEST is not set +CONFIG_RT_USING_LWIP_VER_NUM=0x20003 +# CONFIG_RT_USING_LWIP_IPV6 is not set +CONFIG_RT_LWIP_MEM_ALIGNMENT=8 +CONFIG_RT_LWIP_IGMP=y +CONFIG_RT_LWIP_ICMP=y +# CONFIG_RT_LWIP_SNMP is not set +CONFIG_RT_LWIP_DNS=y +CONFIG_RT_LWIP_DHCP=y +CONFIG_IP_SOF_BROADCAST=1 +CONFIG_IP_SOF_BROADCAST_RECV=1 + +# +# Static IPv4 Address +# +CONFIG_RT_LWIP_IPADDR="192.168.1.30" +CONFIG_RT_LWIP_GWADDR="192.168.1.1" +CONFIG_RT_LWIP_MSKADDR="255.255.255.0" +# end of Static IPv4 Address + +CONFIG_RT_LWIP_UDP=y +CONFIG_RT_LWIP_TCP=y +CONFIG_RT_LWIP_RAW=y +# CONFIG_RT_LWIP_PPP is not set +CONFIG_RT_MEMP_NUM_NETCONN=8 +CONFIG_RT_LWIP_PBUF_NUM=16 +CONFIG_RT_LWIP_RAW_PCB_NUM=4 +CONFIG_RT_LWIP_UDP_PCB_NUM=4 +CONFIG_RT_LWIP_TCP_PCB_NUM=4 +CONFIG_RT_LWIP_TCP_SEG_NUM=40 +CONFIG_RT_LWIP_TCP_SND_BUF=8196 +CONFIG_RT_LWIP_TCP_WND=8196 +CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10 +CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8 +CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=8192 +# CONFIG_LWIP_NO_RX_THREAD is not set +# CONFIG_LWIP_NO_TX_THREAD is not set +CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12 +CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=8192 +CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8 +# CONFIG_RT_LWIP_REASSEMBLY_FRAG is not set +CONFIG_LWIP_NETIF_STATUS_CALLBACK=1 +CONFIG_LWIP_NETIF_LINK_CALLBACK=1 +CONFIG_RT_LWIP_NETIF_NAMESIZE=6 +CONFIG_SO_REUSE=1 +CONFIG_LWIP_SO_RCVTIMEO=1 +CONFIG_LWIP_SO_SNDTIMEO=1 +CONFIG_LWIP_SO_RCVBUF=1 +CONFIG_LWIP_SO_LINGER=0 +# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=0 +# CONFIG_RT_LWIP_STATS is not set +# CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set +CONFIG_RT_LWIP_USING_PING=y +# CONFIG_LWIP_USING_DHCPD is not set +# CONFIG_RT_LWIP_ENABLE_USER_HOOKS is not set +# CONFIG_RT_LWIP_DEBUG is not set # CONFIG_RT_USING_AT is not set # end of Network @@ -503,6 +591,7 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128 # end of Using USB legacy version # CONFIG_RT_USING_FDT is not set +# CONFIG_RT_USING_LEGACY_VIRTIO is not set # CONFIG_RT_USING_RUST is not set # end of RT-Thread Components diff --git a/bsp/zynqmp-a53-dfzu2eg/README.md b/bsp/zynqmp-a53-dfzu2eg/README.md index 2b6ea5dc2d6e..95f7967628a5 100644 --- a/bsp/zynqmp-a53-dfzu2eg/README.md +++ b/bsp/zynqmp-a53-dfzu2eg/README.md @@ -145,7 +145,7 @@ msh /> | GPIO | 暂不支持 | - | | SPI | 暂不支持 | - | | SDIO | 暂不支持 | - | -| ETH | 暂不支持 | - | +| ETH | 支持 | - | 目前BSP仅保证成功运行,驱动后续会慢慢支持! diff --git a/bsp/zynqmp-a53-dfzu2eg/qemu.py b/bsp/zynqmp-a53-dfzu2eg/qemu.py index 680ea34ffd41..0b476a8ad207 100755 --- a/bsp/zynqmp-a53-dfzu2eg/qemu.py +++ b/bsp/zynqmp-a53-dfzu2eg/qemu.py @@ -39,5 +39,6 @@ def is_opt(key, inkey): -kernel rtthread.bin \ {} \ {} \ + -nic user,model=cadence_gem \ -serial mon:stdio """.format(RTT_QEMU_ROOT, mem, q_graphic, q_debug)) diff --git a/bsp/zynqmp-a53-dfzu2eg/rtconfig.h b/bsp/zynqmp-a53-dfzu2eg/rtconfig.h index 9e7cb9678248..e3b9d520bedc 100644 --- a/bsp/zynqmp-a53-dfzu2eg/rtconfig.h +++ b/bsp/zynqmp-a53-dfzu2eg/rtconfig.h @@ -206,6 +206,9 @@ #define RT_SERIAL_XILINX_PS #define RT_USING_CLOCK_TIME #define RT_CLOCK_TIME_ARM_ARCH +#define RT_USING_ETHERNET +#define RT_ETHERNET_CADENCE +#define RT_USING_PHY_V2 #define RT_USING_NULL #define RT_USING_ZERO #define RT_USING_RANDOM @@ -220,6 +223,7 @@ /* Power Management (PM) Domains device drivers */ /* end of Power Management (PM) Domains device drivers */ +#define RT_USING_DMA #define RT_USING_OFW #define RT_USING_BUILTIN_FDT #define RT_BUILTIN_FDT_PATH "zynqmp.dtb" @@ -229,6 +233,7 @@ #define MAX_HANDLERS 256 #define RT_PIC_ARM_GIC #define RT_PIC_ARM_GIC_MAX_NR 1 +#define RT_USING_PIN #define RT_USING_CLK /* SoC (System on Chip) Drivers */ @@ -273,6 +278,66 @@ /* Network */ +#define RT_USING_SAL +#define SAL_INTERNET_CHECK +#define SOCKET_TABLE_STEP_LEN 4 + +/* Docking with protocol stacks */ + +#define SAL_USING_LWIP +/* end of Docking with protocol stacks */ +#define SAL_USING_POSIX +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT +#define NETDEV_USING_AUTO_DEFAULT +#define NETDEV_IPV4 1 +#define NETDEV_IPV6 0 +#define RT_USING_LWIP +#define RT_USING_LWIP203 +#define RT_USING_LWIP_VER_NUM 0x20003 +#define RT_LWIP_MEM_ALIGNMENT 8 +#define RT_LWIP_IGMP +#define RT_LWIP_ICMP +#define RT_LWIP_DNS +#define RT_LWIP_DHCP +#define IP_SOF_BROADCAST 1 +#define IP_SOF_BROADCAST_RECV 1 + +/* Static IPv4 Address */ + +#define RT_LWIP_IPADDR "192.168.1.30" +#define RT_LWIP_GWADDR "192.168.1.1" +#define RT_LWIP_MSKADDR "255.255.255.0" +/* end of Static IPv4 Address */ +#define RT_LWIP_UDP +#define RT_LWIP_TCP +#define RT_LWIP_RAW +#define RT_MEMP_NUM_NETCONN 8 +#define RT_LWIP_PBUF_NUM 16 +#define RT_LWIP_RAW_PCB_NUM 4 +#define RT_LWIP_UDP_PCB_NUM 4 +#define RT_LWIP_TCP_PCB_NUM 4 +#define RT_LWIP_TCP_SEG_NUM 40 +#define RT_LWIP_TCP_SND_BUF 8196 +#define RT_LWIP_TCP_WND 8196 +#define RT_LWIP_TCPTHREAD_PRIORITY 10 +#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 +#define RT_LWIP_TCPTHREAD_STACKSIZE 8192 +#define RT_LWIP_ETHTHREAD_PRIORITY 12 +#define RT_LWIP_ETHTHREAD_STACKSIZE 8192 +#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8 +#define LWIP_NETIF_STATUS_CALLBACK 1 +#define LWIP_NETIF_LINK_CALLBACK 1 +#define RT_LWIP_NETIF_NAMESIZE 6 +#define SO_REUSE 1 +#define LWIP_SO_RCVTIMEO 1 +#define LWIP_SO_SNDTIMEO 1 +#define LWIP_SO_RCVBUF 1 +#define LWIP_SO_LINGER 0 +#define LWIP_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING /* end of Network */ /* Memory protection */ diff --git a/bsp/zynqmp-a53-dfzu2eg/zynqmp.dts b/bsp/zynqmp-a53-dfzu2eg/zynqmp.dts index 281f8da3f581..289ef71f5893 100755 --- a/bsp/zynqmp-a53-dfzu2eg/zynqmp.dts +++ b/bsp/zynqmp-a53-dfzu2eg/zynqmp.dts @@ -23,12 +23,13 @@ interrupt-parent = <&gic>; chosen { - bootargs = "earlycon console=ttyPS0"; + bootargs = "earlycon console=ttyPS0 cma=8M coherent_pool=2M"; stdout-path = "serial0:115200n8"; }; aliases { serial0 = &uart0; + ethernet0 = &gem0; }; memory { @@ -107,6 +108,13 @@ clock-frequency = <100000000>; }; + clk125: clk125 { + compatible = "fixed-clock"; + clock-output-names = "clk125mhz"; + #clock-cells = <0>; + clock-frequency = <125000000>; + }; + amba: amba { compatible = "simple-bus"; #address-cells = <2>; @@ -129,5 +137,24 @@ clocks = <&clk100 &clk100>; clock-names = "uart_clk", "pclk"; }; + + gem0: ethernet@ff0b0000 { + compatible = "cdns,zynqmp-gem", "cdns,gem"; + reg = <0x0 0xff0b0000 0x0 0x1000>; + interrupts = , + ; + interrupt-names = "macirq", "hs_macirq"; + clocks = <&clk100 &clk100 &clk125 &clk125 &clk100>; + clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; + #address-cells = <1>; + #size-cells = <0>; + phy-mode = "rgmii-id"; + phy-handle = <&gem0_phy>; + local-mac-address = [52 54 00 12 34 56]; + + gem0_phy: ethernet-phy@17 { + reg = <23>; + }; + }; }; };