Skip to content

Commit 2bcc47d

Browse files
GuEe-GUIRbb666
authored andcommitted
[bsp/zynqmp-a53-dfzu2eg] Port to the MACB for QEMU
Signed-off-by: GuEe-GUI <2991707448@qq.com>
1 parent 0c1a9a4 commit 2bcc47d

5 files changed

Lines changed: 190 additions & 8 deletions

File tree

bsp/zynqmp-a53-dfzu2eg/.config

Lines changed: 95 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -310,9 +310,11 @@ CONFIG_RT_SERIAL_XILINX_PS=y
310310
# CONFIG_RT_USING_CAN is not set
311311
CONFIG_RT_USING_CLOCK_TIME=y
312312
CONFIG_RT_CLOCK_TIME_ARM_ARCH=y
313+
CONFIG_RT_USING_ETHERNET=y
314+
CONFIG_RT_ETHERNET_CADENCE=y
313315
# CONFIG_RT_USING_I2C is not set
314316
# CONFIG_RT_USING_PHY is not set
315-
# CONFIG_RT_USING_PHY_V2 is not set
317+
CONFIG_RT_USING_PHY_V2=y
316318
# CONFIG_RT_USING_ADC is not set
317319
# CONFIG_RT_USING_DAC is not set
318320
CONFIG_RT_USING_NULL=y
@@ -343,6 +345,7 @@ CONFIG_RT_RTC_ZYNQMP=y
343345
# CONFIG_RT_USING_GRAPHIC is not set
344346
# CONFIG_RT_USING_HWCRYPTO is not set
345347
# CONFIG_RT_USING_WIFI is not set
348+
# CONFIG_RT_USING_PTP is not set
346349
# CONFIG_RT_USING_LED is not set
347350
# CONFIG_RT_USING_INPUT is not set
348351
# CONFIG_RT_USING_MBOX is not set
@@ -366,7 +369,9 @@ CONFIG_RT_USING_RESET=y
366369
# CONFIG_RT_USING_POWER_SUPPLY is not set
367370
# CONFIG_RT_USING_THERMAL is not set
368371
# CONFIG_RT_USING_VIRTIO is not set
369-
# CONFIG_RT_USING_DMA is not set
372+
# CONFIG_RT_USING_NVMEM is not set
373+
CONFIG_RT_USING_DMA=y
374+
# CONFIG_RT_DMA_PL330 is not set
370375
# CONFIG_RT_USING_MFD is not set
371376
CONFIG_RT_USING_OFW=y
372377
CONFIG_RT_USING_BUILTIN_FDT=y
@@ -380,7 +385,9 @@ CONFIG_MAX_HANDLERS=256
380385
CONFIG_RT_PIC_ARM_GIC=y
381386
# CONFIG_RT_PIC_ARM_GIC_V3 is not set
382387
CONFIG_RT_PIC_ARM_GIC_MAX_NR=1
383-
# CONFIG_RT_USING_PIN is not set
388+
CONFIG_RT_USING_PIN=y
389+
# CONFIG_RT_PIN_PL061 is not set
390+
# CONFIG_RT_USING_PINCTRL is not set
384391
CONFIG_RT_USING_CLK=y
385392
# CONFIG_RT_USING_CHERRYUSB is not set
386393

