[bsp/zynqmp-a53-dfzu2eg] Port to the MACB for QEMU

Signed-off-by: GuEe-GUI <2991707448@qq.com>
This commit is contained in:
GuEe-GUI
2026-08-14 16:45:29 +08:00
committed by Rbb666
parent 0c1a9a429a
commit 2bcc47d418
5 changed files with 190 additions and 8 deletions
+95 -6
View File
@@ -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
+1 -1
View File
@@ -145,7 +145,7 @@ msh />
| GPIO | 暂不支持 | - |
| SPI | 暂不支持 | - |
| SDIO | 暂不支持 | - |
| ETH | 暂不支持 | - |
| ETH | 支持 | - |
目前BSP仅保证成功运行,驱动后续会慢慢支持!
+1
View File
@@ -39,5 +39,6 @@ os.system("""
-kernel rtthread.bin \
{} \
{} \
-nic user,model=cadence_gem \
-serial mon:stdio
""".format(RTT_QEMU_ROOT, mem, q_graphic, q_debug))
+65
View File
@@ -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 */
+28 -1
View File
@@ -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 = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
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>;
};
};
};
};