Skip to content

Commit ab6fcf0

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 ab6fcf0

File tree

23 files changed

+1529
-963
lines changed

23 files changed

+1529
-963
lines changed

bsp/zynqmp-a53-dfzu2eg/.config

Lines changed: 66 additions & 50 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
#
@@ -194,7 +184,8 @@ CONFIG_RT_USING_INTERRUPT_INFO=y
194184
CONFIG_RT_USING_CONSOLE=y
195185
CONFIG_RT_CONSOLEBUF_SIZE=256
196186
CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
197-
CONFIG_RT_VER_NUM=0x50201
187+
CONFIG_RT_USING_CONSOLE_OUTPUT_CTL=y
188+
CONFIG_RT_VER_NUM=0x50300
198189
CONFIG_RT_USING_STDC_ATOMIC=y
199190
CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32
200191
# end of RT-Thread Kernel
@@ -295,7 +286,7 @@ CONFIG_RT_USING_DFS_ROMFS=y
295286
#
296287
# Device Drivers
297288
#
298-
# CONFIG_RT_USING_DM is not set
289+
CONFIG_RT_USING_DM=y
299290
CONFIG_RT_USING_DEV_BUS=y
300291
CONFIG_RT_USING_DEVICE_IPC=y
301292
CONFIG_RT_UNAMED_PIPE_NUMBER=64
@@ -308,8 +299,13 @@ CONFIG_RT_USING_SERIAL_V1=y
308299
CONFIG_RT_SERIAL_USING_DMA=y
309300
CONFIG_RT_SERIAL_RB_BUFSZ=256
310301
# CONFIG_RT_USING_SERIAL_BYPASS is not set
302+
# CONFIG_RT_SERIAL_EARLY_HVC is not set
303+
# CONFIG_RT_SERIAL_PL011 is not set
304+
# CONFIG_RT_SERIAL_8250 is not set
305+
CONFIG_RT_SERIAL_XILINX_PS=y
311306
# CONFIG_RT_USING_CAN is not set
312-
# CONFIG_RT_USING_CPUTIME is not set
307+
CONFIG_RT_USING_CLOCK_TIME=y
308+
CONFIG_RT_CLOCK_TIME_ARM_ARCH=y
313309
# CONFIG_RT_USING_I2C is not set
314310
# CONFIG_RT_USING_PHY is not set
315311
# CONFIG_RT_USING_PHY_V2 is not set
@@ -323,38 +319,68 @@ CONFIG_RT_USING_RANDOM=y
323319
# CONFIG_RT_USING_INPUT_CAPTURE is not set
324320
# CONFIG_RT_USING_MTD_NOR is not set
325321
# 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
322+
# CONFIG_RT_USING_PM is not set
332323
CONFIG_RT_USING_RTC=y
333-
# CONFIG_RT_USING_ALARM is not set
334-
CONFIG_RT_USING_SOFT_RTC=y
324+
CONFIG_RT_USING_ALARM=y
325+
CONFIG_RT_ALARM_STACK_SIZE=8192
326+
CONFIG_RT_ALARM_TIMESLICE=5
327+
CONFIG_RT_ALARM_PRIORITY=10
328+
# CONFIG_RT_ALARM_USING_LOCAL_TIME is not set
329+
# CONFIG_RT_USING_SOFT_RTC is not set
330+
# CONFIG_RT_RTC_GOLDFISH is not set
331+
# CONFIG_RT_RTC_PL031 is not set
332+
CONFIG_RT_RTC_ZYNQMP=y
335333
# CONFIG_RT_USING_SDIO is not set
336334
# CONFIG_RT_USING_SPI is not set
337335
# CONFIG_RT_USING_WDT is not set
338336
# CONFIG_RT_USING_AUDIO is not set
339337
# CONFIG_RT_USING_SENSOR is not set
340338
# CONFIG_RT_USING_TOUCH is not set
341-
# CONFIG_RT_USING_LCD is not set
339+
# CONFIG_RT_USING_GRAPHIC is not set
342340
# CONFIG_RT_USING_HWCRYPTO is not set
343341
# CONFIG_RT_USING_WIFI is not set
342+
# CONFIG_RT_USING_LED is not set
343+
# CONFIG_RT_USING_INPUT is not set
344+
# CONFIG_RT_USING_MBOX is not set
345+
# CONFIG_RT_USING_HWSPINLOCK is not set
346+
# CONFIG_RT_USING_PHYE is not set
344347
# 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
348+
# CONFIG_RT_USING_SCSI is not set
349+
# CONFIG_RT_USING_FIRMWARE is not set
350+
# CONFIG_RT_USING_HWCACHE is not set
351+
# CONFIG_RT_USING_REGULATOR is not set
352+
CONFIG_RT_USING_RESET=y
353+
# CONFIG_RT_RESET_SIMPLE is not set
354+
355+
#
356+
# Power Management (PM) Domains device drivers
357+
#
358+
# end of Power Management (PM) Domains device drivers
359+
360+
# CONFIG_RT_USING_POWER_RESET is not set
361+
# CONFIG_RT_USING_POWER_SUPPLY is not set
362+
# CONFIG_RT_USING_THERMAL is not set
363+
# CONFIG_RT_USING_DMA is not set
364+
# CONFIG_RT_USING_MFD is not set
365+
CONFIG_RT_USING_OFW=y
366+
CONFIG_RT_USING_BUILTIN_FDT=y
367+
CONFIG_RT_BUILTIN_FDT_PATH="zynqmp.dtb"
368+
CONFIG_RT_FDT_EARLYCON_MSG_SIZE=128
369+
CONFIG_RT_USING_OFW_BUS_RANGES_NUMBER=8
370+
# CONFIG_RT_USING_PCI is not set
371+
CONFIG_RT_USING_PIC=y
372+
# CONFIG_RT_USING_PIC_STATISTICS is not set
373+
CONFIG_MAX_HANDLERS=256
374+
CONFIG_RT_PIC_ARM_GIC=y
375+
# CONFIG_RT_PIC_ARM_GIC_V3 is not set
376+
CONFIG_RT_PIC_ARM_GIC_MAX_NR=1
377+
# CONFIG_RT_USING_PIN is not set
378+
CONFIG_RT_USING_CLK=y
357379
# CONFIG_RT_USING_CHERRYUSB is not set
380+
381+
#
382+
# SoC (System on Chip) Drivers
383+
#
358384
# end of Device Drivers
359385