@@ -448,9 +455,90 @@ CONFIG_RT_USING_POSIX_PIPE_SIZE=512
448455
#
449456
# Network
450457
#
451-
# CONFIG_RT_USING_SAL is not set
452-
# CONFIG_RT_USING_NETDEV is not set
453-
# CONFIG_RT_USING_LWIP is not set
458+
CONFIG_RT_USING_SAL=y
459+
CONFIG_SAL_INTERNET_CHECK=y
460+
CONFIG_SOCKET_TABLE_STEP_LEN=4
461+
462+
#
463+
# Docking with protocol stacks
464+
#
465+
CONFIG_SAL_USING_LWIP=y
466+
# CONFIG_SAL_USING_AT is not set
467+
# CONFIG_SAL_USING_TLS is not set
468+
# end of Docking with protocol stacks
469+
470+
CONFIG_SAL_USING_POSIX=y
471+
CONFIG_RT_USING_NETDEV=y
472+
CONFIG_NETDEV_USING_IFCONFIG=y
473+
CONFIG_NETDEV_USING_PING=y
474+
CONFIG_NETDEV_USING_NETSTAT=y
475+
CONFIG_NETDEV_USING_AUTO_DEFAULT=y
476+
# CONFIG_NETDEV_USING_LINK_STATUS_CALLBACK is not set
477+
# CONFIG_NETDEV_USING_IPV6 is not set
478+
CONFIG_NETDEV_IPV4=1
479+
CONFIG_NETDEV_IPV6=0
480+
CONFIG_RT_USING_LWIP=y
481+
# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
482+
# CONFIG_RT_USING_LWIP141 is not set
483+
CONFIG_RT_USING_LWIP203=y
484+
# CONFIG_RT_USING_LWIP212 is not set
485+
# CONFIG_RT_USING_LWIP_LATEST is not set
486+
CONFIG_RT_USING_LWIP_VER_NUM=0x20003
487+
# CONFIG_RT_USING_LWIP_IPV6 is not set
488+
CONFIG_RT_LWIP_MEM_ALIGNMENT=8
489+
CONFIG_RT_LWIP_IGMP=y
490+
CONFIG_RT_LWIP_ICMP=y
491+
# CONFIG_RT_LWIP_SNMP is not set
492+
CONFIG_RT_LWIP_DNS=y
493+
CONFIG_RT_LWIP_DHCP=y
494+
CONFIG_IP_SOF_BROADCAST=1
495+
CONFIG_IP_SOF_BROADCAST_RECV=1
496+
497+
#
498+
# Static IPv4 Address
499+
#
500+
CONFIG_RT_LWIP_IPADDR="192.168.1.30"
501+
CONFIG_RT_LWIP_GWADDR="192.168.1.1"
502+
CONFIG_RT_LWIP_MSKADDR="255.255.255.0"
503+
# end of Static IPv4 Address
504+
505+
CONFIG_RT_LWIP_UDP=y
506+
CONFIG_RT_LWIP_TCP=y
507+
CONFIG_RT_LWIP_RAW=y
508+
# CONFIG_RT_LWIP_PPP is not set
509+
CONFIG_RT_MEMP_NUM_NETCONN=8
510+
CONFIG_RT_LWIP_PBUF_NUM=16
511+
CONFIG_RT_LWIP_RAW_PCB_NUM=4
512+
CONFIG_RT_LWIP_UDP_PCB_NUM=4
513+
CONFIG_RT_LWIP_TCP_PCB_NUM=4
514+
CONFIG_RT_LWIP_TCP_SEG_NUM=40
515+
CONFIG_RT_LWIP_TCP_SND_BUF=8196
516+
CONFIG_RT_LWIP_TCP_WND=8196
517+
CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10
518+
CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8
519+
CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=8192
520+
# CONFIG_LWIP_NO_RX_THREAD is not set
521+
# CONFIG_LWIP_NO_TX_THREAD is not set
522+
CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12
523+
CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=8192
524+
CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8
525+
# CONFIG_RT_LWIP_REASSEMBLY_FRAG is not set
526+
CONFIG_LWIP_NETIF_STATUS_CALLBACK=1
527+
CONFIG_LWIP_NETIF_LINK_CALLBACK=1
528+
CONFIG_RT_LWIP_NETIF_NAMESIZE=6
529+
CONFIG_SO_REUSE=1
530+
CONFIG_LWIP_SO_RCVTIMEO=1
531+
CONFIG_LWIP_SO_SNDTIMEO=1
532+
CONFIG_LWIP_SO_RCVBUF=1
533+
CONFIG_LWIP_SO_LINGER=0
534+
# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set
535+
CONFIG_LWIP_NETIF_LOOPBACK=0
536+
# CONFIG_RT_LWIP_STATS is not set
537+
# CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
538+
CONFIG_RT_LWIP_USING_PING=y
539+
# CONFIG_LWIP_USING_DHCPD is not set
540+
# CONFIG_RT_LWIP_ENABLE_USER_HOOKS is not set
541+
# CONFIG_RT_LWIP_DEBUG is not set
454542
# CONFIG_RT_USING_AT is not set
455543
# end of Network
456544

