Skip to content

Commit f1e2dbc

Browse files
committed
[bsp][zynqmp-a53-dfzu2eg] enable full dm
This is a builtin fdt example BSP Signed-off-by: GuEe-GUI <2991707448@qq.com>
1 parent dc1c5b4 commit f1e2dbc

File tree

27 files changed

+1568
-975
lines changed

27 files changed

+1568
-975
lines changed

.github/ALL_BSP_COMPILE.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,8 @@
390390
"qemu-virt64-aarch64",
391391
"raspberry-pi/raspi3-64",
392392
"raspberry-pi/raspi4-64",
393-
"nxp/imx/imx91"
393+
"nxp/imx/imx91",
394+
"zynqmp-a53-dfzu2eg"
394395
]
395396
},
396397
{

.github/workflows/utest_auto_run.yml

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ jobs:
5555
- { UTEST: "AARCH64-rtsmart", RTT_BSP: "bsp/qemu-virt64-aarch64", QEMU_ARCH: "aarch64", QEMU_MACHINE: "virt", SD_FILE: "sd.bin", KERNEL: "rtsmart", "SMP_RUN":"" }
5656
- { UTEST: "AARCH64-smp", RTT_BSP: "bsp/qemu-virt64-aarch64", QEMU_ARCH: "aarch64", QEMU_MACHINE: "virt", SD_FILE: "sd.bin", KERNEL: "standard", "SMP_RUN":"smp" }
5757

58+
- { UTEST: "AARCH64", RTT_BSP: "bsp/zynqmp-a53-dfzu2eg", QEMU_ARCH: "aarch64", QEMU_MACHINE: "xlnx-zcu102", SD_FILE: "None", KERNEL: "standard", "SMP_RUN":"" }
59+
- { UTEST: "AARCH64-rtsmart", RTT_BSP: "bsp/zynqmp-a53-dfzu2eg", QEMU_ARCH: "aarch64", QEMU_MACHINE: "xlnx-zcu102", SD_FILE: "None", KERNEL: "rtsmart", "SMP_RUN":"" }
60+
- { UTEST: "AARCH64-smp", RTT_BSP: "bsp/zynqmp-a53-dfzu2eg", QEMU_ARCH: "aarch64", QEMU_MACHINE: "xlnx-zcu102", SD_FILE: "None", KERNEL: "standard", "SMP_RUN":"smp" }
61+
5862
config_file:
5963
- "default.cfg"
6064

@@ -97,7 +101,7 @@ jobs:
97101
shell: bash
98102
run: |
99103
sudo apt-get update
100-
sudo apt-get -yqq install scons qemu-system git
104+
sudo apt-get -yqq install scons qemu-system git device-tree-compiler
101105
pip3 install kconfiglib
102106
103107
- name: Install ToolChains
@@ -223,10 +227,23 @@ jobs:
223227
fi
224228
225229
if [[ "${{ matrix.platform.QEMU_ARCH }}" == "aarch64" ]]; then
226-
qemu-system-$TEST_QEMU_ARCH -M virt,gic-version=2 -cpu cortex-a53 -smp 4 -kernel $TEST_BSP_ROOT/rtthread.bin -nographic \
227-
-drive if=none,file=$TEST_BSP_ROOT/sd.bin,format=raw,id=blk0 -device virtio-blk-device,drive=blk0,bus=virtio-mmio-bus.0 \
228-
-netdev user,id=net0 -device virtio-net-device,netdev=net0,bus=virtio-mmio-bus.1 \
229-
> qemu_output_$TEST_QEMU_ARCH.log 2>&1 &
230+
if [[ "${{ matrix.platform.QEMU_MACHINE }}" == "virt" ]]; then
231+
qemu-system-$TEST_QEMU_ARCH -M virt,gic-version=2 -cpu cortex-a53 -smp 4 -kernel $TEST_BSP_ROOT/rtthread.bin -nographic \
232+
-drive if=none,file=$TEST_BSP_ROOT/sd.bin,format=raw,id=blk0 -device virtio-blk-device,drive=blk0,bus=virtio-mmio-bus.0 \
233+
-netdev user,id=net0 -device virtio-net-device,netdev=net0,bus=virtio-mmio-bus.1 \
234+
> qemu_output_$TEST_QEMU_ARCH.log 2>&1 &
235+
elif [[ "${{ matrix.platform.QEMU_MACHINE }}" == "xlnx-zcu102" ]]; then
236+
heap=$(grep -E '^#define[[:space:]]+ARCH_HEAP_SIZE' $TEST_BSP_ROOT/rtconfig.h | awk '{print $3}')
237+
page=$(grep -E '^#define[[:space:]]+ARCH_INIT_PAGE_SIZE' $TEST_BSP_ROOT/rtconfig.h | awk '{print $3}')
238+
heap=$(echo "$heap" | tr -d '()')
239+
page=$(echo "$page" | tr -d '()')
240+
heap_val=$((heap))
241+
page_val=$((page))
242+
mem=$((heap_val + page_val))
243+
mem=$((128 + mem / (1024 * 1024)))
244+
qemu-system-$TEST_QEMU_ARCH -M xlnx-zcu102 -m $mem -kernel $TEST_BSP_ROOT/rtthread.bin -nographic \
245+
> qemu_output_$TEST_QEMU_ARCH.log 2>&1 &
246+
fi
230247
elif [[ "${{ matrix.platform.UTEST }}" == "XUANTIE-rtsmart" ]]; then
231248
sudo apt-get install -y dos2unix libcapstone-dev libbrlapi-dev
232249
wget -q https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1736318325160/Xuantie-qemu-x86_64-Ubuntu-20.04-V5.0.5-B20250108-0335.tar.gz

bsp/zynqmp-a53-dfzu2eg/.config

Lines changed: 73 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,8 @@
1111
# rt_vsnprintf options
1212
#
1313
# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set
14-
CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG=y
15-
CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD=y
16-
CONFIG_RT_KLIBC_USING_VSNPRINTF_DECIMAL_SPECIFIERS=y
17-
CONFIG_RT_KLIBC_USING_VSNPRINTF_EXPONENTIAL_SPECIFIERS=y
18-
CONFIG_RT_KLIBC_USING_VSNPRINTF_WRITEBACK_SPECIFIER=y
19-
CONFIG_RT_KLIBC_USING_VSNPRINTF_CHECK_NUL_IN_FORMAT_SPECIFIER=y
20-
# CONFIG_RT_KLIBC_USING_VSNPRINTF_MSVC_STYLE_INTEGER_SPECIFIERS is not set
21-
CONFIG_RT_KLIBC_USING_VSNPRINTF_INTEGER_BUFFER_SIZE=32
22-
CONFIG_RT_KLIBC_USING_VSNPRINTF_DECIMAL_BUFFER_SIZE=32
23-
CONFIG_RT_KLIBC_USING_VSNPRINTF_FLOAT_PRECISION=6
24-
CONFIG_RT_KLIBC_USING_VSNPRINTF_MAX_INTEGRAL_DIGITS_FOR_DECIMAL=9
25-
CONFIG_RT_KLIBC_USING_VSNPRINTF_LOG10_TAYLOR_TERMS=4
14+
# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set
15+
# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set
2616
# end of rt_vsnprintf options
2717

2818
#
@@ -121,8 +111,8 @@ CONFIG_RT_NAME_MAX=16
121111
# CONFIG_RT_USING_NANO is not set
122112
# CONFIG_RT_USING_SMART is not set
123113
# CONFIG_RT_USING_AMP is not set
124-
# CONFIG_RT_USING_SMP is not set
125-
CONFIG_RT_CPUS_NR=1
114+
CONFIG_RT_USING_SMP=y
115+
CONFIG_RT_CPUS_NR=4
126116
CONFIG_RT_ALIGN_SIZE=8
127117
# CONFIG_RT_THREAD_PRIORITY_8 is not set
128118
CONFIG_RT_THREAD_PRIORITY_32=y
@@ -136,11 +126,12 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
136126
CONFIG_RT_USING_IDLE_HOOK=y
137127
CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
138128
CONFIG_IDLE_THREAD_STACK_SIZE=8192
129+
CONFIG_SYSTEM_THREAD_STACK_SIZE=8192
139130
CONFIG_RT_USING_TIMER_SOFT=y
140131
CONFIG_RT_TIMER_THREAD_PRIO=4
141132
CONFIG_RT_TIMER_THREAD_STACK_SIZE=8192
142133
# CONFIG_RT_USING_TIMER_ALL_SOFT is not set
143-
# CONFIG_RT_USING_CPU_USAGE_TRACER is not set
134+
CONFIG_RT_USING_CPU_USAGE_TRACER=y
144135

145136
#
146137
# kservice options
@@ -153,6 +144,8 @@ CONFIG_RT_DEBUGING_ASSERT=y
153144
CONFIG_RT_DEBUGING_COLOR=y
154145
CONFIG_RT_DEBUGING_CONTEXT=y
155146
# CONFIG_RT_DEBUGING_AUTO_INIT is not set
147+
# CONFIG_RT_DEBUGING_SPINLOCK is not set
148+
CONFIG_RT_DEBUGING_CRITICAL=y
156149
# CONFIG_RT_USING_CI_ACTION is not set
157150

158151
#
@@ -194,7 +187,8 @@ CONFIG_RT_USING_INTERRUPT_INFO=y
194187
CONFIG_RT_USING_CONSOLE=y
195188
CONFIG_RT_CONSOLEBUF_SIZE=256
196189
CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
197-
CONFIG_RT_VER_NUM=0x50201
190+
CONFIG_RT_USING_CONSOLE_OUTPUT_CTL=y
191+
CONFIG_RT_VER_NUM=0x50300
198192
CONFIG_RT_USING_STDC_ATOMIC=y
199193
CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32
200194
# end of RT-Thread Kernel
@@ -295,7 +289,7 @@ CONFIG_RT_USING_DFS_ROMFS=y
295289
#
296290
# Device Drivers
297291
#
298-
# CONFIG_RT_USING_DM is not set
292+
CONFIG_RT_USING_DM=y
299293
CONFIG_RT_USING_DEV_BUS=y
300294
CONFIG_RT_USING_DEVICE_IPC=y
301295
CONFIG_RT_UNAMED_PIPE_NUMBER=64
@@ -307,9 +301,14 @@ CONFIG_RT_USING_SERIAL_V1=y
307301
# CONFIG_RT_USING_SERIAL_V2 is not set
308302
CONFIG_RT_SERIAL_USING_DMA=y
309303
CONFIG_RT_SERIAL_RB_BUFSZ=256
310-
# CONFIG_RT_USING_SERIAL_BYPASS is not set
304+
CONFIG_RT_USING_SERIAL_BYPASS=y
305+
# CONFIG_RT_SERIAL_EARLY_HVC is not set
306+
# CONFIG_RT_SERIAL_PL011 is not set
307+
# CONFIG_RT_SERIAL_8250 is not set
308+
CONFIG_RT_SERIAL_XILINX_PS=y
311309
# CONFIG_RT_USING_CAN is not set
312-
# CONFIG_RT_USING_CPUTIME is not set
310+
CONFIG_RT_USING_CLOCK_TIME=y
311+
CONFIG_RT_CLOCK_TIME_ARM_ARCH=y
313312
# CONFIG_RT_USING_I2C is not set
314313
# CONFIG_RT_USING_PHY is not set
315314
# CONFIG_RT_USING_PHY_V2 is not set
@@ -323,38 +322,68 @@ CONFIG_RT_USING_RANDOM=y
323322
# CONFIG_RT_USING_INPUT_CAPTURE is not set
324323
# CONFIG_RT_USING_MTD_NOR is not set
325324
# CONFIG_RT_USING_MTD_NAND is not set
326-
CONFIG_RT_USING_PM=y
327-
CONFIG_PM_TICKLESS_THRESHOLD_TIME=2
328-
# CONFIG_PM_USING_CUSTOM_CONFIG is not set
329-
# CONFIG_PM_ENABLE_DEBUG is not set
330-
# CONFIG_PM_ENABLE_SUSPEND_SLEEP_MODE is not set
331-
# CONFIG_PM_ENABLE_THRESHOLD_SLEEP_MODE is not set
325+
# CONFIG_RT_USING_PM is not set
332326
CONFIG_RT_USING_RTC=y
333-
# CONFIG_RT_USING_ALARM is not set
334-
CONFIG_RT_USING_SOFT_RTC=y
327+
CONFIG_RT_USING_ALARM=y
328+
CONFIG_RT_ALARM_STACK_SIZE=8192
329+
CONFIG_RT_ALARM_TIMESLICE=5
330+
CONFIG_RT_ALARM_PRIORITY=10
331+
# CONFIG_RT_ALARM_USING_LOCAL_TIME is not set
332+
# CONFIG_RT_USING_SOFT_RTC is not set
333+
# CONFIG_RT_RTC_GOLDFISH is not set
334+
# CONFIG_RT_RTC_PL031 is not set
335+
CONFIG_RT_RTC_ZYNQMP=y
335336
# CONFIG_RT_USING_SDIO is not set
336337
# CONFIG_RT_USING_SPI is not set
337338
# CONFIG_RT_USING_WDT is not set
338339
# CONFIG_RT_USING_AUDIO is not set
339340
# CONFIG_RT_USING_SENSOR is not set
340341
# CONFIG_RT_USING_TOUCH is not set
341-
# CONFIG_RT_USING_LCD is not set
342+
# CONFIG_RT_USING_GRAPHIC is not set
342343
# CONFIG_RT_USING_HWCRYPTO is not set
343344
# CONFIG_RT_USING_WIFI is not set
345+
# CONFIG_RT_USING_LED is not set
346+
# CONFIG_RT_USING_INPUT is not set
347+
# CONFIG_RT_USING_MBOX is not set
348+
# CONFIG_RT_USING_HWSPINLOCK is not set
349+
# CONFIG_RT_USING_PHYE is not set
344350
# CONFIG_RT_USING_BLK is not set
345-
CONFIG_RT_USING_VIRTIO=y
346-
CONFIG_RT_USING_VIRTIO10=y
347-
CONFIG_RT_USING_VIRTIO_MMIO_ALIGN=y
348-
CONFIG_RT_USING_VIRTIO_BLK=y
349-
# CONFIG_RT_USING_VIRTIO_NET is not set
350-
CONFIG_RT_USING_VIRTIO_CONSOLE=y
351-
CONFIG_RT_USING_VIRTIO_CONSOLE_PORT_MAX_NR=4
352-
CONFIG_RT_USING_VIRTIO_GPU=y
353-
CONFIG_RT_USING_VIRTIO_INPUT=y
354-
CONFIG_RT_USING_PIN=y
355-
CONFIG_RT_USING_KTIME=y
356-
# CONFIG_RT_USING_HWTIMER is not set
351+
# CONFIG_RT_USING_SCSI is not set
352+
# CONFIG_RT_USING_FIRMWARE is not set
353+
# CONFIG_RT_USING_HWCACHE is not set
354+
# CONFIG_RT_USING_REGULATOR is not set
355+
CONFIG_RT_USING_RESET=y
356+
# CONFIG_RT_RESET_SIMPLE is not set
357+
358+
#
359+
# Power Management (PM) Domains device drivers
360+
#
361+
# end of Power Management (PM) Domains device drivers
362+
363+
# CONFIG_RT_USING_POWER_RESET is not set
364+
# CONFIG_RT_USING_POWER_SUPPLY is not set
365+
# CONFIG_RT_USING_THERMAL is not set
366+
# CONFIG_RT_USING_DMA is not set
367+
# CONFIG_RT_USING_MFD is not set
368+
CONFIG_RT_USING_OFW=y
369+
CONFIG_RT_USING_BUILTIN_FDT=y
370+
CONFIG_RT_BUILTIN_FDT_PATH="zynqmp.dtb"
371+
CONFIG_RT_FDT_EARLYCON_MSG_SIZE=128
372+
CONFIG_RT_USING_OFW_BUS_RANGES_NUMBER=8
373+
# CONFIG_RT_USING_PCI is not set
374+
CONFIG_RT_USING_PIC=y
375+
# CONFIG_RT_USING_PIC_STATISTICS is not set
376+
CONFIG_MAX_HANDLERS=256
377+
CONFIG_RT_PIC_ARM_GIC=y
378+
# CONFIG_RT_PIC_ARM_GIC_V3 is not set
379+
CONFIG_RT_PIC_ARM_GIC_MAX_NR=1
380+
# CONFIG_RT_USING_PIN is not set
381+
CONFIG_RT_USING_CLK=y
357382
# CONFIG_RT_USING_CHERRYUSB is not set
383+
384+
#
385+
# SoC (System on Chip) Drivers
386+
#
358387
# end of Device Drivers
359388

360389
#
@@ -445,14 +474,14 @@ CONFIG_RT_USING_ADT_REF=y
445474
# CONFIG_RT_USING_RT_LINK is not set
446475
# end of Utilities
447476

448-
# CONFIG_RT_USING_VBUS is not set
449-
450477
#
451478
# Memory management
452479
#
480+
# CONFIG_RT_PAGE_MPR_SIZE_DYNAMIC is not set
453481
CONFIG_RT_PAGE_AFFINITY_BLOCK_SIZE=0x1000
454482
CONFIG_RT_PAGE_MAX_ORDER=11
455-
# CONFIG_RT_USING_MEMBLOCK is not set
483+
CONFIG_RT_USING_MEMBLOCK=y
484+
CONFIG_RT_INIT_MEMORY_REGIONS=128
456485

457486
#
458487
# Debugging
@@ -471,6 +500,7 @@ CONFIG_RT_PAGE_MAX_ORDER=11
471500
# end of Using USB legacy version
472501

473502
# CONFIG_RT_USING_FDT is not set
503+
# CONFIG_RT_USING_RUST is not set
474504
# end of RT-Thread Components
475505

476506
#
@@ -1506,14 +1536,3 @@ CONFIG_RT_PAGE_MAX_ORDER=11
15061536
# end of RT-Thread online packages
15071537

15081538
CONFIG_SOC_ZYNQMP_AARCH64=y
1509-
1510-
#
1511-
# Hardware Drivers Config
1512-
#
1513-
CONFIG_BSP_SUPPORT_FPU=y
1514-
CONFIG_BSP_USING_UART=y
1515-
CONFIG_BSP_USING_UART0=y
1516-
CONFIG_BSP_USING_GIC=y
1517-
CONFIG_BSP_USING_GICV2=y
1518-
# CONFIG_BSP_USING_GICV3 is not set
1519-
# end of Hardware Drivers Config

bsp/zynqmp-a53-dfzu2eg/Kconfig

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,18 @@ RTT_DIR := ../../
66

77
PKGS_DIR := packages
88

9+
SOC_DM_RTC_DIR := $(BSP_DIR)/drivers/rtc
10+
SOC_DM_SERIAL_DIR := $(BSP_DIR)/drivers/serial
11+
912
source "$(RTT_DIR)/Kconfig"
1013
osource "$PKGS_DIR/Kconfig"
1114

1215
config SOC_ZYNQMP_AARCH64
1316
bool
1417
select ARCH_ARMV8
15-
select ARCH_CPU_64BIT
16-
select ARCH_ARM_MMU
17-
select RT_USING_CACHE
1818
select RT_USING_COMPONENTS_INIT
1919
select RT_USING_USER_MAIN
20-
select RT_USING_GIC
21-
select BSP_USING_GIC
22-
select ARCH_MM_MMU
20+
select ARCH_CPU_64BIT
21+
select RT_USING_CACHE
22+
select RT_USING_STDC_ATOMIC
2323
default y
24-
25-
source "$(BSP_DIR)/drivers/Kconfig"

bsp/zynqmp-a53-dfzu2eg/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ setenv gatewayip 192.168.1.1
9595
setenv netmask 255.255.255.0
9696
setenv serverip 192.168.1.3
9797
tftpboot 0x00200000 rtthread.bin
98-
go 0x00200000
98+
booti 0x00200000 - ${fdt_addr}
9999
```
100100

101101
其中`192.168.1.3`为TFTP服务器的PC机的IP地址,大家可以根据自己的实际情况进行修改。
@@ -141,6 +141,7 @@ msh />
141141
| 驱动 | 支持情况 | 备注 |
142142
| ------ | ---- | :------: |
143143
| UART | 支持 | UART0 |
144+
| RTC | 支持 | - |
144145
| GPIO | 暂不支持 | - |
145146
| SPI | 暂不支持 | - |
146147
| SDIO | 暂不支持 | - |

bsp/zynqmp-a53-dfzu2eg/SConstruct

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ else:
1111

1212
sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
1313
from building import *
14+
import dtc
15+
16+
dtc.dts_to_dtb(RTT_ROOT, ["zynqmp.dts"], include_paths = [os.getcwd()], ignore_warning = ["simple_bus_reg", "unit_address_vs_reg", "clocks_is_cell", "gpios_property"])
1417

1518
TARGET = 'rtthread.' + rtconfig.TARGET_EXT
1619
TRACE_CONFIG = ""

bsp/zynqmp-a53-dfzu2eg/drivers/Kconfig

Lines changed: 0 additions & 32 deletions
This file was deleted.

bsp/zynqmp-a53-dfzu2eg/drivers/SConscript

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@ from building import *
44

55
cwd = GetCurrentDir()
66
src = Glob('*.c')
7-
CPPPATH = [cwd , cwd + '/zynqmp']
7+
CPPPATH = [cwd, cwd + "/../../../components/drivers/rtc"]
8+
9+
if GetDepend(['RT_RTC_ZYNQMP']):
10+
src += ['rtc/rtc-zynqmp.c']
11+
12+
if GetDepend(['RT_SERIAL_XILINX_PS']):
13+
src += ['serial/xilinx_uartps.c']
814

915
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
1016

0 commit comments

Comments
 (0)