360386
#
@@ -445,14 +471,14 @@ CONFIG_RT_USING_ADT_REF=y
445471
# CONFIG_RT_USING_RT_LINK is not set
446472
# end of Utilities
447473

448-
# CONFIG_RT_USING_VBUS is not set
449-
450474
#
451475
# Memory management
452476
#
477+
# CONFIG_RT_PAGE_MPR_SIZE_DYNAMIC is not set
453478
CONFIG_RT_PAGE_AFFINITY_BLOCK_SIZE=0x1000
454479
CONFIG_RT_PAGE_MAX_ORDER=11
455-
# CONFIG_RT_USING_MEMBLOCK is not set
480+
CONFIG_RT_USING_MEMBLOCK=y
481+
CONFIG_RT_INIT_MEMORY_REGIONS=128
456482

457483
#
458484
# Debugging
@@ -471,6 +497,7 @@ CONFIG_RT_PAGE_MAX_ORDER=11
471497
# end of Using USB legacy version
472498

473499
# CONFIG_RT_USING_FDT is not set
500+
# CONFIG_RT_USING_RUST is not set
474501
# end of RT-Thread Components
475502

476503
#
@@ -1506,14 +1533,3 @@ CONFIG_RT_PAGE_MAX_ORDER=11
15061533
# end of RT-Thread online packages
15071534

15081535
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

bsp/zynqmp-a53-dfzu2eg/drivers/board.c

Lines changed: 3 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -6,72 +6,12 @@
66
* Change Logs:
77
* Date Author Notes
88
* 2024-04-11 liYony the first version
9+
* 2024-07-07 GuEe-GUI init common
910
*/
1011

