bsp: k230: add pdma driver support

This commit introduces the PDMA (Peripheral DMA) driver for K230 SoC,
providing essential DMA capabilities for peripheral data transfers.

Key features implemented:
1. PDMA channel request/release management
2. Channel start/stop control
3. Interrupt callback registration
4. Data transfer between device ports and DDR memory

The driver includes:
- Core driver implementation (drv_pdma.c/h)
- Build system support (SConscript)
- Basic test cases (test_pdma.c)

Tested with:
- PDMA channel request/release
- DDR to UART TX FIFO transfers
- UART RX FIFO to DDR transfers

Signed-off-by: eatvector <2302147681@qq.com>
This commit is contained in:
eatvector
2025-08-18 14:11:44 +08:00
committed by R b b666
parent c5f5fb4851
commit 7db99433e5
8 changed files with 1606 additions and 1 deletions
+23
View File
@@ -228,6 +228,7 @@ CONFIG_FINSH_THREAD_PRIORITY=20
CONFIG_FINSH_THREAD_STACK_SIZE=8192
CONFIG_FINSH_USING_HISTORY=y
CONFIG_FINSH_HISTORY_LINES=5
# CONFIG_FINSH_USING_WORD_OPERATION is not set
CONFIG_FINSH_USING_SYMTAB=y
CONFIG_FINSH_CMD_SIZE=80
CONFIG_MSH_USING_BUILT_IN_COMMANDS=y
@@ -710,6 +711,7 @@ CONFIG_RT_USING_VDSO=y
# CONFIG_PKG_USING_QMODBUS is not set
# CONFIG_PKG_USING_PNET is not set
# CONFIG_PKG_USING_OPENER is not set
# CONFIG_PKG_USING_FREEMQTT is not set
# end of IoT - internet of things
#
@@ -937,6 +939,7 @@ CONFIG_RT_USING_VDSO=y
# CONFIG_PKG_USING_RMP is not set
# CONFIG_PKG_USING_R_RHEALSTONE is not set
# CONFIG_PKG_USING_HEARTBEAT is not set
# CONFIG_PKG_USING_MICRO_ROS_RTTHREAD_PACKAGE is not set
# end of system packages
#
@@ -1061,6 +1064,8 @@ CONFIG_RT_USING_VDSO=y
#
# HC32 DDL Drivers
#
# CONFIG_PKG_USING_HC32F4_CMSIS_DRIVER is not set
# CONFIG_PKG_USING_HC32F4_SERIES_DRIVER is not set
# end of HC32 DDL Drivers
#
@@ -1074,6 +1079,21 @@ CONFIG_RT_USING_VDSO=y
# CONFIG_PKG_USING_NXP_IMX6UL_DRIVER is not set
# CONFIG_PKG_USING_NXP_IMXRT_DRIVER is not set
# end of NXP HAL & SDK Drivers
#
# NUVOTON Drivers
#
# CONFIG_PKG_USING_NUVOTON_CMSIS_DRIVER is not set
# CONFIG_PKG_USING_NUVOTON_SERIES_DRIVER is not set
# CONFIG_PKG_USING_NUVOTON_ARM926_LIB is not set
# end of NUVOTON Drivers
#
# GD32 Drivers
#
# CONFIG_PKG_USING_GD32_ARM_CMSIS_DRIVER is not set
# CONFIG_PKG_USING_GD32_ARM_SERIES_DRIVER is not set
# end of GD32 Drivers
# end of HAL & SDK Drivers
#
@@ -1149,6 +1169,7 @@ CONFIG_RT_USING_VDSO=y
# CONFIG_PKG_USING_STHS34PF80 is not set
# CONFIG_PKG_USING_P3T1755 is not set
# CONFIG_PKG_USING_QMI8658 is not set
# CONFIG_PKG_USING_ICM20948 is not set
# end of sensors drivers
#
@@ -1243,6 +1264,7 @@ CONFIG_RT_USING_VDSO=y
# CONFIG_PKG_USING_SERVO is not set
# CONFIG_PKG_USING_SEAN_WS2812B is not set
# CONFIG_PKG_USING_IC74HC165 is not set
# CONFIG_PKG_USING_IST8310 is not set
# CONFIG_PKG_USING_SPI_TOOLS is not set
# end of peripheral libraries and drivers
@@ -1601,6 +1623,7 @@ CONFIG_BSP_USING_SDIO0=y
CONFIG_BSP_SD_MNT_DEVNAME="sd0p1"
# CONFIG_BSP_USING_TIMERS is not set
# CONFIG_BSP_USING_WDT is not set
# CONFIG_BSP_USING_PDMA is not set
# CONFIG_BSP_UTEST_DRIVERS is not set
# end of Drivers Configuration
+39
View File
@@ -107,6 +107,45 @@ menu "Drivers Configuration"
endif
menuconfig BSP_USING_PDMA
bool "Enable PDMA"
select RT_USING_PDMA
default n
if BSP_USING_PDMA
config BSP_USING_PDMA_CHANNEL0
bool "Enable PDMA Channel 0"
default n
config BSP_USING_PDMA_CHANNEL1
bool "Enable PDMA Channel 1"
default n
config BSP_USING_PDMA_CHANNEL2
bool "Enable PDMA Channel 2"
default n
config BSP_USING_PDMA_CHANNEL3
bool "Enable PDMA Channel 3"
default n
config BSP_USING_PDMA_CHANNEL4
bool "Enable PDMA Channel 4"
default n
config BSP_USING_PDMA_CHANNEL5
bool "Enable PDMA Channel 5"
default n
config BSP_USING_PDMA_CHANNEL6
bool "Enable PDMA Channel 6"
default n
config BSP_USING_PDMA_CHANNEL7
bool "Enable PDMA Channel 7"
default n
endif
config BSP_UTEST_DRIVERS
bool "Enable drivers utest"
select RT_USING_UTEST
+12
View File
@@ -0,0 +1,12 @@
# RT-Thread building script for component
from building import *
cwd = GetCurrentDir()
src = Glob('*.c')
CPPPATH = [cwd]
group = DefineGroup('PDMA', src, depend = [''], CPPPATH = CPPPATH)
Return('group')
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -17,7 +17,10 @@ if GetDepend('RT_UTEST_USING_ALL_CASES') or GetDepend('BSP_UTEST_DRIVERS'):
if GetDepend('BSP_USING_PWM'):
src += ['test_pwm.c']
if GetDepend('BSP_USING_PDMA'):
src += ['test_pdma.c']
group = DefineGroup('utestcases', src, depend = [''])
Return('group')
File diff suppressed because it is too large Load Diff
+8
View File
@@ -494,6 +494,14 @@
/* NXP HAL & SDK Drivers */
/* end of NXP HAL & SDK Drivers */
/* NUVOTON Drivers */
/* end of NUVOTON Drivers */
/* GD32 Drivers */
/* end of GD32 Drivers */
/* end of HAL & SDK Drivers */
/* sensors drivers */