@@ -503,6 +591,7 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
503591
# end of Using USB legacy version
504592

505593
# CONFIG_RT_USING_FDT is not set
594+
# CONFIG_RT_USING_LEGACY_VIRTIO is not set
506595
# CONFIG_RT_USING_RUST is not set
507596
# end of RT-Thread Components
508597

bsp/zynqmp-a53-dfzu2eg/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ msh />
145145
| GPIO | 暂不支持 | - |
146146
| SPI | 暂不支持 | - |
147147
| SDIO | 暂不支持 | - |
148-
| ETH | 暂不支持 | - |
148+
| ETH | 支持 | - |
149149

150150
目前BSP仅保证成功运行,驱动后续会慢慢支持!
151151

bsp/zynqmp-a53-dfzu2eg/qemu.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,6 @@ def is_opt(key, inkey):
3939
-kernel rtthread.bin \
4040
{} \
4141
{} \
42+
-nic user,model=cadence_gem \
4243
-serial mon:stdio
4344
""".format(RTT_QEMU_ROOT, mem, q_graphic, q_debug))

bsp/zynqmp-a53-dfzu2eg/rtconfig.h

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,9 @@
206206
#define RT_SERIAL_XILINX_PS
207207
#define RT_USING_CLOCK_TIME
208208
#define RT_CLOCK_TIME_ARM_ARCH
209+
#define RT_USING_ETHERNET
210+
#define RT_ETHERNET_CADENCE
211+
#define RT_USING_PHY_V2
209212
#define RT_USING_NULL
210213
#define RT_USING_ZERO
211214
#define RT_USING_RANDOM
@@ -220,6 +223,7 @@
220223
/* Power Management (PM) Domains device drivers */
221224

222225
/* end of Power Management (PM) Domains device drivers */
226+
#define RT_USING_DMA
223227
#define RT_USING_OFW
224228
#define RT_USING_BUILTIN_FDT
225229
#define RT_BUILTIN_FDT_PATH "zynqmp.dtb"
@@ -229,6 +233,7 @@
229233
#define MAX_HANDLERS 256
230234
#define RT_PIC_ARM_GIC
231235
#define RT_PIC_ARM_GIC_MAX_NR 1
236+
#define RT_USING_PIN
232237
#define RT_USING_CLK
233238

234239
/* SoC (System on Chip) Drivers */
@@ -273,6 +278,66 @@
273278

274279
/* Network */
275280

281+
#define RT_USING_SAL
282+
#define SAL_INTERNET_CHECK
283+
#define SOCKET_TABLE_STEP_LEN 4
284+
285+
/* Docking with protocol stacks */
286+
287+
#define SAL_USING_LWIP
288+
/* end of Docking with protocol stacks */
289+
#define SAL_USING_POSIX
290+
#define RT_USING_NETDEV
291+
#define NETDEV_USING_IFCONFIG
292+
#define NETDEV_USING_PING
293+
#define NETDEV_USING_NETSTAT
294+
#define NETDEV_USING_AUTO_DEFAULT
295+
#define NETDEV_IPV4 1
296+
#define NETDEV_IPV6 0
297+
#define RT_USING_LWIP
298+
#define RT_USING_LWIP203
299+
#define RT_USING_LWIP_VER_NUM 0x20003
300+
#define RT_LWIP_MEM_ALIGNMENT 8
301+
#define RT_LWIP_IGMP
302+
#define RT_LWIP_ICMP
303+
#define RT_LWIP_DNS
304+
#define RT_LWIP_DHCP
305+
#define IP_SOF_BROADCAST 1
306+
#define IP_SOF_BROADCAST_RECV 1
307+
308+
/* Static IPv4 Address */
309+
310+
#define RT_LWIP_IPADDR "192.168.1.30"
311+
#define RT_LWIP_GWADDR "192.168.1.1"
312+
#define RT_LWIP_MSKADDR "255.255.255.0"
313+
/* end of Static IPv4 Address */
314+
#define RT_LWIP_UDP
315+
#define RT_LWIP_TCP
316+
#define RT_LWIP_RAW
317+
#define RT_MEMP_NUM_NETCONN 8
318+
#define RT_LWIP_PBUF_NUM 16
319+
#define RT_LWIP_RAW_PCB_NUM 4
320+
#define RT_LWIP_UDP_PCB_NUM 4
321+
#define RT_LWIP_TCP_PCB_NUM 4
322+
#define RT_LWIP_TCP_SEG_NUM 40
323+
#define RT_LWIP_TCP_SND_BUF 8196
324+
#define RT_LWIP_TCP_WND 8196
325+
#define RT_LWIP_TCPTHREAD_PRIORITY 10
326+
#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8
327+
#define RT_LWIP_TCPTHREAD_STACKSIZE 8192
328+
#define RT_LWIP_ETHTHREAD_PRIORITY 12
329+
#define RT_LWIP_ETHTHREAD_STACKSIZE 8192
330+
#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8
331+
#define LWIP_NETIF_STATUS_CALLBACK 1
332+
#define LWIP_NETIF_LINK_CALLBACK 1
333+
#define RT_LWIP_NETIF_NAMESIZE 6
334+
#define SO_REUSE 1
335+
#define LWIP_SO_RCVTIMEO 1
336+
#define LWIP_SO_SNDTIMEO 1
337+
#define LWIP_SO_RCVBUF 1
338+
#define LWIP_SO_LINGER 0
339+
#define LWIP_NETIF_LOOPBACK 0
340+
#define RT_LWIP_USING_PING
276341
/* end of Network */
277342

278343
/* Memory protection */

bsp/zynqmp-a53-dfzu2eg/zynqmp.dts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@
2323
interrupt-parent = <&gic>;
2424

2525
chosen {
26-
bootargs = "earlycon console=ttyPS0";
26+
bootargs = "earlycon console=ttyPS0 cma=8M coherent_pool=2M";
2727
stdout-path = "serial0:115200n8";
2828
};
2929

3030
aliases {
3131
serial0 = &uart0;
32+
ethernet0 = &gem0;
3233
};
3334

3435
memory {
@@ -107,6 +108,13 @@
107108
clock-frequency = <100000000>;
108109
};
109110

111+
clk125: clk125 {
112+
compatible = "fixed-clock";
113+
clock-output-names = "clk125mhz";
114+
#clock-cells = <0>;
115+
clock-frequency = <125000000>;
116+
};
117+
110118
amba: amba {
111119
compatible = "simple-bus";
112120
#address-cells = <2>;
@@ -129,5 +137,24 @@
129137
clocks = <&clk100 &clk100>;
130138
clock-names = "uart_clk", "pclk";
131139
};
140+
141+
gem0: ethernet@ff0b0000 {
142+
compatible = "cdns,zynqmp-gem", "cdns,gem";
143+
reg = <0x0 0xff0b0000 0x0 0x1000>;
144+
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
145+
<GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
146+
interrupt-names = "macirq", "hs_macirq";
147+
clocks = <&clk100 &clk100 &clk125 &clk125 &clk100>;
148+
clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
149+
#address-cells = <1>;
150+
#size-cells = <0>;
151+
phy-mode = "rgmii-id";
152+
phy-handle = <&gem0_phy>;
153+
local-mac-address = [52 54 00 12 34 56];
154+
155+
gem0_phy: ethernet-phy@17 {
156+
reg = <23>;
157+
};
158+
};
132159
};
133160
};

0 commit comments

Comments
 (0)