11-
#include <mmu.h>
12-
#include <board.h>
13-
#include <mm_aspace.h>
14-
#include <mm_page.h>
15-
#include <drv_uart.h>
16-
#include <gtimer.h>
17-
18-
extern size_t MMUTable[];
19-
20-
#ifdef RT_USING_SMART
21-
struct mem_desc platform_mem_desc[] = {
22-
{KERNEL_VADDR_START, KERNEL_VADDR_START + 0x7FF00000 - 1, (rt_size_t)ARCH_MAP_FAILED, NORMAL_MEM}
23-
};
24-
#else
25-
struct mem_desc platform_mem_desc[] =
26-
{
27-
{0x00200000, 0x7FF00000 - 1, 0x00200000, NORMAL_MEM},
28-
{GIC400_DISTRIBUTOR_PPTR, GIC400_DISTRIBUTOR_PPTR + GIC400_SIZE - 1, GIC400_DISTRIBUTOR_PPTR, DEVICE_MEM},
29-
{GIC400_CONTROLLER_PPTR, GIC400_CONTROLLER_PPTR + GIC400_SIZE - 1, GIC400_CONTROLLER_PPTR, DEVICE_MEM},
30-
};
31-
#endif
32-
33-
const rt_uint32_t platform_mem_desc_size = sizeof(platform_mem_desc) / sizeof(platform_mem_desc[0]);
34-
35-
void idle_wfi(void)
36-
{
37-
asm volatile("wfi");
38-
}
12+
#include <setup.h>
3913

4014
void rt_hw_board_init(void)
4115
{
42-
#ifdef RT_USING_SMART
43-
rt_hw_mmu_map_init(&rt_kernel_space, (void *)0xfffffffff0000000, 0x10000000, MMUTable, PV_OFFSET);
44-
#else
45-
rt_hw_mmu_map_init(&rt_kernel_space, (void *)0xffffd0000000, 0x10000000, MMUTable, 0);
46-
#endif
47-
rt_region_t init_page_region;
48-
init_page_region.start = PAGE_START;
49-
init_page_region.end = PAGE_END;
50-
rt_page_init(init_page_region);
51-
52-
rt_hw_mmu_setup(&rt_kernel_space, platform_mem_desc, platform_mem_desc_size);
53-
54-
#ifdef RT_USING_HEAP
55-
/* initialize system heap */
56-
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
57-
#endif
58-
/* initialize hardware interrupt */
59-
rt_hw_interrupt_init();
60-
61-
/* initialize uart */
62-
rt_hw_uart_init();
63-
64-
/* initialize timer for os tick */
65-
rt_hw_gtimer_init();
66-
67-
rt_thread_idle_sethook(idle_wfi);
68-
#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
69-
/* set console device */
70-
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
71-
#endif
72-
rt_kprintf("heap: [0x%08x - 0x%08x]\n", HEAP_BEGIN, HEAP_END);
73-
74-
#ifdef RT_USING_COMPONENTS_INIT
75-
rt_components_board_init();
76-
#endif
16+
rt_hw_common_setup();
7717
}

bsp/zynqmp-a53-dfzu2eg/drivers/board.h

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,6 @@
1111
#ifndef __BOARD_H__
1212
#define __BOARD_H__
1313

14-
#include <zynqmp.h>
15-
16-
extern unsigned char __bss_end;
17-
18-
#define HEAP_BEGIN ((void*)&__bss_end)
19-
20-
#ifdef RT_USING_SMART
21-
#define HEAP_END ((size_t)KERNEL_VADDR_START + 64 * 1024 * 1024)
22-
#define PAGE_START HEAP_END
23-
#define PAGE_END ((size_t)KERNEL_VADDR_START + 128 * 1024 * 1024)
24-
#else
25-
#define KERNEL_VADDR_START 0x0
26-
27-
#define HEAP_END (KERNEL_VADDR_START + 64 * 1024 * 1024)
28-
#define PAGE_START HEAP_END
29-
#define PAGE_END ((size_t)PAGE_START + 64 * 1024 * 1024)
30-
#endif
31-
3214
void rt_hw_board_init(void);
3315

34-
int rt_hw_uart_init(void);
35-
3616
#endif /* __BOARD_H__ */

0 commit comments

Comments
 (0)