summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsheltonyu <[email protected]>2022-12-07 11:13:25 +0800
committerGitHub <[email protected]>2022-12-06 22:13:25 -0500
commita64750ebede641742d0e4d646169531000d8b2c2 (patch)
tree013fa7d933dcc5cf676b1cef0feefc1a50a4a338
parenta535218ba6dc23e1efeaf2b6bc0dd13ec8c841a4 (diff)
[bsp/at32] 1.407/437 uart2 pins change to pd5/pd6. 2.uart and spi drivers suppor… (#6695)
* 1.407/437 uart2 pins change to pd5/pd6. 2.uart and spi drivers support dma * [bsp/at32] remove #ifndef
-rw-r--r--bsp/at32/at32f403a-start/.config371
-rw-r--r--bsp/at32/at32f403a-start/board/Kconfig37
-rw-r--r--bsp/at32/at32f403a-start/project.ewp6
-rw-r--r--bsp/at32/at32f403a-start/project.uvproj2
-rw-r--r--bsp/at32/at32f403a-start/project.uvprojx2
-rw-r--r--bsp/at32/at32f403a-start/rtconfig.h43
-rw-r--r--bsp/at32/at32f407-start/.config371
-rw-r--r--bsp/at32/at32f407-start/README.md4
-rw-r--r--bsp/at32/at32f407-start/board/Kconfig37
-rw-r--r--bsp/at32/at32f407-start/board/src/at32_msp.c12
-rw-r--r--bsp/at32/at32f407-start/project.ewp6
-rw-r--r--bsp/at32/at32f407-start/project.uvproj2
-rw-r--r--bsp/at32/at32f407-start/project.uvprojx2
-rw-r--r--bsp/at32/at32f407-start/rtconfig.h43
-rw-r--r--bsp/at32/at32f413-start/.config371
-rw-r--r--bsp/at32/at32f413-start/board/Kconfig37
-rw-r--r--bsp/at32/at32f413-start/project.ewp6
-rw-r--r--bsp/at32/at32f413-start/project.uvproj2
-rw-r--r--bsp/at32/at32f413-start/project.uvprojx2
-rw-r--r--bsp/at32/at32f413-start/rtconfig.h43
-rw-r--r--bsp/at32/at32f415-start/.config371
-rw-r--r--bsp/at32/at32f415-start/board/Kconfig37
-rw-r--r--bsp/at32/at32f415-start/project.ewp10
-rw-r--r--bsp/at32/at32f415-start/project.uvproj2
-rw-r--r--bsp/at32/at32f415-start/project.uvprojx2
-rw-r--r--bsp/at32/at32f415-start/rtconfig.h43
-rw-r--r--bsp/at32/at32f435-start/.config371
-rw-r--r--bsp/at32/at32f435-start/board/Kconfig37
-rw-r--r--bsp/at32/at32f435-start/project.ewp6
-rw-r--r--bsp/at32/at32f435-start/project.uvproj2
-rw-r--r--bsp/at32/at32f435-start/project.uvprojx2
-rw-r--r--bsp/at32/at32f435-start/rtconfig.h43
-rw-r--r--bsp/at32/at32f437-start/.config371
-rw-r--r--bsp/at32/at32f437-start/README.md4
-rw-r--r--bsp/at32/at32f437-start/board/Kconfig37
-rw-r--r--bsp/at32/at32f437-start/board/src/at32_msp.c11
-rw-r--r--bsp/at32/at32f437-start/project.ewp6
-rw-r--r--bsp/at32/at32f437-start/project.uvproj2
-rw-r--r--bsp/at32/at32f437-start/project.uvprojx2
-rw-r--r--bsp/at32/at32f437-start/rtconfig.h43
-rw-r--r--bsp/at32/libraries/rt_drivers/SConscript5
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f403a_407/dma_config.h137
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f403a_407/spi_config.h141
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f403a_407/uart_config.h169
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f413/dma_config.h110
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f413/spi_config.h82
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f413/uart_config.h169
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f415/dma_config.h109
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f415/spi_config.h85
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f415/uart_config.h169
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f435_437/dma_config.h220
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f435_437/spi_config.h157
-rw-r--r--bsp/at32/libraries/rt_drivers/config/f435_437/uart_config.h251
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_config.h43
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_dma.h46
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_spi.c574
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_spi.h6
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_usart.c738
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_usart.h12
59 files changed, 3553 insertions, 2471 deletions
diff --git a/bsp/at32/at32f403a-start/.config b/bsp/at32/at32f403a-start/.config
index 80d2e424c9..d5a114799a 100644
--- a/bsp/at32/at32f403a-start/.config
+++ b/bsp/at32/at32f403a-start/.config
@@ -214,19 +214,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
#
# IoT - internet of things
#
-# CONFIG_PKG_USING_LWIP is not set
-# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
-# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_MYMQTT is not set
-# CONFIG_PKG_USING_KAWAII_MQTT is not set
-# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
#
@@ -246,12 +246,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
-# CONFIG_PKG_USING_CMUX is not set
# CONFIG_PKG_USING_PPP_DEVICE is not set
# CONFIG_PKG_USING_AT_DEVICE is not set
# CONFIG_PKG_USING_ATSRV_SOCKET is not set
# CONFIG_PKG_USING_WIZNET is not set
-# CONFIG_PKG_USING_ZB_COORDINATOR is not set
#
# IoT Cloud
@@ -260,14 +258,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
-# CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
# CONFIG_PKG_USING_NIMBLE is not set
-# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
# CONFIG_PKG_USING_IPMSG is not set
# CONFIG_PKG_USING_LSSDP is not set
@@ -275,111 +269,40 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_LIBRWS is not set
# CONFIG_PKG_USING_TCPSERVER is not set
# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
# CONFIG_PKG_USING_ABUP_FOTA is not set
# CONFIG_PKG_USING_LIBCURL2RTT is not set
# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
# CONFIG_PKG_USING_AGILE_TELNET is not set
-# CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_PDULIB is not set
-# CONFIG_PKG_USING_BTSTACK is not set
-# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
-# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
-# CONFIG_PKG_USING_MAVLINK is not set
-# CONFIG_PKG_USING_BSAL is not set
-# CONFIG_PKG_USING_AGILE_MODBUS is not set
-# CONFIG_PKG_USING_AGILE_FTP is not set
-# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
-# CONFIG_PKG_USING_RT_LINK_HW is not set
-# CONFIG_PKG_USING_LORA_PKT_FWD is not set
-# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
-# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
-# CONFIG_PKG_USING_HM is not set
-# CONFIG_PKG_USING_SMALL_MODBUS is not set
-# CONFIG_PKG_USING_NET_SERVER is not set
-# CONFIG_PKG_USING_ZFTP is not set
#
# security packages
#
# CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_LIBSODIUM is not set
-# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
-# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
#
-
-#
-# JSON: JavaScript Object Notation, a lightweight data-interchange format
-#
-# CONFIG_PKG_USING_CJSON is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
-# CONFIG_PKG_USING_RAPIDJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
-# CONFIG_PKG_USING_PARSON is not set
-
-#
-# XML: Extensible Markup Language
-#
-# CONFIG_PKG_USING_SIMPLE_XML is not set
-# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_LUATOS_SOC is not set
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
-# CONFIG_PKG_USING_PIKASCRIPT is not set
-# CONFIG_PKG_USING_RTT_RUST is not set
#
# multimedia packages
#
-
-#
-# LVGL: powerful and easy-to-use embedded GUI library
-#
-# CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
-
-#
-# u8g2: a monochrome graphic library
-#
-# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
-# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
-# CONFIG_PKG_USING_PDFGEN is not set
-# CONFIG_PKG_USING_HELIX is not set
-# CONFIG_PKG_USING_AZUREGUIX is not set
-# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
-# CONFIG_PKG_USING_NUEMWIN is not set
-# CONFIG_PKG_USING_MP3PLAYER is not set
-# CONFIG_PKG_USING_TINYJPEG is not set
-# CONFIG_PKG_USING_UGUI is not set
-
-#
-# PainterEngine: A cross-platform graphics application framework written in C language
-#
-# CONFIG_PKG_USING_PAINTERENGINE is not set
-# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
-# CONFIG_PKG_USING_MCURSES is not set
-# CONFIG_PKG_USING_TERMBOX is not set
-# CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_QRCODE is not set
-# CONFIG_PKG_USING_GUIENGINE is not set
-# CONFIG_PKG_USING_PERSIMMON is not set
#
# tools packages
@@ -388,115 +311,37 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_EASYFLASH is not set
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
-# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
-# CONFIG_PKG_USING_ULOG_FILE is not set
-# CONFIG_PKG_USING_LOGMGR is not set
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
# CONFIG_PKG_USING_DHRYSTONE is not set
-# CONFIG_PKG_USING_MEMORYPERF is not set
# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
-# CONFIG_PKG_USING_GPS_RMC is not set
-# CONFIG_PKG_USING_URLENCODE is not set
-# CONFIG_PKG_USING_UMCN is not set
-# CONFIG_PKG_USING_LWRB2RTT is not set
-# CONFIG_PKG_USING_CPU_USAGE is not set
-# CONFIG_PKG_USING_GBK2UTF8 is not set
-# CONFIG_PKG_USING_VCONSOLE is not set
-# CONFIG_PKG_USING_KDB is not set
-# CONFIG_PKG_USING_WAMR is not set
-# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
-# CONFIG_PKG_USING_LWLOG is not set
-# CONFIG_PKG_USING_ANV_TRACE is not set
-# CONFIG_PKG_USING_ANV_MEMLEAK is not set
-# CONFIG_PKG_USING_ANV_TESTSUIT is not set
-# CONFIG_PKG_USING_ANV_BENCH is not set
-# CONFIG_PKG_USING_DEVMEM is not set
-# CONFIG_PKG_USING_REGEX is not set
-# CONFIG_PKG_USING_MEM_SANDBOX is not set
-# CONFIG_PKG_USING_SOLAR_TERMS is not set
-# CONFIG_PKG_USING_GAN_ZHI is not set
-# CONFIG_PKG_USING_FDT is not set
-# CONFIG_PKG_USING_CBOX is not set
-# CONFIG_PKG_USING_SNOWFLAKE is not set
-# CONFIG_PKG_USING_HASH_MATCH is not set
-# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
#
# system packages
#
-
-#
-# enhanced kernel services
-#
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
-
-#
-# acceleration: Assembly language or algorithmic acceleration packages
-#
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
-
-#
-# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
-#
-# CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
-# CONFIG_PKG_USING_PERF_COUNTER is not set
-# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
-# CONFIG_PKG_USING_DFS_JFFS2 is not set
-# CONFIG_PKG_USING_DFS_UFFS is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
-# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
-# CONFIG_PKG_USING_PLCCORE is not set
-# CONFIG_PKG_USING_RAMDISK is not set
-# CONFIG_PKG_USING_MININI is not set
-# CONFIG_PKG_USING_QBOOT is not set
-# CONFIG_PKG_USING_PPOOL is not set
-# CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_LPM is not set
-# CONFIG_PKG_USING_TLSF is not set
-# CONFIG_PKG_USING_EVENT_RECORDER is not set
-# CONFIG_PKG_USING_ARM_2D is not set
-# CONFIG_PKG_USING_MCUBOOT is not set
-# CONFIG_PKG_USING_TINYUSB is not set
-# CONFIG_PKG_USING_CHERRYUSB is not set
-# CONFIG_PKG_USING_KMULTI_RTIMER is not set
-# CONFIG_PKG_USING_TFDB is not set
-# CONFIG_PKG_USING_QPC is not set
#
# peripheral libraries and drivers
@@ -505,29 +350,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
-# CONFIG_PKG_USING_AS7341 is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
# CONFIG_PKG_USING_SIGNAL_LED is not set
# CONFIG_PKG_USING_LEDBLINK is not set
# CONFIG_PKG_USING_LITTLED is not set
-# CONFIG_PKG_USING_LKDGUI is not set
-# CONFIG_PKG_USING_NRF5X_SDK is not set
-# CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AGILE_BUTTON is not set
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
@@ -541,185 +376,43 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
-# CONFIG_PKG_USING_WS2812B is not set
# CONFIG_PKG_USING_EMBARC_BSP is not set
-# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
-# CONFIG_PKG_USING_MULTI_RTIMER is not set
-# CONFIG_PKG_USING_MAX7219 is not set
-# CONFIG_PKG_USING_BEEP is not set
-# CONFIG_PKG_USING_EASYBLINK is not set
-# CONFIG_PKG_USING_PMS_SERIES is not set
-# CONFIG_PKG_USING_CAN_YMODEM is not set
-# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
-# CONFIG_PKG_USING_QLED is not set
-# CONFIG_PKG_USING_PAJ7620 is not set
-# CONFIG_PKG_USING_AGILE_CONSOLE is not set
-# CONFIG_PKG_USING_LD3320 is not set
-# CONFIG_PKG_USING_WK2124 is not set
-# CONFIG_PKG_USING_LY68L6400 is not set
-# CONFIG_PKG_USING_DM9051 is not set
-# CONFIG_PKG_USING_SSD1306 is not set
-# CONFIG_PKG_USING_QKEY is not set
-# CONFIG_PKG_USING_RS485 is not set
-# CONFIG_PKG_USING_RS232 is not set
-# CONFIG_PKG_USING_NES is not set
-# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
-# CONFIG_PKG_USING_VDEVICE is not set
-# CONFIG_PKG_USING_SGM706 is not set
-# CONFIG_PKG_USING_STM32WB55_SDK is not set
-# CONFIG_PKG_USING_RDA58XX is not set
-# CONFIG_PKG_USING_LIBNFC is not set
-# CONFIG_PKG_USING_MFOC is not set
-# CONFIG_PKG_USING_TMC51XX is not set
-# CONFIG_PKG_USING_TCA9534 is not set
-# CONFIG_PKG_USING_KOBUKI is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
-# CONFIG_PKG_USING_MICRO_ROS is not set
-# CONFIG_PKG_USING_MCP23008 is not set
-# CONFIG_PKG_USING_BLUETRUM_SDK is not set
-# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
-# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
-# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
-# CONFIG_PKG_USING_BL_MCU_SDK is not set
-# CONFIG_PKG_USING_SOFT_SERIAL is not set
-# CONFIG_PKG_USING_MB85RS16 is not set
-# CONFIG_PKG_USING_CW2015 is not set
-# CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
-
-#
-# AI packages
-#
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
-# CONFIG_PKG_USING_ELAPACK is not set
-# CONFIG_PKG_USING_ULAPACK is not set
-# CONFIG_PKG_USING_QUEST is not set
-# CONFIG_PKG_USING_NAXOS is not set
#
# miscellaneous packages
#
-
-#
-# project laboratory
-#
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# CONFIG_PKG_USING_CMATRIX is not set
-# CONFIG_PKG_USING_SL is not set
-# CONFIG_PKG_USING_CAL is not set
-# CONFIG_PKG_USING_ACLOCK is not set
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
-# CONFIG_PKG_USING_DONUT is not set
-# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
# CONFIG_PKG_USING_MINILZO is not set
# CONFIG_PKG_USING_QUICKLZ is not set
-# CONFIG_PKG_USING_LZMA is not set
# CONFIG_PKG_USING_MULTIBUTTON is not set
# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
# CONFIG_PKG_USING_CANFESTIVAL is not set
# CONFIG_PKG_USING_ZLIB is not set
-# CONFIG_PKG_USING_MINIZIP is not set
-# CONFIG_PKG_USING_HEATSHRINK is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
-# CONFIG_PKG_USING_CRCLIB is not set
-# CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_STATE_MACHINE is not set
-# CONFIG_PKG_USING_DESIGN_PATTERN is not set
-# CONFIG_PKG_USING_CONTROLLER is not set
-# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
-# CONFIG_PKG_USING_MFBD is not set
-# CONFIG_PKG_USING_SLCAN2RTT is not set
-# CONFIG_PKG_USING_SOEM is not set
-# CONFIG_PKG_USING_QPARAM is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
CONFIG_SOC_FAMILY_AT32=y
CONFIG_SOC_SERIES_AT32F403A=y
diff --git a/bsp/at32/at32f403a-start/board/Kconfig b/bsp/at32/at32f403a-start/board/Kconfig
index 6bc2938fe6..c68c21c5ab 100644
--- a/bsp/at32/at32f403a-start/board/Kconfig
+++ b/bsp/at32/at32f403a-start/board/Kconfig
@@ -54,13 +54,28 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART1"
default y
+ config BSP_UART1_RX_USING_DMA
+ bool "Enable UART1 RX DMA"
+ depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART2
bool "Enable UART2"
default n
+ config BSP_UART2_RX_USING_DMA
+ bool "Enable UART2 RX DMA"
+ depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART3
bool "Enable UART3"
default n
+
+ config BSP_UART3_RX_USING_DMA
+ bool "Enable UART3 RX DMA"
+ depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
+ default n
endif
menuconfig BSP_USING_PWM
@@ -119,9 +134,31 @@ menu "On-chip Peripheral Drivers"
bool "Enable SPI1 BUS"
default n
+ config BSP_SPI1_TX_USING_DMA
+ bool "Enable SPI1 TX DMA"
+ depends on BSP_USING_SPI1
+ default n
+
+ config BSP_SPI1_RX_USING_DMA
+ bool "Enable SPI1 RX DMA"
+ depends on BSP_USING_SPI1
+ select BSP_SPI1_TX_USING_DMA
+ default n
+
config BSP_USING_SPI2
bool "Enable SPI2 BUS"
default n
+
+ config BSP_SPI2_TX_USING_DMA
+ bool "Enable SPI2 TX DMA"
+ depends on BSP_USING_SPI2
+ default n
+
+ config BSP_SPI2_RX_USING_DMA
+ bool "Enable SPI2 RX DMA"
+ depends on BSP_USING_SPI2
+ select BSP_SPI2_TX_USING_DMA
+ default n
endif
menuconfig BSP_USING_I2C
diff --git a/bsp/at32/at32f403a-start/project.ewp b/bsp/at32/at32f403a-start/project.ewp
index 467cdc3078..917f7b7c63 100644
--- a/bsp/at32/at32f403a-start/project.ewp
+++ b/bsp/at32/at32f403a-start/project.ewp
@@ -353,6 +353,7 @@
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -362,7 +363,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\include</state>
@@ -1397,6 +1398,7 @@
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -1406,7 +1408,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\include</state>
diff --git a/bsp/at32/at32f403a-start/project.uvproj b/bsp/at32/at32f403a-start/project.uvproj
index 02dfdacd3e..fa32d66bed 100644
--- a/bsp/at32/at32f403a-start/project.uvproj
+++ b/bsp/at32/at32f403a-start/project.uvproj
@@ -359,7 +359,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, AT32F403AVGT7, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f403a-start/project.uvprojx b/bsp/at32/at32f403a-start/project.uvprojx
index 7f3b5e7697..23a15f9f43 100644
--- a/bsp/at32/at32f403a-start/project.uvprojx
+++ b/bsp/at32/at32f403a-start/project.uvprojx
@@ -335,7 +335,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, AT32F403AVGT7, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f403a-start/rtconfig.h b/bsp/at32/at32f403a-start/rtconfig.h
index 8bbb70ef9c..34ed921409 100644
--- a/bsp/at32/at32f403a-start/rtconfig.h
+++ b/bsp/at32/at32f403a-start/rtconfig.h
@@ -129,67 +129,24 @@
/* language packages */
-/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
-
-
-/* XML: Extensible Markup Language */
-
/* multimedia packages */
-/* LVGL: powerful and easy-to-use embedded GUI library */
-
-
-/* u8g2: a monochrome graphic library */
-
-
-/* PainterEngine: A cross-platform graphics application framework written in C language */
-
/* tools packages */
/* system packages */
-/* enhanced kernel services */
-
-
-/* acceleration: Assembly language or algorithmic acceleration packages */
-
-
-/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
-
-
-/* Micrium: Micrium software products porting for RT-Thread */
-
/* peripheral libraries and drivers */
-/* Kendryte SDK */
-
-
-/* AI packages */
-
-
/* miscellaneous packages */
-/* project laboratory */
/* samples: kernel and components samples */
-
-/* entertainment: terminal games and other interesting software packages */
-
-
-/* Privated Packages of RealThread */
-
-
-/* Network Utilities */
-
-
-/* RT-Thread Smart */
-
#define SOC_FAMILY_AT32
#define SOC_SERIES_AT32F403A
diff --git a/bsp/at32/at32f407-start/.config b/bsp/at32/at32f407-start/.config
index 3fd89e0a84..07a19d9e8e 100644
--- a/bsp/at32/at32f407-start/.config
+++ b/bsp/at32/at32f407-start/.config
@@ -214,19 +214,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
#
# IoT - internet of things
#
-# CONFIG_PKG_USING_LWIP is not set
-# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
-# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_MYMQTT is not set
-# CONFIG_PKG_USING_KAWAII_MQTT is not set
-# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
#
@@ -246,12 +246,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
-# CONFIG_PKG_USING_CMUX is not set
# CONFIG_PKG_USING_PPP_DEVICE is not set
# CONFIG_PKG_USING_AT_DEVICE is not set
# CONFIG_PKG_USING_ATSRV_SOCKET is not set
# CONFIG_PKG_USING_WIZNET is not set
-# CONFIG_PKG_USING_ZB_COORDINATOR is not set
#
# IoT Cloud
@@ -260,14 +258,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
-# CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
# CONFIG_PKG_USING_NIMBLE is not set
-# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
# CONFIG_PKG_USING_IPMSG is not set
# CONFIG_PKG_USING_LSSDP is not set
@@ -275,111 +269,40 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_LIBRWS is not set
# CONFIG_PKG_USING_TCPSERVER is not set
# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
# CONFIG_PKG_USING_ABUP_FOTA is not set
# CONFIG_PKG_USING_LIBCURL2RTT is not set
# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
# CONFIG_PKG_USING_AGILE_TELNET is not set
-# CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_PDULIB is not set
-# CONFIG_PKG_USING_BTSTACK is not set
-# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
-# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
-# CONFIG_PKG_USING_MAVLINK is not set
-# CONFIG_PKG_USING_BSAL is not set
-# CONFIG_PKG_USING_AGILE_MODBUS is not set
-# CONFIG_PKG_USING_AGILE_FTP is not set
-# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
-# CONFIG_PKG_USING_RT_LINK_HW is not set
-# CONFIG_PKG_USING_LORA_PKT_FWD is not set
-# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
-# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
-# CONFIG_PKG_USING_HM is not set
-# CONFIG_PKG_USING_SMALL_MODBUS is not set
-# CONFIG_PKG_USING_NET_SERVER is not set
-# CONFIG_PKG_USING_ZFTP is not set
#
# security packages
#
# CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_LIBSODIUM is not set
-# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
-# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
#
-
-#
-# JSON: JavaScript Object Notation, a lightweight data-interchange format
-#
-# CONFIG_PKG_USING_CJSON is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
-# CONFIG_PKG_USING_RAPIDJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
-# CONFIG_PKG_USING_PARSON is not set
-
-#
-# XML: Extensible Markup Language
-#
-# CONFIG_PKG_USING_SIMPLE_XML is not set
-# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_LUATOS_SOC is not set
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
-# CONFIG_PKG_USING_PIKASCRIPT is not set
-# CONFIG_PKG_USING_RTT_RUST is not set
#
# multimedia packages
#
-
-#
-# LVGL: powerful and easy-to-use embedded GUI library
-#
-# CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
-
-#
-# u8g2: a monochrome graphic library
-#
-# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
-# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
-# CONFIG_PKG_USING_PDFGEN is not set
-# CONFIG_PKG_USING_HELIX is not set
-# CONFIG_PKG_USING_AZUREGUIX is not set
-# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
-# CONFIG_PKG_USING_NUEMWIN is not set
-# CONFIG_PKG_USING_MP3PLAYER is not set
-# CONFIG_PKG_USING_TINYJPEG is not set
-# CONFIG_PKG_USING_UGUI is not set
-
-#
-# PainterEngine: A cross-platform graphics application framework written in C language
-#
-# CONFIG_PKG_USING_PAINTERENGINE is not set
-# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
-# CONFIG_PKG_USING_MCURSES is not set
-# CONFIG_PKG_USING_TERMBOX is not set
-# CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_QRCODE is not set
-# CONFIG_PKG_USING_GUIENGINE is not set
-# CONFIG_PKG_USING_PERSIMMON is not set
#
# tools packages
@@ -388,115 +311,37 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_EASYFLASH is not set
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
-# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
-# CONFIG_PKG_USING_ULOG_FILE is not set
-# CONFIG_PKG_USING_LOGMGR is not set
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
# CONFIG_PKG_USING_DHRYSTONE is not set
-# CONFIG_PKG_USING_MEMORYPERF is not set
# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
-# CONFIG_PKG_USING_GPS_RMC is not set
-# CONFIG_PKG_USING_URLENCODE is not set
-# CONFIG_PKG_USING_UMCN is not set
-# CONFIG_PKG_USING_LWRB2RTT is not set
-# CONFIG_PKG_USING_CPU_USAGE is not set
-# CONFIG_PKG_USING_GBK2UTF8 is not set
-# CONFIG_PKG_USING_VCONSOLE is not set
-# CONFIG_PKG_USING_KDB is not set
-# CONFIG_PKG_USING_WAMR is not set
-# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
-# CONFIG_PKG_USING_LWLOG is not set
-# CONFIG_PKG_USING_ANV_TRACE is not set
-# CONFIG_PKG_USING_ANV_MEMLEAK is not set
-# CONFIG_PKG_USING_ANV_TESTSUIT is not set
-# CONFIG_PKG_USING_ANV_BENCH is not set
-# CONFIG_PKG_USING_DEVMEM is not set
-# CONFIG_PKG_USING_REGEX is not set
-# CONFIG_PKG_USING_MEM_SANDBOX is not set
-# CONFIG_PKG_USING_SOLAR_TERMS is not set
-# CONFIG_PKG_USING_GAN_ZHI is not set
-# CONFIG_PKG_USING_FDT is not set
-# CONFIG_PKG_USING_CBOX is not set
-# CONFIG_PKG_USING_SNOWFLAKE is not set
-# CONFIG_PKG_USING_HASH_MATCH is not set
-# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
#
# system packages
#
-
-#
-# enhanced kernel services
-#
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
-
-#
-# acceleration: Assembly language or algorithmic acceleration packages
-#
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
-
-#
-# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
-#
-# CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
-# CONFIG_PKG_USING_PERF_COUNTER is not set
-# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
-# CONFIG_PKG_USING_DFS_JFFS2 is not set
-# CONFIG_PKG_USING_DFS_UFFS is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
-# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
-# CONFIG_PKG_USING_PLCCORE is not set
-# CONFIG_PKG_USING_RAMDISK is not set
-# CONFIG_PKG_USING_MININI is not set
-# CONFIG_PKG_USING_QBOOT is not set
-# CONFIG_PKG_USING_PPOOL is not set
-# CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_LPM is not set
-# CONFIG_PKG_USING_TLSF is not set
-# CONFIG_PKG_USING_EVENT_RECORDER is not set
-# CONFIG_PKG_USING_ARM_2D is not set
-# CONFIG_PKG_USING_MCUBOOT is not set
-# CONFIG_PKG_USING_TINYUSB is not set
-# CONFIG_PKG_USING_CHERRYUSB is not set
-# CONFIG_PKG_USING_KMULTI_RTIMER is not set
-# CONFIG_PKG_USING_TFDB is not set
-# CONFIG_PKG_USING_QPC is not set
#
# peripheral libraries and drivers
@@ -505,29 +350,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
-# CONFIG_PKG_USING_AS7341 is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
# CONFIG_PKG_USING_SIGNAL_LED is not set
# CONFIG_PKG_USING_LEDBLINK is not set
# CONFIG_PKG_USING_LITTLED is not set
-# CONFIG_PKG_USING_LKDGUI is not set
-# CONFIG_PKG_USING_NRF5X_SDK is not set
-# CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AGILE_BUTTON is not set
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
@@ -541,185 +376,43 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
-# CONFIG_PKG_USING_WS2812B is not set
# CONFIG_PKG_USING_EMBARC_BSP is not set
-# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
-# CONFIG_PKG_USING_MULTI_RTIMER is not set
-# CONFIG_PKG_USING_MAX7219 is not set
-# CONFIG_PKG_USING_BEEP is not set
-# CONFIG_PKG_USING_EASYBLINK is not set
-# CONFIG_PKG_USING_PMS_SERIES is not set
-# CONFIG_PKG_USING_CAN_YMODEM is not set
-# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
-# CONFIG_PKG_USING_QLED is not set
-# CONFIG_PKG_USING_PAJ7620 is not set
-# CONFIG_PKG_USING_AGILE_CONSOLE is not set
-# CONFIG_PKG_USING_LD3320 is not set
-# CONFIG_PKG_USING_WK2124 is not set
-# CONFIG_PKG_USING_LY68L6400 is not set
-# CONFIG_PKG_USING_DM9051 is not set
-# CONFIG_PKG_USING_SSD1306 is not set
-# CONFIG_PKG_USING_QKEY is not set
-# CONFIG_PKG_USING_RS485 is not set
-# CONFIG_PKG_USING_RS232 is not set
-# CONFIG_PKG_USING_NES is not set
-# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
-# CONFIG_PKG_USING_VDEVICE is not set
-# CONFIG_PKG_USING_SGM706 is not set
-# CONFIG_PKG_USING_STM32WB55_SDK is not set
-# CONFIG_PKG_USING_RDA58XX is not set
-# CONFIG_PKG_USING_LIBNFC is not set
-# CONFIG_PKG_USING_MFOC is not set
-# CONFIG_PKG_USING_TMC51XX is not set
-# CONFIG_PKG_USING_TCA9534 is not set
-# CONFIG_PKG_USING_KOBUKI is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
-# CONFIG_PKG_USING_MICRO_ROS is not set
-# CONFIG_PKG_USING_MCP23008 is not set
-# CONFIG_PKG_USING_BLUETRUM_SDK is not set
-# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
-# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
-# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
-# CONFIG_PKG_USING_BL_MCU_SDK is not set
-# CONFIG_PKG_USING_SOFT_SERIAL is not set
-# CONFIG_PKG_USING_MB85RS16 is not set
-# CONFIG_PKG_USING_CW2015 is not set
-# CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
-
-#
-# AI packages
-#
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
-# CONFIG_PKG_USING_ELAPACK is not set
-# CONFIG_PKG_USING_ULAPACK is not set
-# CONFIG_PKG_USING_QUEST is not set
-# CONFIG_PKG_USING_NAXOS is not set
#
# miscellaneous packages
#
-
-#
-# project laboratory
-#
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# CONFIG_PKG_USING_CMATRIX is not set
-# CONFIG_PKG_USING_SL is not set
-# CONFIG_PKG_USING_CAL is not set
-# CONFIG_PKG_USING_ACLOCK is not set
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
-# CONFIG_PKG_USING_DONUT is not set
-# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
# CONFIG_PKG_USING_MINILZO is not set
# CONFIG_PKG_USING_QUICKLZ is not set
-# CONFIG_PKG_USING_LZMA is not set
# CONFIG_PKG_USING_MULTIBUTTON is not set
# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
# CONFIG_PKG_USING_CANFESTIVAL is not set
# CONFIG_PKG_USING_ZLIB is not set
-# CONFIG_PKG_USING_MINIZIP is not set
-# CONFIG_PKG_USING_HEATSHRINK is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
-# CONFIG_PKG_USING_CRCLIB is not set
-# CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_STATE_MACHINE is not set
-# CONFIG_PKG_USING_DESIGN_PATTERN is not set
-# CONFIG_PKG_USING_CONTROLLER is not set
-# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
-# CONFIG_PKG_USING_MFBD is not set
-# CONFIG_PKG_USING_SLCAN2RTT is not set
-# CONFIG_PKG_USING_SOEM is not set
-# CONFIG_PKG_USING_QPARAM is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
CONFIG_SOC_FAMILY_AT32=y
CONFIG_SOC_SERIES_AT32F407=y
diff --git a/bsp/at32/at32f407-start/README.md b/bsp/at32/at32f407-start/README.md
index 25f64164e5..30aab90451 100644
--- a/bsp/at32/at32f407-start/README.md
+++ b/bsp/at32/at32f407-start/README.md
@@ -61,8 +61,8 @@ AT32F407-START板级包支持MDK4﹑MDK5﹑IAR开发环境和GCC编译器,以�
| PD15 | LED4 |
| PA9 | USART1_TX |
| PA10 | USART1_RX |
-| PA2 | USART2_TX |
-| PA3 | USART2_RX |
+| PD5 | USART2_TX |
+| PD6 | USART2_RX |
| PB10 | USART3_TX |
| PB11 | USART3_RX |
| PA4 | SPI1_NSS |
diff --git a/bsp/at32/at32f407-start/board/Kconfig b/bsp/at32/at32f407-start/board/Kconfig
index 049edb7a42..e91892cbf0 100644
--- a/bsp/at32/at32f407-start/board/Kconfig
+++ b/bsp/at32/at32f407-start/board/Kconfig
@@ -71,13 +71,28 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART1"
default y
+ config BSP_UART1_RX_USING_DMA
+ bool "Enable UART1 RX DMA"
+ depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART2
bool "Enable UART2"
default n
+ config BSP_UART2_RX_USING_DMA
+ bool "Enable UART2 RX DMA"
+ depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART3
bool "Enable UART3"
default n
+
+ config BSP_UART3_RX_USING_DMA
+ bool "Enable UART3 RX DMA"
+ depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
+ default n
endif
menuconfig BSP_USING_PWM
@@ -136,9 +151,31 @@ menu "On-chip Peripheral Drivers"
bool "Enable SPI1 BUS"
default n
+ config BSP_SPI1_TX_USING_DMA
+ bool "Enable SPI1 TX DMA"
+ depends on BSP_USING_SPI1
+ default n
+
+ config BSP_SPI1_RX_USING_DMA
+ bool "Enable SPI1 RX DMA"
+ depends on BSP_USING_SPI1
+ select BSP_SPI1_TX_USING_DMA
+ default n
+
config BSP_USING_SPI2
bool "Enable SPI2 BUS"
default n
+
+ config BSP_SPI2_TX_USING_DMA
+ bool "Enable SPI2 TX DMA"
+ depends on BSP_USING_SPI2
+ default n
+
+ config BSP_SPI2_RX_USING_DMA
+ bool "Enable SPI2 RX DMA"
+ depends on BSP_USING_SPI2
+ select BSP_SPI2_TX_USING_DMA
+ default n
endif
menuconfig BSP_USING_I2C
diff --git a/bsp/at32/at32f407-start/board/src/at32_msp.c b/bsp/at32/at32f407-start/board/src/at32_msp.c
index 463eb86d19..927bce5bd5 100644
--- a/bsp/at32/at32f407-start/board/src/at32_msp.c
+++ b/bsp/at32/at32f407-start/board/src/at32_msp.c
@@ -6,6 +6,7 @@
* Change Logs:
* Date Author Notes
* 2022-03-08 shelton first version
+ * 2022-12-05 shelton uart2 pins change to pd5/pd6
*/
#include <rtthread.h>
@@ -41,17 +42,18 @@ void at32_msp_usart_init(void *instance)
if(USART2 == usart_x)
{
crm_periph_clock_enable(CRM_USART2_PERIPH_CLOCK, TRUE);
- crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
+ crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE);
gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
- gpio_init_struct.gpio_pins = GPIO_PINS_2;
- gpio_init(GPIOA, &gpio_init_struct);
+ gpio_init_struct.gpio_pins = GPIO_PINS_5;
+ gpio_init(GPIOD, &gpio_init_struct);
gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
- gpio_init_struct.gpio_pins = GPIO_PINS_3;
- gpio_init(GPIOA, &gpio_init_struct);
+ gpio_init_struct.gpio_pins = GPIO_PINS_6;
+ gpio_init(GPIOD, &gpio_init_struct);
+ gpio_pin_remap_config(USART2_MUX, TRUE);
}
#endif
#ifdef BSP_USING_UART3
diff --git a/bsp/at32/at32f407-start/project.ewp b/bsp/at32/at32f407-start/project.ewp
index a9190536e0..04c124989a 100644
--- a/bsp/at32/at32f407-start/project.ewp
+++ b/bsp/at32/at32f407-start/project.ewp
@@ -353,6 +353,7 @@
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -362,7 +363,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\include</state>
@@ -1397,6 +1398,7 @@
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -1406,7 +1408,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\include</state>
diff --git a/bsp/at32/at32f407-start/project.uvproj b/bsp/at32/at32f407-start/project.uvproj
index d23692b4b1..906b9b856d 100644
--- a/bsp/at32/at32f407-start/project.uvproj
+++ b/bsp/at32/at32f407-start/project.uvproj
@@ -359,7 +359,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, AT32F407VGT7, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f407-start/project.uvprojx b/bsp/at32/at32f407-start/project.uvprojx
index 6879144a35..1eae58eb62 100644
--- a/bsp/at32/at32f407-start/project.uvprojx
+++ b/bsp/at32/at32f407-start/project.uvprojx
@@ -335,7 +335,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, AT32F407VGT7, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F403A_407_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F403A_407_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f407-start/rtconfig.h b/bsp/at32/at32f407-start/rtconfig.h
index 3bbba5df62..70572f971b 100644
--- a/bsp/at32/at32f407-start/rtconfig.h
+++ b/bsp/at32/at32f407-start/rtconfig.h
@@ -129,67 +129,24 @@
/* language packages */
-/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
-
-
-/* XML: Extensible Markup Language */
-
/* multimedia packages */
-/* LVGL: powerful and easy-to-use embedded GUI library */
-
-
-/* u8g2: a monochrome graphic library */
-
-
-/* PainterEngine: A cross-platform graphics application framework written in C language */
-
/* tools packages */
/* system packages */
-/* enhanced kernel services */
-
-
-/* acceleration: Assembly language or algorithmic acceleration packages */
-
-
-/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
-
-
-/* Micrium: Micrium software products porting for RT-Thread */
-
/* peripheral libraries and drivers */
-/* Kendryte SDK */
-
-
-/* AI packages */
-
-
/* miscellaneous packages */
-/* project laboratory */
/* samples: kernel and components samples */
-
-/* entertainment: terminal games and other interesting software packages */
-
-
-/* Privated Packages of RealThread */
-
-
-/* Network Utilities */
-
-
-/* RT-Thread Smart */
-
#define SOC_FAMILY_AT32
#define SOC_SERIES_AT32F407
diff --git a/bsp/at32/at32f413-start/.config b/bsp/at32/at32f413-start/.config
index 0d9ee9b78b..ed3f7caa7f 100644
--- a/bsp/at32/at32f413-start/.config
+++ b/bsp/at32/at32f413-start/.config
@@ -214,19 +214,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
#
# IoT - internet of things
#
-# CONFIG_PKG_USING_LWIP is not set
-# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
-# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_MYMQTT is not set
-# CONFIG_PKG_USING_KAWAII_MQTT is not set
-# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
#
@@ -246,12 +246,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
-# CONFIG_PKG_USING_CMUX is not set
# CONFIG_PKG_USING_PPP_DEVICE is not set
# CONFIG_PKG_USING_AT_DEVICE is not set
# CONFIG_PKG_USING_ATSRV_SOCKET is not set
# CONFIG_PKG_USING_WIZNET is not set
-# CONFIG_PKG_USING_ZB_COORDINATOR is not set
#
# IoT Cloud
@@ -260,14 +258,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
-# CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
# CONFIG_PKG_USING_NIMBLE is not set
-# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
# CONFIG_PKG_USING_IPMSG is not set
# CONFIG_PKG_USING_LSSDP is not set
@@ -275,111 +269,40 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_LIBRWS is not set
# CONFIG_PKG_USING_TCPSERVER is not set
# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
# CONFIG_PKG_USING_ABUP_FOTA is not set
# CONFIG_PKG_USING_LIBCURL2RTT is not set
# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
# CONFIG_PKG_USING_AGILE_TELNET is not set
-# CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_PDULIB is not set
-# CONFIG_PKG_USING_BTSTACK is not set
-# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
-# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
-# CONFIG_PKG_USING_MAVLINK is not set
-# CONFIG_PKG_USING_BSAL is not set
-# CONFIG_PKG_USING_AGILE_MODBUS is not set
-# CONFIG_PKG_USING_AGILE_FTP is not set
-# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
-# CONFIG_PKG_USING_RT_LINK_HW is not set
-# CONFIG_PKG_USING_LORA_PKT_FWD is not set
-# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
-# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
-# CONFIG_PKG_USING_HM is not set
-# CONFIG_PKG_USING_SMALL_MODBUS is not set
-# CONFIG_PKG_USING_NET_SERVER is not set
-# CONFIG_PKG_USING_ZFTP is not set
#
# security packages
#
# CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_LIBSODIUM is not set
-# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
-# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
#
-
-#
-# JSON: JavaScript Object Notation, a lightweight data-interchange format
-#
-# CONFIG_PKG_USING_CJSON is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
-# CONFIG_PKG_USING_RAPIDJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
-# CONFIG_PKG_USING_PARSON is not set
-
-#
-# XML: Extensible Markup Language
-#
-# CONFIG_PKG_USING_SIMPLE_XML is not set
-# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_LUATOS_SOC is not set
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
-# CONFIG_PKG_USING_PIKASCRIPT is not set
-# CONFIG_PKG_USING_RTT_RUST is not set
#
# multimedia packages
#
-
-#
-# LVGL: powerful and easy-to-use embedded GUI library
-#
-# CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
-
-#
-# u8g2: a monochrome graphic library
-#
-# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
-# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
-# CONFIG_PKG_USING_PDFGEN is not set
-# CONFIG_PKG_USING_HELIX is not set
-# CONFIG_PKG_USING_AZUREGUIX is not set
-# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
-# CONFIG_PKG_USING_NUEMWIN is not set
-# CONFIG_PKG_USING_MP3PLAYER is not set
-# CONFIG_PKG_USING_TINYJPEG is not set
-# CONFIG_PKG_USING_UGUI is not set
-
-#
-# PainterEngine: A cross-platform graphics application framework written in C language
-#
-# CONFIG_PKG_USING_PAINTERENGINE is not set
-# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
-# CONFIG_PKG_USING_MCURSES is not set
-# CONFIG_PKG_USING_TERMBOX is not set
-# CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_QRCODE is not set
-# CONFIG_PKG_USING_GUIENGINE is not set
-# CONFIG_PKG_USING_PERSIMMON is not set
#
# tools packages
@@ -388,115 +311,37 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_EASYFLASH is not set
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
-# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
-# CONFIG_PKG_USING_ULOG_FILE is not set
-# CONFIG_PKG_USING_LOGMGR is not set
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
# CONFIG_PKG_USING_DHRYSTONE is not set
-# CONFIG_PKG_USING_MEMORYPERF is not set
# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
-# CONFIG_PKG_USING_GPS_RMC is not set
-# CONFIG_PKG_USING_URLENCODE is not set
-# CONFIG_PKG_USING_UMCN is not set
-# CONFIG_PKG_USING_LWRB2RTT is not set
-# CONFIG_PKG_USING_CPU_USAGE is not set
-# CONFIG_PKG_USING_GBK2UTF8 is not set
-# CONFIG_PKG_USING_VCONSOLE is not set
-# CONFIG_PKG_USING_KDB is not set
-# CONFIG_PKG_USING_WAMR is not set
-# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
-# CONFIG_PKG_USING_LWLOG is not set
-# CONFIG_PKG_USING_ANV_TRACE is not set
-# CONFIG_PKG_USING_ANV_MEMLEAK is not set
-# CONFIG_PKG_USING_ANV_TESTSUIT is not set
-# CONFIG_PKG_USING_ANV_BENCH is not set
-# CONFIG_PKG_USING_DEVMEM is not set
-# CONFIG_PKG_USING_REGEX is not set
-# CONFIG_PKG_USING_MEM_SANDBOX is not set
-# CONFIG_PKG_USING_SOLAR_TERMS is not set
-# CONFIG_PKG_USING_GAN_ZHI is not set
-# CONFIG_PKG_USING_FDT is not set
-# CONFIG_PKG_USING_CBOX is not set
-# CONFIG_PKG_USING_SNOWFLAKE is not set
-# CONFIG_PKG_USING_HASH_MATCH is not set
-# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
#
# system packages
#
-
-#
-# enhanced kernel services
-#
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
-
-#
-# acceleration: Assembly language or algorithmic acceleration packages
-#
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
-
-#
-# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
-#
-# CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
-# CONFIG_PKG_USING_PERF_COUNTER is not set
-# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
-# CONFIG_PKG_USING_DFS_JFFS2 is not set
-# CONFIG_PKG_USING_DFS_UFFS is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
-# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
-# CONFIG_PKG_USING_PLCCORE is not set
-# CONFIG_PKG_USING_RAMDISK is not set
-# CONFIG_PKG_USING_MININI is not set
-# CONFIG_PKG_USING_QBOOT is not set
-# CONFIG_PKG_USING_PPOOL is not set
-# CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_LPM is not set
-# CONFIG_PKG_USING_TLSF is not set
-# CONFIG_PKG_USING_EVENT_RECORDER is not set
-# CONFIG_PKG_USING_ARM_2D is not set
-# CONFIG_PKG_USING_MCUBOOT is not set
-# CONFIG_PKG_USING_TINYUSB is not set
-# CONFIG_PKG_USING_CHERRYUSB is not set
-# CONFIG_PKG_USING_KMULTI_RTIMER is not set
-# CONFIG_PKG_USING_TFDB is not set
-# CONFIG_PKG_USING_QPC is not set
#
# peripheral libraries and drivers
@@ -505,29 +350,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
-# CONFIG_PKG_USING_AS7341 is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
# CONFIG_PKG_USING_SIGNAL_LED is not set
# CONFIG_PKG_USING_LEDBLINK is not set
# CONFIG_PKG_USING_LITTLED is not set
-# CONFIG_PKG_USING_LKDGUI is not set
-# CONFIG_PKG_USING_NRF5X_SDK is not set
-# CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AGILE_BUTTON is not set
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
@@ -541,185 +376,43 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
-# CONFIG_PKG_USING_WS2812B is not set
# CONFIG_PKG_USING_EMBARC_BSP is not set
-# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
-# CONFIG_PKG_USING_MULTI_RTIMER is not set
-# CONFIG_PKG_USING_MAX7219 is not set
-# CONFIG_PKG_USING_BEEP is not set
-# CONFIG_PKG_USING_EASYBLINK is not set
-# CONFIG_PKG_USING_PMS_SERIES is not set
-# CONFIG_PKG_USING_CAN_YMODEM is not set
-# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
-# CONFIG_PKG_USING_QLED is not set
-# CONFIG_PKG_USING_PAJ7620 is not set
-# CONFIG_PKG_USING_AGILE_CONSOLE is not set
-# CONFIG_PKG_USING_LD3320 is not set
-# CONFIG_PKG_USING_WK2124 is not set
-# CONFIG_PKG_USING_LY68L6400 is not set
-# CONFIG_PKG_USING_DM9051 is not set
-# CONFIG_PKG_USING_SSD1306 is not set
-# CONFIG_PKG_USING_QKEY is not set
-# CONFIG_PKG_USING_RS485 is not set
-# CONFIG_PKG_USING_RS232 is not set
-# CONFIG_PKG_USING_NES is not set
-# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
-# CONFIG_PKG_USING_VDEVICE is not set
-# CONFIG_PKG_USING_SGM706 is not set
-# CONFIG_PKG_USING_STM32WB55_SDK is not set
-# CONFIG_PKG_USING_RDA58XX is not set
-# CONFIG_PKG_USING_LIBNFC is not set
-# CONFIG_PKG_USING_MFOC is not set
-# CONFIG_PKG_USING_TMC51XX is not set
-# CONFIG_PKG_USING_TCA9534 is not set
-# CONFIG_PKG_USING_KOBUKI is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
-# CONFIG_PKG_USING_MICRO_ROS is not set
-# CONFIG_PKG_USING_MCP23008 is not set
-# CONFIG_PKG_USING_BLUETRUM_SDK is not set
-# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
-# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
-# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
-# CONFIG_PKG_USING_BL_MCU_SDK is not set
-# CONFIG_PKG_USING_SOFT_SERIAL is not set
-# CONFIG_PKG_USING_MB85RS16 is not set
-# CONFIG_PKG_USING_CW2015 is not set
-# CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
-
-#
-# AI packages
-#
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
-# CONFIG_PKG_USING_ELAPACK is not set
-# CONFIG_PKG_USING_ULAPACK is not set
-# CONFIG_PKG_USING_QUEST is not set
-# CONFIG_PKG_USING_NAXOS is not set
#
# miscellaneous packages
#
-
-#
-# project laboratory
-#
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# CONFIG_PKG_USING_CMATRIX is not set
-# CONFIG_PKG_USING_SL is not set
-# CONFIG_PKG_USING_CAL is not set
-# CONFIG_PKG_USING_ACLOCK is not set
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
-# CONFIG_PKG_USING_DONUT is not set
-# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
# CONFIG_PKG_USING_MINILZO is not set
# CONFIG_PKG_USING_QUICKLZ is not set
-# CONFIG_PKG_USING_LZMA is not set
# CONFIG_PKG_USING_MULTIBUTTON is not set
# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
# CONFIG_PKG_USING_CANFESTIVAL is not set
# CONFIG_PKG_USING_ZLIB is not set
-# CONFIG_PKG_USING_MINIZIP is not set
-# CONFIG_PKG_USING_HEATSHRINK is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
-# CONFIG_PKG_USING_CRCLIB is not set
-# CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_STATE_MACHINE is not set
-# CONFIG_PKG_USING_DESIGN_PATTERN is not set
-# CONFIG_PKG_USING_CONTROLLER is not set
-# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
-# CONFIG_PKG_USING_MFBD is not set
-# CONFIG_PKG_USING_SLCAN2RTT is not set
-# CONFIG_PKG_USING_SOEM is not set
-# CONFIG_PKG_USING_QPARAM is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
CONFIG_SOC_FAMILY_AT32=y
CONFIG_SOC_SERIES_AT32F413=y
diff --git a/bsp/at32/at32f413-start/board/Kconfig b/bsp/at32/at32f413-start/board/Kconfig
index 3606ff7397..be29b759d6 100644
--- a/bsp/at32/at32f413-start/board/Kconfig
+++ b/bsp/at32/at32f413-start/board/Kconfig
@@ -54,13 +54,28 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART1"
default y
+ config BSP_UART1_RX_USING_DMA
+ bool "Enable UART1 RX DMA"
+ depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART2
bool "Enable UART2"
default n
+ config BSP_UART2_RX_USING_DMA
+ bool "Enable UART2 RX DMA"
+ depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART3
bool "Enable UART3"
default n
+
+ config BSP_UART3_RX_USING_DMA
+ bool "Enable UART3 RX DMA"
+ depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
+ default n
endif
menuconfig BSP_USING_PWM
@@ -119,9 +134,31 @@ menu "On-chip Peripheral Drivers"
bool "Enable SPI1 BUS"
default n
+ config BSP_SPI1_TX_USING_DMA
+ bool "Enable SPI1 TX DMA"
+ depends on BSP_USING_SPI1
+ default n
+
+ config BSP_SPI1_RX_USING_DMA
+ bool "Enable SPI1 RX DMA"
+ depends on BSP_USING_SPI1
+ select BSP_SPI1_TX_USING_DMA
+ default n
+
config BSP_USING_SPI2
bool "Enable SPI2 BUS"
default n
+
+ config BSP_SPI2_TX_USING_DMA
+ bool "Enable SPI2 TX DMA"
+ depends on BSP_USING_SPI2
+ default n
+
+ config BSP_SPI2_RX_USING_DMA
+ bool "Enable SPI2 RX DMA"
+ depends on BSP_USING_SPI2
+ select BSP_SPI2_TX_USING_DMA
+ default n
endif
menuconfig BSP_USING_I2C
diff --git a/bsp/at32/at32f413-start/project.ewp b/bsp/at32/at32f413-start/project.ewp
index a70bbac61b..0ef9a939d6 100644
--- a/bsp/at32/at32f413-start/project.ewp
+++ b/bsp/at32/at32f413-start/project.ewp
@@ -352,6 +352,7 @@
<name>CCIncludePath2</name>
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -363,7 +364,7 @@
<state>$PROJ_DIR$\..\libraries\AT32F413_Firmware_Library\drivers\inc</state>
<state>$PROJ_DIR$\applications</state>
<state>$PROJ_DIR$\..\libraries\AT32F413_Firmware_Library\cmsis\cm4\device_support</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\libraries\AT32F413_Firmware_Library\cmsis\cm4\core_support</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\include</state>
@@ -1396,6 +1397,7 @@
<name>CCIncludePath2</name>
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -1407,7 +1409,7 @@
<state>$PROJ_DIR$\..\libraries\AT32F413_Firmware_Library\drivers\inc</state>
<state>$PROJ_DIR$\applications</state>
<state>$PROJ_DIR$\..\libraries\AT32F413_Firmware_Library\cmsis\cm4\device_support</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\libraries\AT32F413_Firmware_Library\cmsis\cm4\core_support</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\include</state>
diff --git a/bsp/at32/at32f413-start/project.uvproj b/bsp/at32/at32f413-start/project.uvproj
index 8b7589610e..a6e241daae 100644
--- a/bsp/at32/at32f413-start/project.uvproj
+++ b/bsp/at32/at32f413-start/project.uvproj
@@ -359,7 +359,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, AT32F413RCT7, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F413_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F413_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f413-start/project.uvprojx b/bsp/at32/at32f413-start/project.uvprojx
index a01826362a..9f28a541c6 100644
--- a/bsp/at32/at32f413-start/project.uvprojx
+++ b/bsp/at32/at32f413-start/project.uvprojx
@@ -335,7 +335,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, AT32F413RCT7, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F413_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F413_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F413_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f413-start/rtconfig.h b/bsp/at32/at32f413-start/rtconfig.h
index abfa14b743..21f11dfe82 100644
--- a/bsp/at32/at32f413-start/rtconfig.h
+++ b/bsp/at32/at32f413-start/rtconfig.h
@@ -129,67 +129,24 @@
/* language packages */
-/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
-
-
-/* XML: Extensible Markup Language */
-
/* multimedia packages */
-/* LVGL: powerful and easy-to-use embedded GUI library */
-
-
-/* u8g2: a monochrome graphic library */
-
-
-/* PainterEngine: A cross-platform graphics application framework written in C language */
-
/* tools packages */
/* system packages */
-/* enhanced kernel services */
-
-
-/* acceleration: Assembly language or algorithmic acceleration packages */
-
-
-/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
-
-
-/* Micrium: Micrium software products porting for RT-Thread */
-
/* peripheral libraries and drivers */
-/* Kendryte SDK */
-
-
-/* AI packages */
-
-
/* miscellaneous packages */
-/* project laboratory */
/* samples: kernel and components samples */
-
-/* entertainment: terminal games and other interesting software packages */
-
-
-/* Privated Packages of RealThread */
-
-
-/* Network Utilities */
-
-
-/* RT-Thread Smart */
-
#define SOC_FAMILY_AT32
#define SOC_SERIES_AT32F413
diff --git a/bsp/at32/at32f415-start/.config b/bsp/at32/at32f415-start/.config
index 4348eeae95..4378d38966 100644
--- a/bsp/at32/at32f415-start/.config
+++ b/bsp/at32/at32f415-start/.config
@@ -214,19 +214,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
#
# IoT - internet of things
#
-# CONFIG_PKG_USING_LWIP is not set
-# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
-# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_MYMQTT is not set
-# CONFIG_PKG_USING_KAWAII_MQTT is not set
-# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
#
@@ -246,12 +246,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
-# CONFIG_PKG_USING_CMUX is not set
# CONFIG_PKG_USING_PPP_DEVICE is not set
# CONFIG_PKG_USING_AT_DEVICE is not set
# CONFIG_PKG_USING_ATSRV_SOCKET is not set
# CONFIG_PKG_USING_WIZNET is not set
-# CONFIG_PKG_USING_ZB_COORDINATOR is not set
#
# IoT Cloud
@@ -260,14 +258,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
-# CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
# CONFIG_PKG_USING_NIMBLE is not set
-# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
# CONFIG_PKG_USING_IPMSG is not set
# CONFIG_PKG_USING_LSSDP is not set
@@ -275,111 +269,40 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_LIBRWS is not set
# CONFIG_PKG_USING_TCPSERVER is not set
# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
# CONFIG_PKG_USING_ABUP_FOTA is not set
# CONFIG_PKG_USING_LIBCURL2RTT is not set
# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
# CONFIG_PKG_USING_AGILE_TELNET is not set
-# CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_PDULIB is not set
-# CONFIG_PKG_USING_BTSTACK is not set
-# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
-# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
-# CONFIG_PKG_USING_MAVLINK is not set
-# CONFIG_PKG_USING_BSAL is not set
-# CONFIG_PKG_USING_AGILE_MODBUS is not set
-# CONFIG_PKG_USING_AGILE_FTP is not set
-# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
-# CONFIG_PKG_USING_RT_LINK_HW is not set
-# CONFIG_PKG_USING_LORA_PKT_FWD is not set
-# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
-# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
-# CONFIG_PKG_USING_HM is not set
-# CONFIG_PKG_USING_SMALL_MODBUS is not set
-# CONFIG_PKG_USING_NET_SERVER is not set
-# CONFIG_PKG_USING_ZFTP is not set
#
# security packages
#
# CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_LIBSODIUM is not set
-# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
-# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
#
-
-#
-# JSON: JavaScript Object Notation, a lightweight data-interchange format
-#
-# CONFIG_PKG_USING_CJSON is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
-# CONFIG_PKG_USING_RAPIDJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
-# CONFIG_PKG_USING_PARSON is not set
-
-#
-# XML: Extensible Markup Language
-#
-# CONFIG_PKG_USING_SIMPLE_XML is not set
-# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_LUATOS_SOC is not set
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
-# CONFIG_PKG_USING_PIKASCRIPT is not set
-# CONFIG_PKG_USING_RTT_RUST is not set
#
# multimedia packages
#
-
-#
-# LVGL: powerful and easy-to-use embedded GUI library
-#
-# CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
-
-#
-# u8g2: a monochrome graphic library
-#
-# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
-# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
-# CONFIG_PKG_USING_PDFGEN is not set
-# CONFIG_PKG_USING_HELIX is not set
-# CONFIG_PKG_USING_AZUREGUIX is not set
-# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
-# CONFIG_PKG_USING_NUEMWIN is not set
-# CONFIG_PKG_USING_MP3PLAYER is not set
-# CONFIG_PKG_USING_TINYJPEG is not set
-# CONFIG_PKG_USING_UGUI is not set
-
-#
-# PainterEngine: A cross-platform graphics application framework written in C language
-#
-# CONFIG_PKG_USING_PAINTERENGINE is not set
-# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
-# CONFIG_PKG_USING_MCURSES is not set
-# CONFIG_PKG_USING_TERMBOX is not set
-# CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_QRCODE is not set
-# CONFIG_PKG_USING_GUIENGINE is not set
-# CONFIG_PKG_USING_PERSIMMON is not set
#
# tools packages
@@ -388,115 +311,37 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_EASYFLASH is not set
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
-# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
-# CONFIG_PKG_USING_ULOG_FILE is not set
-# CONFIG_PKG_USING_LOGMGR is not set
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
# CONFIG_PKG_USING_DHRYSTONE is not set
-# CONFIG_PKG_USING_MEMORYPERF is not set
# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
-# CONFIG_PKG_USING_GPS_RMC is not set
-# CONFIG_PKG_USING_URLENCODE is not set
-# CONFIG_PKG_USING_UMCN is not set
-# CONFIG_PKG_USING_LWRB2RTT is not set
-# CONFIG_PKG_USING_CPU_USAGE is not set
-# CONFIG_PKG_USING_GBK2UTF8 is not set
-# CONFIG_PKG_USING_VCONSOLE is not set
-# CONFIG_PKG_USING_KDB is not set
-# CONFIG_PKG_USING_WAMR is not set
-# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
-# CONFIG_PKG_USING_LWLOG is not set
-# CONFIG_PKG_USING_ANV_TRACE is not set
-# CONFIG_PKG_USING_ANV_MEMLEAK is not set
-# CONFIG_PKG_USING_ANV_TESTSUIT is not set
-# CONFIG_PKG_USING_ANV_BENCH is not set
-# CONFIG_PKG_USING_DEVMEM is not set
-# CONFIG_PKG_USING_REGEX is not set
-# CONFIG_PKG_USING_MEM_SANDBOX is not set
-# CONFIG_PKG_USING_SOLAR_TERMS is not set
-# CONFIG_PKG_USING_GAN_ZHI is not set
-# CONFIG_PKG_USING_FDT is not set
-# CONFIG_PKG_USING_CBOX is not set
-# CONFIG_PKG_USING_SNOWFLAKE is not set
-# CONFIG_PKG_USING_HASH_MATCH is not set
-# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
#
# system packages
#
-
-#
-# enhanced kernel services
-#
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
-
-#
-# acceleration: Assembly language or algorithmic acceleration packages
-#
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
-
-#
-# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
-#
-# CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
-# CONFIG_PKG_USING_PERF_COUNTER is not set
-# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
-# CONFIG_PKG_USING_DFS_JFFS2 is not set
-# CONFIG_PKG_USING_DFS_UFFS is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
-# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
-# CONFIG_PKG_USING_PLCCORE is not set
-# CONFIG_PKG_USING_RAMDISK is not set
-# CONFIG_PKG_USING_MININI is not set
-# CONFIG_PKG_USING_QBOOT is not set
-# CONFIG_PKG_USING_PPOOL is not set
-# CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_LPM is not set
-# CONFIG_PKG_USING_TLSF is not set
-# CONFIG_PKG_USING_EVENT_RECORDER is not set
-# CONFIG_PKG_USING_ARM_2D is not set
-# CONFIG_PKG_USING_MCUBOOT is not set
-# CONFIG_PKG_USING_TINYUSB is not set
-# CONFIG_PKG_USING_CHERRYUSB is not set
-# CONFIG_PKG_USING_KMULTI_RTIMER is not set
-# CONFIG_PKG_USING_TFDB is not set
-# CONFIG_PKG_USING_QPC is not set
#
# peripheral libraries and drivers
@@ -505,29 +350,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
-# CONFIG_PKG_USING_AS7341 is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
# CONFIG_PKG_USING_SIGNAL_LED is not set
# CONFIG_PKG_USING_LEDBLINK is not set
# CONFIG_PKG_USING_LITTLED is not set
-# CONFIG_PKG_USING_LKDGUI is not set
-# CONFIG_PKG_USING_NRF5X_SDK is not set
-# CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AGILE_BUTTON is not set
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
@@ -541,185 +376,43 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
-# CONFIG_PKG_USING_WS2812B is not set
# CONFIG_PKG_USING_EMBARC_BSP is not set
-# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
-# CONFIG_PKG_USING_MULTI_RTIMER is not set
-# CONFIG_PKG_USING_MAX7219 is not set
-# CONFIG_PKG_USING_BEEP is not set
-# CONFIG_PKG_USING_EASYBLINK is not set
-# CONFIG_PKG_USING_PMS_SERIES is not set
-# CONFIG_PKG_USING_CAN_YMODEM is not set
-# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
-# CONFIG_PKG_USING_QLED is not set
-# CONFIG_PKG_USING_PAJ7620 is not set
-# CONFIG_PKG_USING_AGILE_CONSOLE is not set
-# CONFIG_PKG_USING_LD3320 is not set
-# CONFIG_PKG_USING_WK2124 is not set
-# CONFIG_PKG_USING_LY68L6400 is not set
-# CONFIG_PKG_USING_DM9051 is not set
-# CONFIG_PKG_USING_SSD1306 is not set
-# CONFIG_PKG_USING_QKEY is not set
-# CONFIG_PKG_USING_RS485 is not set
-# CONFIG_PKG_USING_RS232 is not set
-# CONFIG_PKG_USING_NES is not set
-# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
-# CONFIG_PKG_USING_VDEVICE is not set
-# CONFIG_PKG_USING_SGM706 is not set
-# CONFIG_PKG_USING_STM32WB55_SDK is not set
-# CONFIG_PKG_USING_RDA58XX is not set
-# CONFIG_PKG_USING_LIBNFC is not set
-# CONFIG_PKG_USING_MFOC is not set
-# CONFIG_PKG_USING_TMC51XX is not set
-# CONFIG_PKG_USING_TCA9534 is not set
-# CONFIG_PKG_USING_KOBUKI is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
-# CONFIG_PKG_USING_MICRO_ROS is not set
-# CONFIG_PKG_USING_MCP23008 is not set
-# CONFIG_PKG_USING_BLUETRUM_SDK is not set
-# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
-# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
-# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
-# CONFIG_PKG_USING_BL_MCU_SDK is not set
-# CONFIG_PKG_USING_SOFT_SERIAL is not set
-# CONFIG_PKG_USING_MB85RS16 is not set
-# CONFIG_PKG_USING_CW2015 is not set
-# CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
-
-#
-# AI packages
-#
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
-# CONFIG_PKG_USING_ELAPACK is not set
-# CONFIG_PKG_USING_ULAPACK is not set
-# CONFIG_PKG_USING_QUEST is not set
-# CONFIG_PKG_USING_NAXOS is not set
#
# miscellaneous packages
#
-
-#
-# project laboratory
-#
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# CONFIG_PKG_USING_CMATRIX is not set
-# CONFIG_PKG_USING_SL is not set
-# CONFIG_PKG_USING_CAL is not set
-# CONFIG_PKG_USING_ACLOCK is not set
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
-# CONFIG_PKG_USING_DONUT is not set
-# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
# CONFIG_PKG_USING_MINILZO is not set
# CONFIG_PKG_USING_QUICKLZ is not set
-# CONFIG_PKG_USING_LZMA is not set
# CONFIG_PKG_USING_MULTIBUTTON is not set
# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
# CONFIG_PKG_USING_CANFESTIVAL is not set
# CONFIG_PKG_USING_ZLIB is not set
-# CONFIG_PKG_USING_MINIZIP is not set
-# CONFIG_PKG_USING_HEATSHRINK is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
-# CONFIG_PKG_USING_CRCLIB is not set
-# CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_STATE_MACHINE is not set
-# CONFIG_PKG_USING_DESIGN_PATTERN is not set
-# CONFIG_PKG_USING_CONTROLLER is not set
-# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
-# CONFIG_PKG_USING_MFBD is not set
-# CONFIG_PKG_USING_SLCAN2RTT is not set
-# CONFIG_PKG_USING_SOEM is not set
-# CONFIG_PKG_USING_QPARAM is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
CONFIG_SOC_FAMILY_AT32=y
CONFIG_SOC_SERIES_AT32F415=y
diff --git a/bsp/at32/at32f415-start/board/Kconfig b/bsp/at32/at32f415-start/board/Kconfig
index 36065643af..08d9249efc 100644
--- a/bsp/at32/at32f415-start/board/Kconfig
+++ b/bsp/at32/at32f415-start/board/Kconfig
@@ -54,13 +54,28 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART1"
default y
+ config BSP_UART1_RX_USING_DMA
+ bool "Enable UART1 RX DMA"
+ depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART2
bool "Enable UART2"
default n
+ config BSP_UART2_RX_USING_DMA
+ bool "Enable UART2 RX DMA"
+ depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART3
bool "Enable UART3"
default n
+
+ config BSP_UART3_RX_USING_DMA
+ bool "Enable UART3 RX DMA"
+ depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
+ default n
endif
menuconfig BSP_USING_PWM
@@ -119,9 +134,31 @@ menu "On-chip Peripheral Drivers"
bool "Enable SPI1 BUS"
default n
+ config BSP_SPI1_TX_USING_DMA
+ bool "Enable SPI1 TX DMA"
+ depends on BSP_USING_SPI1
+ default n
+
+ config BSP_SPI1_RX_USING_DMA
+ bool "Enable SPI1 RX DMA"
+ depends on BSP_USING_SPI1
+ select BSP_SPI1_TX_USING_DMA
+ default n
+
config BSP_USING_SPI2
bool "Enable SPI2 BUS"
default n
+
+ config BSP_SPI2_TX_USING_DMA
+ bool "Enable SPI2 TX DMA"
+ depends on BSP_USING_SPI2
+ default n
+
+ config BSP_SPI2_RX_USING_DMA
+ bool "Enable SPI2 RX DMA"
+ depends on BSP_USING_SPI2
+ select BSP_SPI2_TX_USING_DMA
+ default n
endif
menuconfig BSP_USING_I2C
diff --git a/bsp/at32/at32f415-start/project.ewp b/bsp/at32/at32f415-start/project.ewp
index 9eb4b420d2..8b134fa3ea 100644
--- a/bsp/at32/at32f415-start/project.ewp
+++ b/bsp/at32/at32f415-start/project.ewp
@@ -351,6 +351,7 @@
<option>
<name>CCIncludePath2</name>
<state />
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
<state>$PROJ_DIR$\..\libraries\AT32F415_Firmware_Library\cmsis\cm4\core_support</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
@@ -358,11 +359,11 @@
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
<state>$PROJ_DIR$\board\inc</state>
<state>$PROJ_DIR$\..\..\..\components\drivers\include</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
+ <state>$PROJ_DIR$\..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support</state>
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
@@ -1395,6 +1396,7 @@
<option>
<name>CCIncludePath2</name>
<state />
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
<state>$PROJ_DIR$\..\libraries\AT32F415_Firmware_Library\cmsis\cm4\core_support</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
@@ -1402,11 +1404,11 @@
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
<state>$PROJ_DIR$\board\inc</state>
<state>$PROJ_DIR$\..\..\..\components\drivers\include</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\io\stdio</state>
+ <state>$PROJ_DIR$\..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support</state>
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
diff --git a/bsp/at32/at32f415-start/project.uvproj b/bsp/at32/at32f415-start/project.uvproj
index 37751951a8..68cf0d29ac 100644
--- a/bsp/at32/at32f415-start/project.uvproj
+++ b/bsp/at32/at32f415-start/project.uvproj
@@ -359,7 +359,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, RT_USING_ARM_LIBC, __RTTHREAD__, AT32F415RCT7</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F415_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F415_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f415-start/project.uvprojx b/bsp/at32/at32f415-start/project.uvprojx
index 32f1f4cc54..bb385cf455 100644
--- a/bsp/at32/at32f415-start/project.uvprojx
+++ b/bsp/at32/at32f415-start/project.uvprojx
@@ -335,7 +335,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, RT_USING_ARM_LIBC, __RTTHREAD__, AT32F415RCT7</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F415_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F415_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F415_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f415-start/rtconfig.h b/bsp/at32/at32f415-start/rtconfig.h
index a41d4337d0..c925428e57 100644
--- a/bsp/at32/at32f415-start/rtconfig.h
+++ b/bsp/at32/at32f415-start/rtconfig.h
@@ -129,67 +129,24 @@
/* language packages */
-/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
-
-
-/* XML: Extensible Markup Language */
-
/* multimedia packages */
-/* LVGL: powerful and easy-to-use embedded GUI library */
-
-
-/* u8g2: a monochrome graphic library */
-
-
-/* PainterEngine: A cross-platform graphics application framework written in C language */
-
/* tools packages */
/* system packages */
-/* enhanced kernel services */
-
-
-/* acceleration: Assembly language or algorithmic acceleration packages */
-
-
-/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
-
-
-/* Micrium: Micrium software products porting for RT-Thread */
-
/* peripheral libraries and drivers */
-/* Kendryte SDK */
-
-
-/* AI packages */
-
-
/* miscellaneous packages */
-/* project laboratory */
/* samples: kernel and components samples */
-
-/* entertainment: terminal games and other interesting software packages */
-
-
-/* Privated Packages of RealThread */
-
-
-/* Network Utilities */
-
-
-/* RT-Thread Smart */
-
#define SOC_FAMILY_AT32
#define SOC_SERIES_AT32F415
diff --git a/bsp/at32/at32f435-start/.config b/bsp/at32/at32f435-start/.config
index d8ed5f620e..42be08eabc 100644
--- a/bsp/at32/at32f435-start/.config
+++ b/bsp/at32/at32f435-start/.config
@@ -214,19 +214,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
#
# IoT - internet of things
#
-# CONFIG_PKG_USING_LWIP is not set
-# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
-# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_MYMQTT is not set
-# CONFIG_PKG_USING_KAWAII_MQTT is not set
-# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
#
@@ -246,12 +246,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
-# CONFIG_PKG_USING_CMUX is not set
# CONFIG_PKG_USING_PPP_DEVICE is not set
# CONFIG_PKG_USING_AT_DEVICE is not set
# CONFIG_PKG_USING_ATSRV_SOCKET is not set
# CONFIG_PKG_USING_WIZNET is not set
-# CONFIG_PKG_USING_ZB_COORDINATOR is not set
#
# IoT Cloud
@@ -260,14 +258,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
-# CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
# CONFIG_PKG_USING_NIMBLE is not set
-# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
# CONFIG_PKG_USING_IPMSG is not set
# CONFIG_PKG_USING_LSSDP is not set
@@ -275,111 +269,40 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_LIBRWS is not set
# CONFIG_PKG_USING_TCPSERVER is not set
# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
# CONFIG_PKG_USING_ABUP_FOTA is not set
# CONFIG_PKG_USING_LIBCURL2RTT is not set
# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
# CONFIG_PKG_USING_AGILE_TELNET is not set
-# CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_PDULIB is not set
-# CONFIG_PKG_USING_BTSTACK is not set
-# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
-# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
-# CONFIG_PKG_USING_MAVLINK is not set
-# CONFIG_PKG_USING_BSAL is not set
-# CONFIG_PKG_USING_AGILE_MODBUS is not set
-# CONFIG_PKG_USING_AGILE_FTP is not set
-# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
-# CONFIG_PKG_USING_RT_LINK_HW is not set
-# CONFIG_PKG_USING_LORA_PKT_FWD is not set
-# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
-# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
-# CONFIG_PKG_USING_HM is not set
-# CONFIG_PKG_USING_SMALL_MODBUS is not set
-# CONFIG_PKG_USING_NET_SERVER is not set
-# CONFIG_PKG_USING_ZFTP is not set
#
# security packages
#
# CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_LIBSODIUM is not set
-# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
-# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
#
-
-#
-# JSON: JavaScript Object Notation, a lightweight data-interchange format
-#
-# CONFIG_PKG_USING_CJSON is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
-# CONFIG_PKG_USING_RAPIDJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
-# CONFIG_PKG_USING_PARSON is not set
-
-#
-# XML: Extensible Markup Language
-#
-# CONFIG_PKG_USING_SIMPLE_XML is not set
-# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_LUATOS_SOC is not set
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
-# CONFIG_PKG_USING_PIKASCRIPT is not set
-# CONFIG_PKG_USING_RTT_RUST is not set
#
# multimedia packages
#
-
-#
-# LVGL: powerful and easy-to-use embedded GUI library
-#
-# CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
-
-#
-# u8g2: a monochrome graphic library
-#
-# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
-# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
-# CONFIG_PKG_USING_PDFGEN is not set
-# CONFIG_PKG_USING_HELIX is not set
-# CONFIG_PKG_USING_AZUREGUIX is not set
-# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
-# CONFIG_PKG_USING_NUEMWIN is not set
-# CONFIG_PKG_USING_MP3PLAYER is not set
-# CONFIG_PKG_USING_TINYJPEG is not set
-# CONFIG_PKG_USING_UGUI is not set
-
-#
-# PainterEngine: A cross-platform graphics application framework written in C language
-#
-# CONFIG_PKG_USING_PAINTERENGINE is not set
-# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
-# CONFIG_PKG_USING_MCURSES is not set
-# CONFIG_PKG_USING_TERMBOX is not set
-# CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_QRCODE is not set
-# CONFIG_PKG_USING_GUIENGINE is not set
-# CONFIG_PKG_USING_PERSIMMON is not set
#
# tools packages
@@ -388,115 +311,37 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_EASYFLASH is not set
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
-# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
-# CONFIG_PKG_USING_ULOG_FILE is not set
-# CONFIG_PKG_USING_LOGMGR is not set
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
# CONFIG_PKG_USING_DHRYSTONE is not set
-# CONFIG_PKG_USING_MEMORYPERF is not set
# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
-# CONFIG_PKG_USING_GPS_RMC is not set
-# CONFIG_PKG_USING_URLENCODE is not set
-# CONFIG_PKG_USING_UMCN is not set
-# CONFIG_PKG_USING_LWRB2RTT is not set
-# CONFIG_PKG_USING_CPU_USAGE is not set
-# CONFIG_PKG_USING_GBK2UTF8 is not set
-# CONFIG_PKG_USING_VCONSOLE is not set
-# CONFIG_PKG_USING_KDB is not set
-# CONFIG_PKG_USING_WAMR is not set
-# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
-# CONFIG_PKG_USING_LWLOG is not set
-# CONFIG_PKG_USING_ANV_TRACE is not set
-# CONFIG_PKG_USING_ANV_MEMLEAK is not set
-# CONFIG_PKG_USING_ANV_TESTSUIT is not set
-# CONFIG_PKG_USING_ANV_BENCH is not set
-# CONFIG_PKG_USING_DEVMEM is not set
-# CONFIG_PKG_USING_REGEX is not set
-# CONFIG_PKG_USING_MEM_SANDBOX is not set
-# CONFIG_PKG_USING_SOLAR_TERMS is not set
-# CONFIG_PKG_USING_GAN_ZHI is not set
-# CONFIG_PKG_USING_FDT is not set
-# CONFIG_PKG_USING_CBOX is not set
-# CONFIG_PKG_USING_SNOWFLAKE is not set
-# CONFIG_PKG_USING_HASH_MATCH is not set
-# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
#
# system packages
#
-
-#
-# enhanced kernel services
-#
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
-
-#
-# acceleration: Assembly language or algorithmic acceleration packages
-#
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
-
-#
-# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
-#
-# CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
-# CONFIG_PKG_USING_PERF_COUNTER is not set
-# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
-# CONFIG_PKG_USING_DFS_JFFS2 is not set
-# CONFIG_PKG_USING_DFS_UFFS is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
-# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
-# CONFIG_PKG_USING_PLCCORE is not set
-# CONFIG_PKG_USING_RAMDISK is not set
-# CONFIG_PKG_USING_MININI is not set
-# CONFIG_PKG_USING_QBOOT is not set
-# CONFIG_PKG_USING_PPOOL is not set
-# CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_LPM is not set
-# CONFIG_PKG_USING_TLSF is not set
-# CONFIG_PKG_USING_EVENT_RECORDER is not set
-# CONFIG_PKG_USING_ARM_2D is not set
-# CONFIG_PKG_USING_MCUBOOT is not set
-# CONFIG_PKG_USING_TINYUSB is not set
-# CONFIG_PKG_USING_CHERRYUSB is not set
-# CONFIG_PKG_USING_KMULTI_RTIMER is not set
-# CONFIG_PKG_USING_TFDB is not set
-# CONFIG_PKG_USING_QPC is not set
#
# peripheral libraries and drivers
@@ -505,29 +350,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
-# CONFIG_PKG_USING_AS7341 is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
# CONFIG_PKG_USING_SIGNAL_LED is not set
# CONFIG_PKG_USING_LEDBLINK is not set
# CONFIG_PKG_USING_LITTLED is not set
-# CONFIG_PKG_USING_LKDGUI is not set
-# CONFIG_PKG_USING_NRF5X_SDK is not set
-# CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AGILE_BUTTON is not set
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
@@ -541,185 +376,43 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
-# CONFIG_PKG_USING_WS2812B is not set
# CONFIG_PKG_USING_EMBARC_BSP is not set
-# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
-# CONFIG_PKG_USING_MULTI_RTIMER is not set
-# CONFIG_PKG_USING_MAX7219 is not set
-# CONFIG_PKG_USING_BEEP is not set
-# CONFIG_PKG_USING_EASYBLINK is not set
-# CONFIG_PKG_USING_PMS_SERIES is not set
-# CONFIG_PKG_USING_CAN_YMODEM is not set
-# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
-# CONFIG_PKG_USING_QLED is not set
-# CONFIG_PKG_USING_PAJ7620 is not set
-# CONFIG_PKG_USING_AGILE_CONSOLE is not set
-# CONFIG_PKG_USING_LD3320 is not set
-# CONFIG_PKG_USING_WK2124 is not set
-# CONFIG_PKG_USING_LY68L6400 is not set
-# CONFIG_PKG_USING_DM9051 is not set
-# CONFIG_PKG_USING_SSD1306 is not set
-# CONFIG_PKG_USING_QKEY is not set
-# CONFIG_PKG_USING_RS485 is not set
-# CONFIG_PKG_USING_RS232 is not set
-# CONFIG_PKG_USING_NES is not set
-# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
-# CONFIG_PKG_USING_VDEVICE is not set
-# CONFIG_PKG_USING_SGM706 is not set
-# CONFIG_PKG_USING_STM32WB55_SDK is not set
-# CONFIG_PKG_USING_RDA58XX is not set
-# CONFIG_PKG_USING_LIBNFC is not set
-# CONFIG_PKG_USING_MFOC is not set
-# CONFIG_PKG_USING_TMC51XX is not set
-# CONFIG_PKG_USING_TCA9534 is not set
-# CONFIG_PKG_USING_KOBUKI is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
-# CONFIG_PKG_USING_MICRO_ROS is not set
-# CONFIG_PKG_USING_MCP23008 is not set
-# CONFIG_PKG_USING_BLUETRUM_SDK is not set
-# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
-# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
-# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
-# CONFIG_PKG_USING_BL_MCU_SDK is not set
-# CONFIG_PKG_USING_SOFT_SERIAL is not set
-# CONFIG_PKG_USING_MB85RS16 is not set
-# CONFIG_PKG_USING_CW2015 is not set
-# CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
-
-#
-# AI packages
-#
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
-# CONFIG_PKG_USING_ELAPACK is not set
-# CONFIG_PKG_USING_ULAPACK is not set
-# CONFIG_PKG_USING_QUEST is not set
-# CONFIG_PKG_USING_NAXOS is not set
#
# miscellaneous packages
#
-
-#
-# project laboratory
-#
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# CONFIG_PKG_USING_CMATRIX is not set
-# CONFIG_PKG_USING_SL is not set
-# CONFIG_PKG_USING_CAL is not set
-# CONFIG_PKG_USING_ACLOCK is not set
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
-# CONFIG_PKG_USING_DONUT is not set
-# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
# CONFIG_PKG_USING_MINILZO is not set
# CONFIG_PKG_USING_QUICKLZ is not set
-# CONFIG_PKG_USING_LZMA is not set
# CONFIG_PKG_USING_MULTIBUTTON is not set
# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
# CONFIG_PKG_USING_CANFESTIVAL is not set
# CONFIG_PKG_USING_ZLIB is not set
-# CONFIG_PKG_USING_MINIZIP is not set
-# CONFIG_PKG_USING_HEATSHRINK is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
-# CONFIG_PKG_USING_CRCLIB is not set
-# CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_STATE_MACHINE is not set
-# CONFIG_PKG_USING_DESIGN_PATTERN is not set
-# CONFIG_PKG_USING_CONTROLLER is not set
-# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
-# CONFIG_PKG_USING_MFBD is not set
-# CONFIG_PKG_USING_SLCAN2RTT is not set
-# CONFIG_PKG_USING_SOEM is not set
-# CONFIG_PKG_USING_QPARAM is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
CONFIG_SOC_FAMILY_AT32=y
CONFIG_SOC_SERIES_AT32F435=y
diff --git a/bsp/at32/at32f435-start/board/Kconfig b/bsp/at32/at32f435-start/board/Kconfig
index 2c8a3e21db..e7e912c575 100644
--- a/bsp/at32/at32f435-start/board/Kconfig
+++ b/bsp/at32/at32f435-start/board/Kconfig
@@ -73,13 +73,28 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART1"
default y
+ config BSP_UART1_RX_USING_DMA
+ bool "Enable UART1 RX DMA"
+ depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART2
bool "Enable UART2"
default n
+ config BSP_UART2_RX_USING_DMA
+ bool "Enable UART2 RX DMA"
+ depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART3
bool "Enable UART3"
default n
+
+ config BSP_UART3_RX_USING_DMA
+ bool "Enable UART3 RX DMA"
+ depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
+ default n
endif
menuconfig BSP_USING_PWM
@@ -138,9 +153,31 @@ menu "On-chip Peripheral Drivers"
bool "Enable SPI1 BUS"
default n
+ config BSP_SPI1_TX_USING_DMA
+ bool "Enable SPI1 TX DMA"
+ depends on BSP_USING_SPI1
+ default n
+
+ config BSP_SPI1_RX_USING_DMA
+ bool "Enable SPI1 RX DMA"
+ depends on BSP_USING_SPI1
+ select BSP_SPI1_TX_USING_DMA
+ default n
+
config BSP_USING_SPI2
bool "Enable SPI2 BUS"
default n
+
+ config BSP_SPI2_TX_USING_DMA
+ bool "Enable SPI2 TX DMA"
+ depends on BSP_USING_SPI2
+ default n
+
+ config BSP_SPI2_RX_USING_DMA
+ bool "Enable SPI2 RX DMA"
+ depends on BSP_USING_SPI2
+ select BSP_SPI2_TX_USING_DMA
+ default n
endif
menuconfig BSP_USING_I2C
diff --git a/bsp/at32/at32f435-start/project.ewp b/bsp/at32/at32f435-start/project.ewp
index dda515510a..dc032a809b 100644
--- a/bsp/at32/at32f435-start/project.ewp
+++ b/bsp/at32/at32f435-start/project.ewp
@@ -352,6 +352,7 @@
<name>CCIncludePath2</name>
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -363,7 +364,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support</state>
@@ -1396,6 +1397,7 @@
<name>CCIncludePath2</name>
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -1407,7 +1409,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support</state>
diff --git a/bsp/at32/at32f435-start/project.uvproj b/bsp/at32/at32f435-start/project.uvproj
index a16d231bba..e5e52189cc 100644
--- a/bsp/at32/at32f435-start/project.uvproj
+++ b/bsp/at32/at32f435-start/project.uvproj
@@ -359,7 +359,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, AT32F435ZMT7, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f435-start/project.uvprojx b/bsp/at32/at32f435-start/project.uvprojx
index f95cb595e3..5f8623682a 100644
--- a/bsp/at32/at32f435-start/project.uvprojx
+++ b/bsp/at32/at32f435-start/project.uvprojx
@@ -335,7 +335,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, AT32F435ZMT7, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f435-start/rtconfig.h b/bsp/at32/at32f435-start/rtconfig.h
index c2dec9be24..c4ca86ec2e 100644
--- a/bsp/at32/at32f435-start/rtconfig.h
+++ b/bsp/at32/at32f435-start/rtconfig.h
@@ -129,67 +129,24 @@
/* language packages */
-/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
-
-
-/* XML: Extensible Markup Language */
-
/* multimedia packages */
-/* LVGL: powerful and easy-to-use embedded GUI library */
-
-
-/* u8g2: a monochrome graphic library */
-
-
-/* PainterEngine: A cross-platform graphics application framework written in C language */
-
/* tools packages */
/* system packages */
-/* enhanced kernel services */
-
-
-/* acceleration: Assembly language or algorithmic acceleration packages */
-
-
-/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
-
-
-/* Micrium: Micrium software products porting for RT-Thread */
-
/* peripheral libraries and drivers */
-/* Kendryte SDK */
-
-
-/* AI packages */
-
-
/* miscellaneous packages */
-/* project laboratory */
/* samples: kernel and components samples */
-
-/* entertainment: terminal games and other interesting software packages */
-
-
-/* Privated Packages of RealThread */
-
-
-/* Network Utilities */
-
-
-/* RT-Thread Smart */
-
#define SOC_FAMILY_AT32
#define SOC_SERIES_AT32F435
diff --git a/bsp/at32/at32f437-start/.config b/bsp/at32/at32f437-start/.config
index c316515432..8370c1c1d8 100644
--- a/bsp/at32/at32f437-start/.config
+++ b/bsp/at32/at32f437-start/.config
@@ -214,19 +214,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
#
# IoT - internet of things
#
-# CONFIG_PKG_USING_LWIP is not set
-# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
-# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_MYMQTT is not set
-# CONFIG_PKG_USING_KAWAII_MQTT is not set
-# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
#
@@ -246,12 +246,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
-# CONFIG_PKG_USING_CMUX is not set
# CONFIG_PKG_USING_PPP_DEVICE is not set
# CONFIG_PKG_USING_AT_DEVICE is not set
# CONFIG_PKG_USING_ATSRV_SOCKET is not set
# CONFIG_PKG_USING_WIZNET is not set
-# CONFIG_PKG_USING_ZB_COORDINATOR is not set
#
# IoT Cloud
@@ -260,14 +258,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
-# CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
# CONFIG_PKG_USING_NIMBLE is not set
-# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
# CONFIG_PKG_USING_IPMSG is not set
# CONFIG_PKG_USING_LSSDP is not set
@@ -275,111 +269,40 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_LIBRWS is not set
# CONFIG_PKG_USING_TCPSERVER is not set
# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
# CONFIG_PKG_USING_ABUP_FOTA is not set
# CONFIG_PKG_USING_LIBCURL2RTT is not set
# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
# CONFIG_PKG_USING_AGILE_TELNET is not set
-# CONFIG_PKG_USING_NMEALIB is not set
-# CONFIG_PKG_USING_PDULIB is not set
-# CONFIG_PKG_USING_BTSTACK is not set
-# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
-# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
-# CONFIG_PKG_USING_MAVLINK is not set
-# CONFIG_PKG_USING_BSAL is not set
-# CONFIG_PKG_USING_AGILE_MODBUS is not set
-# CONFIG_PKG_USING_AGILE_FTP is not set
-# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
-# CONFIG_PKG_USING_RT_LINK_HW is not set
-# CONFIG_PKG_USING_LORA_PKT_FWD is not set
-# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
-# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
-# CONFIG_PKG_USING_HM is not set
-# CONFIG_PKG_USING_SMALL_MODBUS is not set
-# CONFIG_PKG_USING_NET_SERVER is not set
-# CONFIG_PKG_USING_ZFTP is not set
#
# security packages
#
# CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_LIBSODIUM is not set
-# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
-# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
#
-
-#
-# JSON: JavaScript Object Notation, a lightweight data-interchange format
-#
-# CONFIG_PKG_USING_CJSON is not set
-# CONFIG_PKG_USING_LJSON is not set
-# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
-# CONFIG_PKG_USING_RAPIDJSON is not set
-# CONFIG_PKG_USING_JSMN is not set
-# CONFIG_PKG_USING_AGILE_JSMN is not set
-# CONFIG_PKG_USING_PARSON is not set
-
-#
-# XML: Extensible Markup Language
-#
-# CONFIG_PKG_USING_SIMPLE_XML is not set
-# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_LUATOS_SOC is not set
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
-# CONFIG_PKG_USING_PIKASCRIPT is not set
-# CONFIG_PKG_USING_RTT_RUST is not set
#
# multimedia packages
#
-
-#
-# LVGL: powerful and easy-to-use embedded GUI library
-#
-# CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
-
-#
-# u8g2: a monochrome graphic library
-#
-# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
-# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
-# CONFIG_PKG_USING_PDFGEN is not set
-# CONFIG_PKG_USING_HELIX is not set
-# CONFIG_PKG_USING_AZUREGUIX is not set
-# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
-# CONFIG_PKG_USING_NUEMWIN is not set
-# CONFIG_PKG_USING_MP3PLAYER is not set
-# CONFIG_PKG_USING_TINYJPEG is not set
-# CONFIG_PKG_USING_UGUI is not set
-
-#
-# PainterEngine: A cross-platform graphics application framework written in C language
-#
-# CONFIG_PKG_USING_PAINTERENGINE is not set
-# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
-# CONFIG_PKG_USING_MCURSES is not set
-# CONFIG_PKG_USING_TERMBOX is not set
-# CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_QRCODE is not set
-# CONFIG_PKG_USING_GUIENGINE is not set
-# CONFIG_PKG_USING_PERSIMMON is not set
#
# tools packages
@@ -388,115 +311,37 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_EASYFLASH is not set
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
-# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
-# CONFIG_PKG_USING_ULOG_FILE is not set
-# CONFIG_PKG_USING_LOGMGR is not set
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
# CONFIG_PKG_USING_DHRYSTONE is not set
-# CONFIG_PKG_USING_MEMORYPERF is not set
# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
-# CONFIG_PKG_USING_GPS_RMC is not set
-# CONFIG_PKG_USING_URLENCODE is not set
-# CONFIG_PKG_USING_UMCN is not set
-# CONFIG_PKG_USING_LWRB2RTT is not set
-# CONFIG_PKG_USING_CPU_USAGE is not set
-# CONFIG_PKG_USING_GBK2UTF8 is not set
-# CONFIG_PKG_USING_VCONSOLE is not set
-# CONFIG_PKG_USING_KDB is not set
-# CONFIG_PKG_USING_WAMR is not set
-# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
-# CONFIG_PKG_USING_LWLOG is not set
-# CONFIG_PKG_USING_ANV_TRACE is not set
-# CONFIG_PKG_USING_ANV_MEMLEAK is not set
-# CONFIG_PKG_USING_ANV_TESTSUIT is not set
-# CONFIG_PKG_USING_ANV_BENCH is not set
-# CONFIG_PKG_USING_DEVMEM is not set
-# CONFIG_PKG_USING_REGEX is not set
-# CONFIG_PKG_USING_MEM_SANDBOX is not set
-# CONFIG_PKG_USING_SOLAR_TERMS is not set
-# CONFIG_PKG_USING_GAN_ZHI is not set
-# CONFIG_PKG_USING_FDT is not set
-# CONFIG_PKG_USING_CBOX is not set
-# CONFIG_PKG_USING_SNOWFLAKE is not set
-# CONFIG_PKG_USING_HASH_MATCH is not set
-# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
#
# system packages
#
-
-#
-# enhanced kernel services
-#
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
-
-#
-# acceleration: Assembly language or algorithmic acceleration packages
-#
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
-
-#
-# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
-#
-# CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
-# CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
-# CONFIG_PKG_USING_PERF_COUNTER is not set
-# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
-# CONFIG_PKG_USING_DFS_JFFS2 is not set
-# CONFIG_PKG_USING_DFS_UFFS is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
-# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
-# CONFIG_PKG_USING_PLCCORE is not set
-# CONFIG_PKG_USING_RAMDISK is not set
-# CONFIG_PKG_USING_MININI is not set
-# CONFIG_PKG_USING_QBOOT is not set
-# CONFIG_PKG_USING_PPOOL is not set
-# CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_LPM is not set
-# CONFIG_PKG_USING_TLSF is not set
-# CONFIG_PKG_USING_EVENT_RECORDER is not set
-# CONFIG_PKG_USING_ARM_2D is not set
-# CONFIG_PKG_USING_MCUBOOT is not set
-# CONFIG_PKG_USING_TINYUSB is not set
-# CONFIG_PKG_USING_CHERRYUSB is not set
-# CONFIG_PKG_USING_KMULTI_RTIMER is not set
-# CONFIG_PKG_USING_TFDB is not set
-# CONFIG_PKG_USING_QPC is not set
#
# peripheral libraries and drivers
@@ -505,29 +350,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
-# CONFIG_PKG_USING_AS7341 is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
# CONFIG_PKG_USING_SIGNAL_LED is not set
# CONFIG_PKG_USING_LEDBLINK is not set
# CONFIG_PKG_USING_LITTLED is not set
-# CONFIG_PKG_USING_LKDGUI is not set
-# CONFIG_PKG_USING_NRF5X_SDK is not set
-# CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AGILE_BUTTON is not set
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
@@ -541,185 +376,43 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
-# CONFIG_PKG_USING_WS2812B is not set
# CONFIG_PKG_USING_EMBARC_BSP is not set
-# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
-# CONFIG_PKG_USING_MULTI_RTIMER is not set
-# CONFIG_PKG_USING_MAX7219 is not set
-# CONFIG_PKG_USING_BEEP is not set
-# CONFIG_PKG_USING_EASYBLINK is not set
-# CONFIG_PKG_USING_PMS_SERIES is not set
-# CONFIG_PKG_USING_CAN_YMODEM is not set
-# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
-# CONFIG_PKG_USING_QLED is not set
-# CONFIG_PKG_USING_PAJ7620 is not set
-# CONFIG_PKG_USING_AGILE_CONSOLE is not set
-# CONFIG_PKG_USING_LD3320 is not set
-# CONFIG_PKG_USING_WK2124 is not set
-# CONFIG_PKG_USING_LY68L6400 is not set
-# CONFIG_PKG_USING_DM9051 is not set
-# CONFIG_PKG_USING_SSD1306 is not set
-# CONFIG_PKG_USING_QKEY is not set
-# CONFIG_PKG_USING_RS485 is not set
-# CONFIG_PKG_USING_RS232 is not set
-# CONFIG_PKG_USING_NES is not set
-# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
-# CONFIG_PKG_USING_VDEVICE is not set
-# CONFIG_PKG_USING_SGM706 is not set
-# CONFIG_PKG_USING_STM32WB55_SDK is not set
-# CONFIG_PKG_USING_RDA58XX is not set
-# CONFIG_PKG_USING_LIBNFC is not set
-# CONFIG_PKG_USING_MFOC is not set
-# CONFIG_PKG_USING_TMC51XX is not set
-# CONFIG_PKG_USING_TCA9534 is not set
-# CONFIG_PKG_USING_KOBUKI is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
-# CONFIG_PKG_USING_MICRO_ROS is not set
-# CONFIG_PKG_USING_MCP23008 is not set
-# CONFIG_PKG_USING_BLUETRUM_SDK is not set
-# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
-# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
-# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
-# CONFIG_PKG_USING_BL_MCU_SDK is not set
-# CONFIG_PKG_USING_SOFT_SERIAL is not set
-# CONFIG_PKG_USING_MB85RS16 is not set
-# CONFIG_PKG_USING_CW2015 is not set
-# CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
-
-#
-# AI packages
-#
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
-# CONFIG_PKG_USING_ELAPACK is not set
-# CONFIG_PKG_USING_ULAPACK is not set
-# CONFIG_PKG_USING_QUEST is not set
-# CONFIG_PKG_USING_NAXOS is not set
#
# miscellaneous packages
#
-
-#
-# project laboratory
-#
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# CONFIG_PKG_USING_CMATRIX is not set
-# CONFIG_PKG_USING_SL is not set
-# CONFIG_PKG_USING_CAL is not set
-# CONFIG_PKG_USING_ACLOCK is not set
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
-# CONFIG_PKG_USING_DONUT is not set
-# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
# CONFIG_PKG_USING_MINILZO is not set
# CONFIG_PKG_USING_QUICKLZ is not set
-# CONFIG_PKG_USING_LZMA is not set
# CONFIG_PKG_USING_MULTIBUTTON is not set
# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
# CONFIG_PKG_USING_CANFESTIVAL is not set
# CONFIG_PKG_USING_ZLIB is not set
-# CONFIG_PKG_USING_MINIZIP is not set
-# CONFIG_PKG_USING_HEATSHRINK is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
-# CONFIG_PKG_USING_CRCLIB is not set
-# CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_STATE_MACHINE is not set
-# CONFIG_PKG_USING_DESIGN_PATTERN is not set
-# CONFIG_PKG_USING_CONTROLLER is not set
-# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
-# CONFIG_PKG_USING_MFBD is not set
-# CONFIG_PKG_USING_SLCAN2RTT is not set
-# CONFIG_PKG_USING_SOEM is not set
-# CONFIG_PKG_USING_QPARAM is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
CONFIG_SOC_FAMILY_AT32=y
CONFIG_SOC_SERIES_AT32F437=y
diff --git a/bsp/at32/at32f437-start/README.md b/bsp/at32/at32f437-start/README.md
index 7aecb1536b..dabd8e801e 100644
--- a/bsp/at32/at32f437-start/README.md
+++ b/bsp/at32/at32f437-start/README.md
@@ -63,8 +63,8 @@ AT32F437-START板级包支持MDK4﹑MDK5﹑IAR开发环境和GCC编译器,以�
| PD15 | LED4 |
| PA9 | USART1_TX |
| PA10 | USART1_RX |
-| PA2 | USART2_TX |
-| PA3 | USART2_RX |
+| PD5 | USART2_TX |
+| PD6 | USART2_RX |
| PB10 | USART3_TX |
| PB11 | USART3_RX |
| PA4 | SPI1_NSS |
diff --git a/bsp/at32/at32f437-start/board/Kconfig b/bsp/at32/at32f437-start/board/Kconfig
index b776525ecf..7f6f34668f 100644
--- a/bsp/at32/at32f437-start/board/Kconfig
+++ b/bsp/at32/at32f437-start/board/Kconfig
@@ -90,13 +90,28 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART1"
default y
+ config BSP_UART1_RX_USING_DMA
+ bool "Enable UART1 RX DMA"
+ depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART2
bool "Enable UART2"
default n
+ config BSP_UART2_RX_USING_DMA
+ bool "Enable UART2 RX DMA"
+ depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
+ default n
+
config BSP_USING_UART3
bool "Enable UART3"
default n
+
+ config BSP_UART3_RX_USING_DMA
+ bool "Enable UART3 RX DMA"
+ depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
+ default n
endif
menuconfig BSP_USING_PWM
@@ -155,9 +170,31 @@ menu "On-chip Peripheral Drivers"
bool "Enable SPI1 BUS"
default n
+ config BSP_SPI1_TX_USING_DMA
+ bool "Enable SPI1 TX DMA"
+ depends on BSP_USING_SPI1
+ default n
+
+ config BSP_SPI1_RX_USING_DMA
+ bool "Enable SPI1 RX DMA"
+ depends on BSP_USING_SPI1
+ select BSP_SPI1_TX_USING_DMA
+ default n
+
config BSP_USING_SPI2
bool "Enable SPI2 BUS"
default n
+
+ config BSP_SPI2_TX_USING_DMA
+ bool "Enable SPI2 TX DMA"
+ depends on BSP_USING_SPI2
+ default n
+
+ config BSP_SPI2_RX_USING_DMA
+ bool "Enable SPI2 RX DMA"
+ depends on BSP_USING_SPI2
+ select BSP_SPI2_TX_USING_DMA
+ default n
endif
menuconfig BSP_USING_I2C
diff --git a/bsp/at32/at32f437-start/board/src/at32_msp.c b/bsp/at32/at32f437-start/board/src/at32_msp.c
index 8ba756b31c..171e0500f7 100644
--- a/bsp/at32/at32f437-start/board/src/at32_msp.c
+++ b/bsp/at32/at32f437-start/board/src/at32_msp.c
@@ -6,6 +6,7 @@
* Change Logs:
* Date Author Notes
* 2022-03-28 shelton first version
+ * 2022-12-05 shelton uart2 pins change to pd5/pd6
*/
#include <rtthread.h>
@@ -40,16 +41,16 @@ void at32_msp_usart_init(void *instance)
if(usart_x == USART2)
{
crm_periph_clock_enable(CRM_USART2_PERIPH_CLOCK, TRUE);
- crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
+ crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE);
gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
- gpio_init_struct.gpio_pins = GPIO_PINS_2 | GPIO_PINS_3;
- gpio_init(GPIOA, &gpio_init_struct);
+ gpio_init_struct.gpio_pins = GPIO_PINS_5 | GPIO_PINS_6;
+ gpio_init(GPIOD, &gpio_init_struct);
- gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE2, GPIO_MUX_7);
- gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE3, GPIO_MUX_7);
+ gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE5, GPIO_MUX_7);
+ gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE6, GPIO_MUX_7);
}
#endif
#ifdef BSP_USING_UART3
diff --git a/bsp/at32/at32f437-start/project.ewp b/bsp/at32/at32f437-start/project.ewp
index c388e6c167..49f58ac7a7 100644
--- a/bsp/at32/at32f437-start/project.ewp
+++ b/bsp/at32/at32f437-start/project.ewp
@@ -352,6 +352,7 @@
<name>CCIncludePath2</name>
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -363,7 +364,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support</state>
@@ -1396,6 +1397,7 @@
<name>CCIncludePath2</name>
<state />
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension\fcntl\octal</state>
+ <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
<state>$PROJ_DIR$\..\..\..\components\finsh</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\common</state>
<state>$PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4</state>
@@ -1407,7 +1409,7 @@
<state>$PROJ_DIR$\..\libraries\rt_drivers</state>
<state>$PROJ_DIR$\.</state>
<state>$PROJ_DIR$\applications</state>
- <state>$PROJ_DIR$\..\..\..\components\libc\posix\ipc</state>
+ <state>$PROJ_DIR$\..\libraries\rt_drivers\config</state>
<state>$PROJ_DIR$\..\..\..\components\libc\posix\io\poll</state>
<state>$PROJ_DIR$\..\..\..\components\libc\compilers\common\extension</state>
<state>$PROJ_DIR$\..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support</state>
diff --git a/bsp/at32/at32f437-start/project.uvproj b/bsp/at32/at32f437-start/project.uvproj
index 30bb7a7dae..85922c17e7 100644
--- a/bsp/at32/at32f437-start/project.uvproj
+++ b/bsp/at32/at32f437-start/project.uvproj
@@ -359,7 +359,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, AT32F437ZMT7, __RTTHREAD__, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f437-start/project.uvprojx b/bsp/at32/at32f437-start/project.uvprojx
index 3abb5db13b..38b5e00e63 100644
--- a/bsp/at32/at32f437-start/project.uvprojx
+++ b/bsp/at32/at32f437-start/project.uvprojx
@@ -335,7 +335,7 @@
<MiscControls />
<Define>__STDC_LIMIT_MACROS, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, AT32F437ZMT7, __RTTHREAD__, RT_USING_ARM_LIBC</Define>
<Undefine />
- <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
+ <IncludePath>applications;.;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\inc;..\libraries\rt_drivers;..\libraries\rt_drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\device_support;..\libraries\AT32F435_437_Firmware_Library\cmsis\cm4\core_support;..\libraries\AT32F435_437_Firmware_Library\drivers\inc;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc</IncludePath>
</VariousControls>
</Cads>
<Aads>
diff --git a/bsp/at32/at32f437-start/rtconfig.h b/bsp/at32/at32f437-start/rtconfig.h
index 651f9881a5..bad2e76382 100644
--- a/bsp/at32/at32f437-start/rtconfig.h
+++ b/bsp/at32/at32f437-start/rtconfig.h
@@ -129,67 +129,24 @@
/* language packages */
-/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
-
-
-/* XML: Extensible Markup Language */
-
/* multimedia packages */
-/* LVGL: powerful and easy-to-use embedded GUI library */
-
-
-/* u8g2: a monochrome graphic library */
-
-
-/* PainterEngine: A cross-platform graphics application framework written in C language */
-
/* tools packages */
/* system packages */
-/* enhanced kernel services */
-
-
-/* acceleration: Assembly language or algorithmic acceleration packages */
-
-
-/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
-
-
-/* Micrium: Micrium software products porting for RT-Thread */
-
/* peripheral libraries and drivers */
-/* Kendryte SDK */
-
-
-/* AI packages */
-
-
/* miscellaneous packages */
-/* project laboratory */
/* samples: kernel and components samples */
-
-/* entertainment: terminal games and other interesting software packages */
-
-
-/* Privated Packages of RealThread */
-
-
-/* Network Utilities */
-
-
-/* RT-Thread Smart */
-
#define SOC_FAMILY_AT32
#define SOC_SERIES_AT32F437
diff --git a/bsp/at32/libraries/rt_drivers/SConscript b/bsp/at32/libraries/rt_drivers/SConscript
index ff23217a47..2e96d36ac5 100644
--- a/bsp/at32/libraries/rt_drivers/SConscript
+++ b/bsp/at32/libraries/rt_drivers/SConscript
@@ -59,8 +59,9 @@ if GetDepend(['BSP_USING_CAN']):
if GetDepend(['BSP_USING_SDIO']):
src += ['drv_sdio.c']
-CPPPATH = [cwd]
+path = [cwd]
+path += [cwd + '/config']
-group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
+group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path)
Return('group')
diff --git a/bsp/at32/libraries/rt_drivers/config/f403a_407/dma_config.h b/bsp/at32/libraries/rt_drivers/config/f403a_407/dma_config.h
new file mode 100644
index 0000000000..cbbda889da
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f403a_407/dma_config.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __DMA_CONFIG_H__
+#define __DMA_CONFIG_H__
+
+#include <rtthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DMA1 channel1 */
+/* DMA1 channel2 */
+#if defined(BSP_SPI1_RX_USING_DMA) && !defined(SPI1_RX_DMA_CHANNEL)
+#define SPI1_RX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define SPI1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_RX_DMA_CHANNEL DMA1_CHANNEL2
+#define SPI1_RX_DMA_IRQ DMA1_Channel2_IRQn
+#elif defined(BSP_UART3_TX_USING_DMA) && !defined(UART3_TX_DMA_CHANNEL)
+#define UART3_TX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define UART3_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_TX_DMA_CHANNEL DMA1_CHANNEL2
+#define UART3_TX_DMA_IRQ DMA1_Channel2_IRQn
+#endif
+
+/* DMA1 channel3 */
+#if defined(BSP_SPI1_TX_USING_DMA) && !defined(SPI1_TX_DMA_CHANNEL)
+#define SPI1_TX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define SPI1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_TX_DMA_CHANNEL DMA1_CHANNEL3
+#define SPI1_TX_DMA_IRQ DMA1_Channel3_IRQn
+#elif defined(BSP_UART3_RX_USING_DMA) && !defined(UART3_RX_DMA_CHANNEL)
+#define UART3_RX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define UART3_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_RX_DMA_CHANNEL DMA1_CHANNEL3
+#define UART3_RX_DMA_IRQ DMA1_Channel3_IRQn
+#endif
+
+/* DMA1 channel4 */
+#if defined(BSP_SPI2_RX_USING_DMA) && !defined(SPI2_RX_DMA_CHANNEL)
+#define SPI2_RX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define SPI2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_RX_DMA_CHANNEL DMA1_CHANNEL4
+#define SPI2_RX_DMA_IRQ DMA1_Channel4_IRQn
+#elif defined(BSP_UART1_TX_USING_DMA) && !defined(UART1_TX_DMA_CHANNEL)
+#define UART1_TX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define UART1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_TX_DMA_CHANNEL DMA1_CHANNEL4
+#define UART1_TX_DMA_IRQ DMA1_Channel4_IRQn
+#endif
+
+/* DMA1 channel5 */
+#if defined(BSP_SPI2_TX_USING_DMA) && !defined(SPI2_TX_DMA_CHANNEL)
+#define SPI2_TX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define SPI2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_TX_DMA_CHANNEL DMA1_CHANNEL5
+#define SPI2_TX_DMA_IRQ DMA1_Channel5_IRQn
+
+#elif defined(BSP_UART1_RX_USING_DMA) && !defined(UART1_RX_DMA_CHANNEL)
+#define UART1_RX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define UART1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_RX_DMA_CHANNEL DMA1_CHANNEL5
+#define UART1_RX_DMA_IRQ DMA1_Channel5_IRQn
+#endif
+
+/* DMA1 channel6 */
+#if defined(BSP_UART2_RX_USING_DMA) && !defined(UART2_RX_DMA_CHANNEL)
+#define UART2_RX_DMA_IRQHandler DMA1_Channel6_IRQHandler
+#define UART2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_RX_DMA_CHANNEL DMA1_CHANNEL6
+#define UART2_RX_DMA_IRQ DMA1_Channel6_IRQn
+#endif
+
+/* DMA1 channel7 */
+#if defined(BSP_UART2_TX_USING_DMA) && !defined(UART2_TX_DMA_CHANNEL)
+#define UART2_TX_DMA_IRQHandler DMA1_Channel7_IRQHandler
+#define UART2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_TX_DMA_CHANNEL DMA1_CHANNEL7
+#define UART2_TX_DMA_IRQ DMA1_Channel7_IRQn
+#endif
+
+/* DMA2 channel1 */
+#if defined(BSP_SPI3_RX_USING_DMA) && !defined(SPI3_RX_DMA_CHANNEL)
+#define SPI3_RX_DMA_IRQHandler DMA2_Channel1_IRQHandler
+#define SPI3_RX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define SPI3_RX_DMA_CHANNEL DMA2_CHANNEL1
+#define SPI3_RX_DMA_IRQ DMA2_Channel1_IRQn
+#endif
+
+/* DMA2 channel2 */
+#if defined(BSP_SPI3_TX_USING_DMA) && !defined(SPI3_TX_DMA_CHANNEL)
+#define SPI3_TX_DMA_IRQHandler DMA2_Channel2_IRQHandler
+#define SPI3_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define SPI3_TX_DMA_CHANNEL DMA2_CHANNEL2
+#define SPI3_TX_DMA_IRQ DMA2_Channel2_IRQn
+#endif
+
+/* DMA2 channel3 */
+#if defined(BSP_SPI4_RX_USING_DMA) && !defined(SPI4_RX_DMA_CHANNEL)
+#define SPI4_RX_DMA_IRQHandler DMA2_Channel3_IRQHandler
+#define SPI4_RX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define SPI4_RX_DMA_CHANNEL DMA2_CHANNEL3
+#define SPI4_RX_DMA_IRQ DMA2_Channel3_IRQn
+#elif defined(BSP_UART4_RX_USING_DMA) && !defined(UART4_RX_DMA_CHANNEL)
+#define UART4_RX_DMA_IRQHandler DMA2_Channel3_IRQHandler
+#define UART4_RX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART4_RX_DMA_CHANNEL DMA2_CHANNEL3
+#define UART4_RX_DMA_IRQ DMA2_Channel3_IRQn
+#endif
+
+/* DMA2 channel4 */
+/* DMA2 channel5 */
+#if defined(BSP_SPI4_TX_USING_DMA) && !defined(SPI4_TX_DMA_CHANNEL)
+#define SPI4_TX_DMA_IRQHandler DMA2_Channel4_5_IRQHandler
+#define SPI4_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define SPI4_TX_DMA_CHANNEL DMA2_CHANNEL5
+#define SPI4_TX_DMA_IRQ DMA2_Channel4_5_IRQn
+#elif defined(BSP_UART4_TX_USING_DMA) && !defined(UART4_TX_DMA_CHANNEL)
+#define UART4_TX_DMA_IRQHandler DMA2_Channel4_5_IRQHandler
+#define UART4_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART4_TX_DMA_CHANNEL DMA2_CHANNEL5
+#define UART4_TX_DMA_IRQ DMA2_Channel4_5_IRQn
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DMA_CONFIG_H__ */
diff --git a/bsp/at32/libraries/rt_drivers/config/f403a_407/spi_config.h b/bsp/at32/libraries/rt_drivers/config/f403a_407/spi_config.h
new file mode 100644
index 0000000000..ee69db916c
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f403a_407/spi_config.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-18 shelton first version
+ */
+
+#ifndef __SPI_CONFIG_H__
+#define __SPI_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SPI1_IRQHandler SPI1_IRQHandler
+#define SPI2_IRQHandler SPI2_I2S2EXT_IRQHandler
+#define SPI3_IRQHandler SPI3_I2S3EXT_IRQHandler
+#define SPI4_IRQHandler SPI4_IRQHandler
+
+#ifdef BSP_USING_SPI1
+#define SPI1_CONFIG \
+ { \
+ .spi_x = SPI1, \
+ .spi_name = "spi1", \
+ .irqn = SPI1_IRQn, \
+ }
+#endif /* BSP_USING_SPI1 */
+
+#ifdef BSP_SPI1_RX_USING_DMA
+#define SPI1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_RX_DMA_CHANNEL, \
+ .dma_clock = SPI1_RX_DMA_CLOCK, \
+ .dma_irqn = SPI1_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI1_RX_USING_DMA */
+
+#ifdef BSP_SPI1_TX_USING_DMA
+#define SPI1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_TX_DMA_CHANNEL, \
+ .dma_clock = SPI1_TX_DMA_CLOCK, \
+ .dma_irqn = SPI1_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI1_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI2
+#define SPI2_CONFIG \
+ { \
+ .spi_x = SPI2, \
+ .spi_name = "spi2", \
+ .irqn = SPI2_I2S2EXT_IRQn, \
+ }
+#endif /* BSP_USING_SPI2 */
+
+#ifdef BSP_SPI2_RX_USING_DMA
+#define SPI2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_RX_DMA_CHANNEL, \
+ .dma_clock = SPI2_RX_DMA_CLOCK, \
+ .dma_irqn = SPI2_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI2_RX_USING_DMA */
+
+#ifdef BSP_SPI2_TX_USING_DMA
+#define SPI2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_TX_DMA_CHANNEL, \
+ .dma_clock = SPI2_TX_DMA_CLOCK, \
+ .dma_irqn = SPI2_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI2_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI3
+#define SPI3_CONFIG \
+ { \
+ .spi_x = SPI3, \
+ .spi_name = "spi3", \
+ .irqn = SPI3_I2S3EXT_IRQn, \
+ }
+#endif /* BSP_USING_SPI3 */
+
+#ifdef BSP_SPI3_RX_USING_DMA
+#define SPI3_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI3_RX_DMA_CHANNEL, \
+ .dma_clock = SPI3_RX_DMA_CLOCK, \
+ .dma_irqn = SPI3_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI3_RX_USING_DMA */
+
+#ifdef BSP_SPI3_TX_USING_DMA
+#define SPI3_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI3_TX_DMA_CHANNEL, \
+ .dma_clock = SPI3_TX_DMA_CLOCK, \
+ .dma_irqn = SPI3_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI3_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI4
+#define SPI4_CONFIG \
+ { \
+ .spi_x = SPI4, \
+ .spi_name = "spi4", \
+ .irqn = SPI4_IRQn, \
+ }
+#endif /* BSP_USING_SPI4 */
+
+#ifdef BSP_SPI4_RX_USING_DMA
+#define SPI4_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI4_RX_DMA_CHANNEL, \
+ .dma_clock = SPI4_RX_DMA_CLOCK, \
+ .dma_irqn = SPI4_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI4_RX_USING_DMA */
+
+#ifdef BSP_SPI4_TX_USING_DMA
+#define SPI4_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI4_TX_DMA_CHANNEL, \
+ .dma_clock = SPI4_TX_DMA_CLOCK, \
+ .dma_irqn = SPI4_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI4_TX_USING_DMA */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__SPI_CONFIG_H__ */
+
+
+
diff --git a/bsp/at32/libraries/rt_drivers/config/f403a_407/uart_config.h b/bsp/at32/libraries/rt_drivers/config/f403a_407/uart_config.h
new file mode 100644
index 0000000000..53f155892d
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f403a_407/uart_config.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __UART_CONFIG_H__
+#define __UART_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(BSP_USING_UART1)
+#define UART1_CONFIG \
+ { \
+ .name = "uart1", \
+ .uart_x = USART1, \
+ .irqn = USART1_IRQn, \
+ }
+
+#if defined(BSP_UART1_RX_USING_DMA)
+#define UART1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_RX_DMA_CHANNEL, \
+ .dma_clock = UART1_RX_DMA_CLOCK, \
+ .dma_irqn = UART1_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART1_RX_USING_DMA */
+
+#if defined(BSP_UART1_TX_USING_DMA)
+#define UART1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_TX_DMA_CHANNEL, \
+ .dma_clock = UART1_TX_DMA_CLOCK, \
+ .dma_irqn = UART1_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART1_TX_USING_DMA */
+#endif /* BSP_USING_UART1 */
+
+#if defined(BSP_USING_UART2)
+#define UART2_CONFIG \
+ { \
+ .name = "uart2", \
+ .uart_x = USART2, \
+ .irqn = USART2_IRQn, \
+ }
+
+#if defined(BSP_UART2_RX_USING_DMA)
+#define UART2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_RX_DMA_CHANNEL, \
+ .dma_clock = UART2_RX_DMA_CLOCK, \
+ .dma_irqn = UART2_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART2_RX_USING_DMA */
+
+#if defined(BSP_UART2_TX_USING_DMA)
+#define UART2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_TX_DMA_CHANNEL, \
+ .dma_clock = UART2_TX_DMA_CLOCK, \
+ .dma_irqn = UART2_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART2_TX_USING_DMA */
+#endif /* BSP_USING_UART2 */
+
+#if defined(BSP_USING_UART3)
+#define UART3_CONFIG \
+ { \
+ .name = "uart3", \
+ .uart_x = USART3, \
+ .irqn = USART3_IRQn, \
+ }
+
+#if defined(BSP_UART3_RX_USING_DMA)
+#define UART3_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_RX_DMA_CHANNEL, \
+ .dma_clock = UART3_RX_DMA_CLOCK, \
+ .dma_irqn = UART3_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART3_RX_USING_DMA */
+
+#if defined(BSP_UART3_TX_USING_DMA)
+#define UART3_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_TX_DMA_CHANNEL, \
+ .dma_clock = UART3_TX_DMA_CLOCK, \
+ .dma_irqn = UART3_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART3_TX_USING_DMA */
+#endif /* BSP_USING_UART3 */
+
+#if defined(BSP_USING_UART4)
+#define UART4_CONFIG \
+ { \
+ .name = "uart4", \
+ .uart_x = UART4, \
+ .irqn = UART4_IRQn, \
+ }
+
+#if defined(BSP_UART4_RX_USING_DMA)
+#define UART4_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_RX_DMA_CHANNEL, \
+ .dma_clock = UART4_RX_DMA_CLOCK, \
+ .dma_irqn = UART4_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART4_RX_USING_DMA */
+
+#if defined(BSP_UART4_TX_USING_DMA)
+#define UART4_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_TX_DMA_CHANNEL, \
+ .dma_clock = UART4_TX_DMA_CLOCK, \
+ .dma_irqn = UART4_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART4_TX_USING_DMA */
+#endif /* BSP_USING_UART4 */
+
+#if defined(BSP_USING_UART5)
+#define UART5_CONFIG \
+ { \
+ .name = "uart5", \
+ .uart_x = UART5, \
+ .irqn = UART5_IRQn, \
+ }
+#endif /* BSP_USING_UART5 */
+
+#if defined(BSP_USING_UART6)
+#define UART6_CONFIG \
+ { \
+ .name = "usart6", \
+ .uart_x = UART6, \
+ .irqn = USART6_IRQn, \
+ }
+#endif /* BSP_USING_UART6 */
+
+#if defined(BSP_USING_UART7)
+#define UART7_CONFIG \
+ { \
+ .name = "uart7", \
+ .uart_x = UART7, \
+ .irqn = UART7_IRQn, \
+ }
+#endif /* BSP_USING_UART7 */
+
+#if defined(BSP_USING_UART8)
+#define UART8_CONFIG \
+ { \
+ .name = "uart8", \
+ .uart_x = UART8, \
+ .irqn = UART8_IRQn, \
+ }
+#endif /* BSP_USING_UART8 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsp/at32/libraries/rt_drivers/config/f413/dma_config.h b/bsp/at32/libraries/rt_drivers/config/f413/dma_config.h
new file mode 100644
index 0000000000..5dd80c2422
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f413/dma_config.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __DMA_CONFIG_H__
+#define __DMA_CONFIG_H__
+
+#include <rtthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DMA1 channel1 */
+/* DMA1 channel2 */
+#if defined(BSP_SPI1_RX_USING_DMA) && !defined(SPI1_RX_DMA_CHANNEL)
+#define SPI1_RX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define SPI1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_RX_DMA_CHANNEL DMA1_CHANNEL2
+#define SPI1_RX_DMA_IRQ DMA1_Channel2_IRQn
+#elif defined(BSP_UART3_TX_USING_DMA) && !defined(UART3_TX_DMA_CHANNEL)
+#define UART3_TX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define UART3_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_TX_DMA_CHANNEL DMA1_CHANNEL2
+#define UART3_TX_DMA_IRQ DMA1_Channel2_IRQn
+#endif
+
+/* DMA1 channel3 */
+#if defined(BSP_SPI1_TX_USING_DMA) && !defined(SPI1_TX_DMA_CHANNEL)
+#define SPI1_TX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define SPI1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_TX_DMA_CHANNEL DMA1_CHANNEL3
+#define SPI1_TX_DMA_IRQ DMA1_Channel3_IRQn
+#elif defined(BSP_UART3_RX_USING_DMA) && !defined(UART3_RX_DMA_CHANNEL)
+#define UART3_RX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define UART3_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_RX_DMA_CHANNEL DMA1_CHANNEL3
+#define UART3_RX_DMA_IRQ DMA1_Channel3_IRQn
+#endif
+
+/* DMA1 channel4 */
+#if defined(BSP_SPI2_RX_USING_DMA) && !defined(SPI2_RX_DMA_CHANNEL)
+#define SPI2_RX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define SPI2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_RX_DMA_CHANNEL DMA1_CHANNEL4
+#define SPI2_RX_DMA_IRQ DMA1_Channel4_IRQn
+#elif defined(BSP_UART1_TX_USING_DMA) && !defined(UART1_TX_DMA_CHANNEL)
+#define UART1_TX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define UART1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_TX_DMA_CHANNEL DMA1_CHANNEL4
+#define UART1_TX_DMA_IRQ DMA1_Channel4_IRQn
+#endif
+
+/* DMA1 channel5 */
+#if defined(BSP_SPI2_TX_USING_DMA) && !defined(SPI2_TX_DMA_CHANNEL)
+#define SPI2_TX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define SPI2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_TX_DMA_CHANNEL DMA1_CHANNEL5
+#define SPI2_TX_DMA_IRQ DMA1_Channel5_IRQn
+
+#elif defined(BSP_UART1_RX_USING_DMA) && !defined(UART1_RX_DMA_CHANNEL)
+#define UART1_RX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define UART1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_RX_DMA_CHANNEL DMA1_CHANNEL5
+#define UART1_RX_DMA_IRQ DMA1_Channel5_IRQn
+#endif
+
+/* DMA1 channel6 */
+#if defined(BSP_UART2_RX_USING_DMA) && !defined(UART2_RX_DMA_CHANNEL)
+#define UART2_RX_DMA_IRQHandler DMA1_Channel6_IRQHandler
+#define UART2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_RX_DMA_CHANNEL DMA1_CHANNEL6
+#define UART2_RX_DMA_IRQ DMA1_Channel6_IRQn
+#endif
+
+/* DMA1 channel7 */
+#if defined(BSP_UART2_TX_USING_DMA) && !defined(UART2_TX_DMA_CHANNEL)
+#define UART2_TX_DMA_IRQHandler DMA1_Channel7_IRQHandler
+#define UART2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_TX_DMA_CHANNEL DMA1_CHANNEL7
+#define UART2_TX_DMA_IRQ DMA1_Channel7_IRQn
+#endif
+
+/* DMA2 channel3 */
+#if defined(BSP_UART4_RX_USING_DMA) && !defined(UART4_RX_DMA_CHANNEL)
+#define UART4_RX_DMA_IRQHandler DMA2_Channel3_IRQHandler
+#define UART4_RX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART4_RX_DMA_CHANNEL DMA2_CHANNEL3
+#define UART4_RX_DMA_IRQ DMA2_Channel3_IRQn
+#endif
+/* DMA2 channel4 */
+/* DMA2 channel5 */
+#if defined(BSP_UART4_TX_USING_DMA) && !defined(UART4_TX_DMA_CHANNEL)
+#define UART4_TX_DMA_IRQHandler DMA2_Channel4_5_IRQHandler
+#define UART4_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART4_TX_DMA_CHANNEL DMA2_CHANNEL5
+#define UART4_TX_DMA_IRQ DMA2_Channel4_5_IRQn
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DMA_CONFIG_H__ */
diff --git a/bsp/at32/libraries/rt_drivers/config/f413/spi_config.h b/bsp/at32/libraries/rt_drivers/config/f413/spi_config.h
new file mode 100644
index 0000000000..7f1c857e23
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f413/spi_config.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-18 shelton first version
+ */
+
+#ifndef __SPI_CONFIG_H__
+#define __SPI_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SPI1_IRQHandler SPI1_IRQHandler
+#define SPI2_IRQHandler SPI2_IRQHandler
+
+#ifdef BSP_USING_SPI1
+#define SPI1_CONFIG \
+ { \
+ .spi_x = SPI1, \
+ .spi_name = "spi1", \
+ .irqn = SPI1_IRQn, \
+ }
+#endif /* BSP_USING_SPI1 */
+
+#ifdef BSP_SPI1_RX_USING_DMA
+#define SPI1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_RX_DMA_CHANNEL, \
+ .dma_clock = SPI1_RX_DMA_CLOCK, \
+ .dma_irqn = SPI1_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI1_RX_USING_DMA */
+
+#ifdef BSP_SPI1_TX_USING_DMA
+#define SPI1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_TX_DMA_CHANNEL, \
+ .dma_clock = SPI1_TX_DMA_CLOCK, \
+ .dma_irqn = SPI1_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI1_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI2
+#define SPI2_CONFIG \
+ { \
+ .spi_x = SPI2, \
+ .spi_name = "spi2", \
+ .irqn = SPI2_IRQn, \
+ }
+#endif /* BSP_USING_SPI2 */
+
+#ifdef BSP_SPI2_RX_USING_DMA
+#define SPI2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_RX_DMA_CHANNEL, \
+ .dma_clock = SPI2_RX_DMA_CLOCK, \
+ .dma_irqn = SPI2_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI2_RX_USING_DMA */
+
+#ifdef BSP_SPI2_TX_USING_DMA
+#define SPI2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_TX_DMA_CHANNEL, \
+ .dma_clock = SPI2_TX_DMA_CLOCK, \
+ .dma_irqn = SPI2_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI2_TX_USING_DMA */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__SPI_CONFIG_H__ */
diff --git a/bsp/at32/libraries/rt_drivers/config/f413/uart_config.h b/bsp/at32/libraries/rt_drivers/config/f413/uart_config.h
new file mode 100644
index 0000000000..53f155892d
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f413/uart_config.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __UART_CONFIG_H__
+#define __UART_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(BSP_USING_UART1)
+#define UART1_CONFIG \
+ { \
+ .name = "uart1", \
+ .uart_x = USART1, \
+ .irqn = USART1_IRQn, \
+ }
+
+#if defined(BSP_UART1_RX_USING_DMA)
+#define UART1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_RX_DMA_CHANNEL, \
+ .dma_clock = UART1_RX_DMA_CLOCK, \
+ .dma_irqn = UART1_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART1_RX_USING_DMA */
+
+#if defined(BSP_UART1_TX_USING_DMA)
+#define UART1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_TX_DMA_CHANNEL, \
+ .dma_clock = UART1_TX_DMA_CLOCK, \
+ .dma_irqn = UART1_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART1_TX_USING_DMA */
+#endif /* BSP_USING_UART1 */
+
+#if defined(BSP_USING_UART2)
+#define UART2_CONFIG \
+ { \
+ .name = "uart2", \
+ .uart_x = USART2, \
+ .irqn = USART2_IRQn, \
+ }
+
+#if defined(BSP_UART2_RX_USING_DMA)
+#define UART2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_RX_DMA_CHANNEL, \
+ .dma_clock = UART2_RX_DMA_CLOCK, \
+ .dma_irqn = UART2_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART2_RX_USING_DMA */
+
+#if defined(BSP_UART2_TX_USING_DMA)
+#define UART2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_TX_DMA_CHANNEL, \
+ .dma_clock = UART2_TX_DMA_CLOCK, \
+ .dma_irqn = UART2_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART2_TX_USING_DMA */
+#endif /* BSP_USING_UART2 */
+
+#if defined(BSP_USING_UART3)
+#define UART3_CONFIG \
+ { \
+ .name = "uart3", \
+ .uart_x = USART3, \
+ .irqn = USART3_IRQn, \
+ }
+
+#if defined(BSP_UART3_RX_USING_DMA)
+#define UART3_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_RX_DMA_CHANNEL, \
+ .dma_clock = UART3_RX_DMA_CLOCK, \
+ .dma_irqn = UART3_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART3_RX_USING_DMA */
+
+#if defined(BSP_UART3_TX_USING_DMA)
+#define UART3_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_TX_DMA_CHANNEL, \
+ .dma_clock = UART3_TX_DMA_CLOCK, \
+ .dma_irqn = UART3_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART3_TX_USING_DMA */
+#endif /* BSP_USING_UART3 */
+
+#if defined(BSP_USING_UART4)
+#define UART4_CONFIG \
+ { \
+ .name = "uart4", \
+ .uart_x = UART4, \
+ .irqn = UART4_IRQn, \
+ }
+
+#if defined(BSP_UART4_RX_USING_DMA)
+#define UART4_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_RX_DMA_CHANNEL, \
+ .dma_clock = UART4_RX_DMA_CLOCK, \
+ .dma_irqn = UART4_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART4_RX_USING_DMA */
+
+#if defined(BSP_UART4_TX_USING_DMA)
+#define UART4_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_TX_DMA_CHANNEL, \
+ .dma_clock = UART4_TX_DMA_CLOCK, \
+ .dma_irqn = UART4_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART4_TX_USING_DMA */
+#endif /* BSP_USING_UART4 */
+
+#if defined(BSP_USING_UART5)
+#define UART5_CONFIG \
+ { \
+ .name = "uart5", \
+ .uart_x = UART5, \
+ .irqn = UART5_IRQn, \
+ }
+#endif /* BSP_USING_UART5 */
+
+#if defined(BSP_USING_UART6)
+#define UART6_CONFIG \
+ { \
+ .name = "usart6", \
+ .uart_x = UART6, \
+ .irqn = USART6_IRQn, \
+ }
+#endif /* BSP_USING_UART6 */
+
+#if defined(BSP_USING_UART7)
+#define UART7_CONFIG \
+ { \
+ .name = "uart7", \
+ .uart_x = UART7, \
+ .irqn = UART7_IRQn, \
+ }
+#endif /* BSP_USING_UART7 */
+
+#if defined(BSP_USING_UART8)
+#define UART8_CONFIG \
+ { \
+ .name = "uart8", \
+ .uart_x = UART8, \
+ .irqn = UART8_IRQn, \
+ }
+#endif /* BSP_USING_UART8 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsp/at32/libraries/rt_drivers/config/f415/dma_config.h b/bsp/at32/libraries/rt_drivers/config/f415/dma_config.h
new file mode 100644
index 0000000000..baf1d36c5d
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f415/dma_config.h
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __DMA_CONFIG_H__
+#define __DMA_CONFIG_H__
+
+#include <rtthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DMA1 channel1 */
+/* DMA1 channel2 */
+#if defined(BSP_SPI1_RX_USING_DMA) && !defined(SPI1_RX_DMA_CHANNEL)
+#define SPI1_RX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define SPI1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_RX_DMA_CHANNEL DMA1_CHANNEL2
+#define SPI1_RX_DMA_IRQ DMA1_Channel2_IRQn
+#elif defined(BSP_UART3_TX_USING_DMA) && !defined(UART3_TX_DMA_CHANNEL)
+#define UART3_TX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define UART3_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_TX_DMA_CHANNEL DMA1_CHANNEL2
+#define UART3_TX_DMA_IRQ DMA1_Channel2_IRQn
+#endif
+
+/* DMA1 channel3 */
+#if defined(BSP_SPI1_TX_USING_DMA) && !defined(SPI1_TX_DMA_CHANNEL)
+#define SPI1_TX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define SPI1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_TX_DMA_CHANNEL DMA1_CHANNEL3
+#define SPI1_TX_DMA_IRQ DMA1_Channel3_IRQn
+#elif defined(BSP_UART3_RX_USING_DMA) && !defined(UART3_RX_DMA_CHANNEL)
+#define UART3_RX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define UART3_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_RX_DMA_CHANNEL DMA1_CHANNEL3
+#define UART3_RX_DMA_IRQ DMA1_Channel3_IRQn
+#endif
+
+/* DMA1 channel4 */
+#if defined(BSP_SPI2_RX_USING_DMA) && !defined(SPI2_RX_DMA_CHANNEL)
+#define SPI2_RX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define SPI2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_RX_DMA_CHANNEL DMA1_CHANNEL4
+#define SPI2_RX_DMA_IRQ DMA1_Channel4_IRQn
+#elif defined(BSP_UART1_TX_USING_DMA) && !defined(UART1_TX_DMA_CHANNEL)
+#define UART1_TX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define UART1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_TX_DMA_CHANNEL DMA1_CHANNEL4
+#define UART1_TX_DMA_IRQ DMA1_Channel4_IRQn
+#endif
+
+/* DMA1 channel5 */
+#if defined(BSP_SPI2_TX_USING_DMA) && !defined(SPI2_TX_DMA_CHANNEL)
+#define SPI2_TX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define SPI2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_TX_DMA_CHANNEL DMA1_CHANNEL5
+#define SPI2_TX_DMA_IRQ DMA1_Channel5_IRQn
+#elif defined(BSP_UART1_RX_USING_DMA) && !defined(UART1_RX_DMA_CHANNEL)
+#define UART1_RX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define UART1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_RX_DMA_CHANNEL DMA1_CHANNEL5
+#define UART1_RX_DMA_IRQ DMA1_Channel5_IRQn
+#endif
+
+/* DMA1 channel6 */
+#if defined(BSP_UART2_RX_USING_DMA) && !defined(UART2_RX_DMA_CHANNEL)
+#define UART2_RX_DMA_IRQHandler DMA1_Channel6_IRQHandler
+#define UART2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_RX_DMA_CHANNEL DMA1_CHANNEL6
+#define UART2_RX_DMA_IRQ DMA1_Channel6_IRQn
+#endif
+
+/* DMA1 channel7 */
+#if defined(BSP_UART2_TX_USING_DMA) && !defined(UART2_TX_DMA_CHANNEL)
+#define UART2_TX_DMA_IRQHandler DMA1_Channel7_IRQHandler
+#define UART2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_TX_DMA_CHANNEL DMA1_CHANNEL7
+#define UART2_TX_DMA_IRQ DMA1_Channel7_IRQn
+#endif
+
+/* DMA2 channel3 */
+#if defined(BSP_UART4_RX_USING_DMA) && !defined(UART4_RX_DMA_CHANNEL)
+#define UART4_RX_DMA_IRQHandler DMA2_Channel3_IRQHandler
+#define UART4_RX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART4_RX_DMA_CHANNEL DMA2_CHANNEL3
+#define UART4_RX_DMA_IRQ DMA2_Channel3_IRQn
+#endif
+/* DMA2 channel4 */
+/* DMA2 channel5 */
+#if defined(BSP_UART4_TX_USING_DMA) && !defined(UART4_TX_DMA_CHANNEL)
+#define UART4_TX_DMA_IRQHandler DMA2_Channel4_5_IRQHandler
+#define UART4_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART4_TX_DMA_CHANNEL DMA2_CHANNEL5
+#define UART4_TX_DMA_IRQ DMA2_Channel4_5_IRQn
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DMA_CONFIG_H__ */
diff --git a/bsp/at32/libraries/rt_drivers/config/f415/spi_config.h b/bsp/at32/libraries/rt_drivers/config/f415/spi_config.h
new file mode 100644
index 0000000000..7f7e3eeb05
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f415/spi_config.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-18 shelton first version
+ */
+
+#ifndef __SPI_CONFIG_H__
+#define __SPI_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SPI1_IRQHandler SPI1_IRQHandler
+#define SPI2_IRQHandler SPI2_IRQHandler
+
+#ifdef BSP_USING_SPI1
+#define SPI1_CONFIG \
+ { \
+ .spi_x = SPI1, \
+ .spi_name = "spi1", \
+ .irqn = SPI1_IRQn, \
+ }
+#endif /* BSP_USING_SPI1 */
+
+#ifdef BSP_SPI1_RX_USING_DMA
+#define SPI1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_RX_DMA_CHANNEL, \
+ .dma_clock = SPI1_RX_DMA_CLOCK, \
+ .dma_irqn = SPI1_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI1_RX_USING_DMA */
+
+#ifdef BSP_SPI1_TX_USING_DMA
+#define SPI1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_TX_DMA_CHANNEL, \
+ .dma_clock = SPI1_TX_DMA_CLOCK, \
+ .dma_irqn = SPI1_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI1_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI2
+#define SPI2_CONFIG \
+ { \
+ .spi_x = SPI2, \
+ .spi_name = "spi2", \
+ .irqn = SPI2_IRQn, \
+ }
+#endif /* BSP_USING_SPI2 */
+
+#ifdef BSP_SPI2_RX_USING_DMA
+#define SPI2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_RX_DMA_CHANNEL, \
+ .dma_clock = SPI2_RX_DMA_CLOCK, \
+ .dma_irqn = SPI2_RX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI2_RX_USING_DMA */
+
+#ifdef BSP_SPI2_TX_USING_DMA
+#define SPI2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_TX_DMA_CHANNEL, \
+ .dma_clock = SPI2_TX_DMA_CLOCK, \
+ .dma_irqn = SPI2_TX_DMA_IRQ, \
+ }
+#endif /* BSP_SPI2_TX_USING_DMA */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__SPI_CONFIG_H__ */
+
+
+
diff --git a/bsp/at32/libraries/rt_drivers/config/f415/uart_config.h b/bsp/at32/libraries/rt_drivers/config/f415/uart_config.h
new file mode 100644
index 0000000000..53f155892d
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f415/uart_config.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __UART_CONFIG_H__
+#define __UART_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(BSP_USING_UART1)
+#define UART1_CONFIG \
+ { \
+ .name = "uart1", \
+ .uart_x = USART1, \
+ .irqn = USART1_IRQn, \
+ }
+
+#if defined(BSP_UART1_RX_USING_DMA)
+#define UART1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_RX_DMA_CHANNEL, \
+ .dma_clock = UART1_RX_DMA_CLOCK, \
+ .dma_irqn = UART1_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART1_RX_USING_DMA */
+
+#if defined(BSP_UART1_TX_USING_DMA)
+#define UART1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_TX_DMA_CHANNEL, \
+ .dma_clock = UART1_TX_DMA_CLOCK, \
+ .dma_irqn = UART1_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART1_TX_USING_DMA */
+#endif /* BSP_USING_UART1 */
+
+#if defined(BSP_USING_UART2)
+#define UART2_CONFIG \
+ { \
+ .name = "uart2", \
+ .uart_x = USART2, \
+ .irqn = USART2_IRQn, \
+ }
+
+#if defined(BSP_UART2_RX_USING_DMA)
+#define UART2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_RX_DMA_CHANNEL, \
+ .dma_clock = UART2_RX_DMA_CLOCK, \
+ .dma_irqn = UART2_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART2_RX_USING_DMA */
+
+#if defined(BSP_UART2_TX_USING_DMA)
+#define UART2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_TX_DMA_CHANNEL, \
+ .dma_clock = UART2_TX_DMA_CLOCK, \
+ .dma_irqn = UART2_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART2_TX_USING_DMA */
+#endif /* BSP_USING_UART2 */
+
+#if defined(BSP_USING_UART3)
+#define UART3_CONFIG \
+ { \
+ .name = "uart3", \
+ .uart_x = USART3, \
+ .irqn = USART3_IRQn, \
+ }
+
+#if defined(BSP_UART3_RX_USING_DMA)
+#define UART3_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_RX_DMA_CHANNEL, \
+ .dma_clock = UART3_RX_DMA_CLOCK, \
+ .dma_irqn = UART3_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART3_RX_USING_DMA */
+
+#if defined(BSP_UART3_TX_USING_DMA)
+#define UART3_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_TX_DMA_CHANNEL, \
+ .dma_clock = UART3_TX_DMA_CLOCK, \
+ .dma_irqn = UART3_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART3_TX_USING_DMA */
+#endif /* BSP_USING_UART3 */
+
+#if defined(BSP_USING_UART4)
+#define UART4_CONFIG \
+ { \
+ .name = "uart4", \
+ .uart_x = UART4, \
+ .irqn = UART4_IRQn, \
+ }
+
+#if defined(BSP_UART4_RX_USING_DMA)
+#define UART4_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_RX_DMA_CHANNEL, \
+ .dma_clock = UART4_RX_DMA_CLOCK, \
+ .dma_irqn = UART4_RX_DMA_IRQ, \
+ }
+#endif /* BSP_UART4_RX_USING_DMA */
+
+#if defined(BSP_UART4_TX_USING_DMA)
+#define UART4_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_TX_DMA_CHANNEL, \
+ .dma_clock = UART4_TX_DMA_CLOCK, \
+ .dma_irqn = UART4_TX_DMA_IRQ, \
+ }
+#endif /* BSP_UART4_TX_USING_DMA */
+#endif /* BSP_USING_UART4 */
+
+#if defined(BSP_USING_UART5)
+#define UART5_CONFIG \
+ { \
+ .name = "uart5", \
+ .uart_x = UART5, \
+ .irqn = UART5_IRQn, \
+ }
+#endif /* BSP_USING_UART5 */
+
+#if defined(BSP_USING_UART6)
+#define UART6_CONFIG \
+ { \
+ .name = "usart6", \
+ .uart_x = UART6, \
+ .irqn = USART6_IRQn, \
+ }
+#endif /* BSP_USING_UART6 */
+
+#if defined(BSP_USING_UART7)
+#define UART7_CONFIG \
+ { \
+ .name = "uart7", \
+ .uart_x = UART7, \
+ .irqn = UART7_IRQn, \
+ }
+#endif /* BSP_USING_UART7 */
+
+#if defined(BSP_USING_UART8)
+#define UART8_CONFIG \
+ { \
+ .name = "uart8", \
+ .uart_x = UART8, \
+ .irqn = UART8_IRQn, \
+ }
+#endif /* BSP_USING_UART8 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsp/at32/libraries/rt_drivers/config/f435_437/dma_config.h b/bsp/at32/libraries/rt_drivers/config/f435_437/dma_config.h
new file mode 100644
index 0000000000..6acf2f84be
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f435_437/dma_config.h
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __DMA_CONFIG_H__
+#define __DMA_CONFIG_H__
+
+#include <rtthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DMA1 channel1 */
+#if defined(BSP_SPI1_RX_USING_DMA) && !defined(SPI1_RX_DMA_CHANNEL)
+#define SPI1_RX_DMA_IRQHandler DMA1_Channel1_IRQHandler
+#define SPI1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_RX_DMA_CHANNEL DMA1_CHANNEL1
+#define SPI1_RX_DMA_IRQ DMA1_Channel1_IRQn
+#define SPI1_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL1
+#define SPI1_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI1_RX
+#elif defined(BSP_UART1_RX_USING_DMA) && !defined(UART1_RX_DMA_CHANNEL)
+#define UART1_RX_DMA_IRQHandler DMA1_Channel1_IRQHandler
+#define UART1_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_RX_DMA_CHANNEL DMA1_CHANNEL1
+#define UART1_RX_DMA_IRQ DMA1_Channel1_IRQn
+#define UART1_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL1
+#define UART1_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART1_RX
+#endif
+
+/* DMA1 channel2 */
+#if defined(BSP_SPI1_TX_USING_DMA) && !defined(SPI1_TX_DMA_CHANNEL)
+#define SPI1_TX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define SPI1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI1_TX_DMA_CHANNEL DMA1_CHANNEL2
+#define SPI1_TX_DMA_IRQ DMA1_Channel2_IRQn
+#define SPI1_TX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL2
+#define SPI1_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI1_TX
+#elif defined(BSP_UART1_TX_USING_DMA) && !defined(UART1_TX_DMA_CHANNEL)
+#define UART1_TX_DMA_IRQHandler DMA1_Channel2_IRQHandler
+#define UART1_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART1_TX_DMA_CHANNEL DMA1_CHANNEL2
+#define UART1_TX_DMA_IRQ DMA1_Channel2_IRQn
+#define UART1_TX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL2
+#define UART1_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART1_TX
+#endif
+
+/* DMA1 channel3 */
+#if defined(BSP_SPI2_RX_USING_DMA) && !defined(SPI2_RX_DMA_CHANNEL)
+#define SPI2_RX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define SPI2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_RX_DMA_CHANNEL DMA1_CHANNEL3
+#define SPI2_RX_DMA_IRQ DMA1_Channel3_IRQn
+#define SPI2_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL3
+#define SPI2_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI2_RX
+#elif defined(BSP_UART2_RX_USING_DMA) && !defined(UART2_RX_DMA_CHANNEL)
+#define UART2_RX_DMA_IRQHandler DMA1_Channel3_IRQHandler
+#define UART2_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_RX_DMA_CHANNEL DMA1_CHANNEL3
+#define UART2_RX_DMA_IRQ DMA1_Channel3_IRQn
+#define UART2_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL3
+#define UART2_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART2_RX
+#endif
+
+/* DMA1 channel4 */
+#if defined(BSP_SPI2_TX_USING_DMA) && !defined(SPI2_TX_DMA_CHANNEL)
+#define SPI2_TX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define SPI2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI2_TX_DMA_CHANNEL DMA1_CHANNEL4
+#define SPI2_TX_DMA_IRQ DMA1_Channel4_IRQn
+#define SPI2_TX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL4
+#define SPI2_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI2_TX
+#elif defined(BSP_UART2_TX_USING_DMA) && !defined(UART2_TX_DMA_CHANNEL)
+#define UART2_TX_DMA_IRQHandler DMA1_Channel4_IRQHandler
+#define UART2_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART2_TX_DMA_CHANNEL DMA1_CHANNEL4
+#define UART2_TX_DMA_IRQ DMA1_Channel4_IRQn
+#define UART2_TX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL4
+#define UART2_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART2_TX
+#endif
+
+/* DMA1 channel5 */
+#if defined(BSP_SPI3_RX_USING_DMA) && !defined(SPI3_RX_DMA_CHANNEL)
+#define SPI3_RX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define SPI3_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI3_RX_DMA_CHANNEL DMA1_CHANNEL5
+#define SPI3_RX_DMA_IRQ DMA1_Channel5_IRQn
+#define SPI3_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL5
+#define SPI3_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI3_RX
+#elif defined(BSP_UART3_RX_USING_DMA) && !defined(UART3_RX_DMA_CHANNEL)
+#define UART3_RX_DMA_IRQHandler DMA1_Channel5_IRQHandler
+#define UART3_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_RX_DMA_CHANNEL DMA1_CHANNEL5
+#define UART3_RX_DMA_IRQ DMA1_Channel5_IRQn
+#define UART3_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL5
+#define UART3_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART3_RX
+#endif
+
+/* DMA1 channel6 */
+#if defined(BSP_SPI3_TX_USING_DMA) && !defined(SPI3_TX_DMA_CHANNEL)
+#define SPI3_TX_DMA_IRQHandler DMA1_Channel6_IRQHandler
+#define SPI3_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI3_TX_DMA_CHANNEL DMA1_CHANNEL6
+#define SPI3_TX_DMA_IRQ DMA1_Channel6_IRQn
+#define SPI2_TX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL6
+#define SPI3_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI3_TX
+#elif defined(BSP_UART3_TX_USING_DMA) && !defined(UART3_TX_DMA_CHANNEL)
+#define UART3_TX_DMA_IRQHandler DMA1_Channel6_IRQHandler
+#define UART3_TX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART3_TX_DMA_CHANNEL DMA1_CHANNEL6
+#define UART3_TX_DMA_IRQ DMA1_Channel6_IRQn
+#define UART3_TX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL6
+#define UART3_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART3_TX
+#endif
+
+/* DMA1 channel7 */
+#if defined(BSP_SPI4_RX_USING_DMA) && !defined(SPI4_RX_DMA_CHANNEL)
+#define SPI4_RX_DMA_IRQHandler DMA1_Channel7_IRQHandler
+#define SPI4_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define SPI4_RX_DMA_CHANNEL DMA1_CHANNEL7
+#define SPI4_RX_DMA_IRQ DMA1_Channel7_IRQn
+#define SPI4_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL7
+#define SPI4_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI4_RX
+#elif defined(BSP_UART4_RX_USING_DMA) && !defined(UART4_RX_DMA_CHANNEL)
+#define UART4_RX_DMA_IRQHandler DMA1_Channel7_IRQHandler
+#define UART4_RX_DMA_CLOCK CRM_DMA1_PERIPH_CLOCK
+#define UART4_RX_DMA_CHANNEL DMA1_CHANNEL7
+#define UART4_RX_DMA_IRQ DMA1_Channel7_IRQn
+#define UART4_RX_DMA_MUX_CHANNEL DMA1MUX_CHANNEL7
+#define UART4_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_UART4_RX
+#endif
+
+/* DMA2 channel1 */
+#if defined(BSP_SPI4_TX_USING_DMA) && !defined(SPI4_TX_DMA_CHANNEL)
+#define SPI4_TX_DMA_IRQHandler DMA2_Channel1_IRQHandler
+#define SPI4_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define SPI4_TX_DMA_CHANNEL DMA2_CHANNEL1
+#define SPI4_TX_DMA_IRQ DMA2_Channel1_IRQn
+#define SPI4_TX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL1
+#define SPI4_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_SPI4_TX
+#elif defined(BSP_UART4_TX_USING_DMA) && !defined(UART4_TX_DMA_CHANNEL)
+#define UART4_TX_DMA_IRQHandler DMA2_Channel1_IRQHandler
+#define UART4_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART4_TX_DMA_CHANNEL DMA2_CHANNEL1
+#define UART4_TX_DMA_IRQ DMA2_Channel1_IRQn
+#define UART4_TX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL1
+#define UART4_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_UART4_TX
+#endif
+
+/* DMA2 channel2 */
+#if defined(BSP_UART5_RX_USING_DMA) && !defined(UART5_RX_DMA_CHANNEL)
+#define UART5_RX_DMA_IRQHandler DMA2_Channel2_IRQHandler
+#define UART5_RX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART5_RX_DMA_CHANNEL DMA2_CHANNEL2
+#define UART5_RX_DMA_IRQ DMA2_Channel2_IRQn
+#define UART5_RX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL2
+#define UART5_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_UART5_RX
+#endif
+
+/* DMA2 channel3 */
+#if defined(BSP_UART5_TX_USING_DMA) && !defined(UART5_TX_DMA_CHANNEL)
+#define UART5_TX_DMA_IRQHandler DMA2_Channel3_IRQHandler
+#define UART5_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART5_TX_DMA_CHANNEL DMA2_CHANNEL3
+#define UART5_TX_DMA_IRQ DMA2_Channel3_IRQn
+#define UART5_TX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL3
+#define UART5_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_UART5_TX
+#endif
+
+/* DMA2 channel4 */
+#if defined(BSP_UART6_RX_USING_DMA) && !defined(UART6_RX_DMA_CHANNEL)
+#define UART6_RX_DMA_IRQHandler DMA2_Channel4_IRQHandler
+#define UART6_RX_DMA_CLOCK CRM_DMA4_PERIPH_CLOCK
+#define UART6_RX_DMA_CHANNEL DMA2_CHANNEL4
+#define UART6_RX_DMA_IRQ DMA2_Channel4_IRQn
+#define UART6_RX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL4
+#define UART6_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART6_RX
+#endif
+
+/* DMA2 channel5 */
+#if defined(BSP_UART6_TX_USING_DMA) && !defined(UART6_TX_DMA_CHANNEL)
+#define UART6_TX_DMA_IRQHandler DMA2_Channel5_IRQHandler
+#define UART6_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART6_TX_DMA_CHANNEL DMA2_CHANNEL5
+#define UART6_TX_DMA_IRQ DMA2_Channel5_IRQn
+#define UART6_TX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL5
+#define UART6_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_USART6_TX
+#endif
+
+/* DMA2 channel6 */
+#if defined(BSP_UART7_RX_USING_DMA) && !defined(UART7_RX_DMA_CHANNEL)
+#define UART7_RX_DMA_IRQHandler DMA2_Channel6_IRQHandler
+#define UART7_RX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART7_RX_DMA_CHANNEL DMA2_CHANNEL6
+#define UART7_RX_DMA_IRQ DMA2_Channel6_IRQn
+#define UART7_RX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL6
+#define UART7_RX_DMA_REQ_ID DMAMUX_DMAREQ_ID_UART7_RX
+#endif
+
+/* DMA2 channel7 */
+#if defined(BSP_UART7_TX_USING_DMA) && !defined(UART7_TX_DMA_CHANNEL)
+#define UART7_TX_DMA_IRQHandler DMA2_Channel7_IRQHandler
+#define UART7_TX_DMA_CLOCK CRM_DMA2_PERIPH_CLOCK
+#define UART7_TX_DMA_CHANNEL DMA2_CHANNEL7
+#define UART7_TX_DMA_IRQ DMA2_Channel7_IRQn
+#define UART7_TX_DMA_MUX_CHANNEL DMA2MUX_CHANNEL7
+#define UART7_TX_DMA_REQ_ID DMAMUX_DMAREQ_ID_UART7_TX
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DMA_CONFIG_H__ */
diff --git a/bsp/at32/libraries/rt_drivers/config/f435_437/spi_config.h b/bsp/at32/libraries/rt_drivers/config/f435_437/spi_config.h
new file mode 100644
index 0000000000..69314f9c85
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f435_437/spi_config.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-18 shelton first version
+ */
+
+#ifndef __SPI_CONFIG_H__
+#define __SPI_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SPI1_IRQHandler SPI1_IRQHandler
+#define SPI2_IRQHandler SPI2_I2S2EXT_IRQHandler
+#define SPI3_IRQHandler SPI3_I2S3EXT_IRQHandler
+#define SPI4_IRQHandler SPI4_IRQHandler
+
+#ifdef BSP_USING_SPI1
+#define SPI1_CONFIG \
+ { \
+ .spi_x = SPI1, \
+ .spi_name = "spi1", \
+ .irqn = SPI1_IRQn, \
+ }
+#endif /* BSP_USING_SPI1 */
+
+#ifdef BSP_SPI1_RX_USING_DMA
+#define SPI1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_RX_DMA_CHANNEL, \
+ .dma_clock = SPI1_RX_DMA_CLOCK, \
+ .dma_irqn = SPI1_RX_DMA_IRQ, \
+ .dmamux_channel = SPI1_RX_DMA_MUX_CHANNEL, \
+ .request_id = SPI1_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI1_RX_USING_DMA */
+
+#ifdef BSP_SPI1_TX_USING_DMA
+#define SPI1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI1_TX_DMA_CHANNEL, \
+ .dma_clock = SPI1_TX_DMA_CLOCK, \
+ .dma_irqn = SPI1_TX_DMA_IRQ, \
+ .dmamux_channel = SPI1_TX_DMA_MUX_CHANNEL, \
+ .request_id = SPI1_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI1_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI2
+#define SPI2_CONFIG \
+ { \
+ .spi_x = SPI2, \
+ .spi_name = "spi2", \
+ .irqn = SPI2_I2S2EXT_IRQn, \
+ }
+#endif /* BSP_USING_SPI2 */
+
+#ifdef BSP_SPI2_RX_USING_DMA
+#define SPI2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_RX_DMA_CHANNEL, \
+ .dma_clock = SPI2_RX_DMA_CLOCK, \
+ .dma_irqn = SPI2_RX_DMA_IRQ, \
+ .dmamux_channel = SPI2_RX_DMA_MUX_CHANNEL, \
+ .request_id = SPI2_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI2_RX_USING_DMA */
+
+#ifdef BSP_SPI2_TX_USING_DMA
+#define SPI2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI2_TX_DMA_CHANNEL, \
+ .dma_clock = SPI2_TX_DMA_CLOCK, \
+ .dma_irqn = SPI2_TX_DMA_IRQ, \
+ .dmamux_channel = SPI2_TX_DMA_MUX_CHANNEL, \
+ .request_id = SPI2_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI2_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI3
+#define SPI3_CONFIG \
+ { \
+ .spi_x = SPI3, \
+ .spi_name = "spi3", \
+ .irqn = SPI3_I2S3EXT_IRQn, \
+ }
+#endif /* BSP_USING_SPI3 */
+
+#ifdef BSP_SPI3_RX_USING_DMA
+#define SPI3_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI3_RX_DMA_CHANNEL, \
+ .dma_clock = SPI3_RX_DMA_CLOCK, \
+ .dma_irqn = SPI3_RX_DMA_IRQ, \
+ .dmamux_channel = SPI3_RX_DMA_MUX_CHANNEL, \
+ .request_id = SPI3_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI3_RX_USING_DMA */
+
+#ifdef BSP_SPI3_TX_USING_DMA
+#define SPI3_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI3_TX_DMA_CHANNEL, \
+ .dma_clock = SPI3_TX_DMA_CLOCK, \
+ .dma_irqn = SPI3_TX_DMA_IRQ, \
+ .dmamux_channel = SPI3_TX_DMA_MUX_CHANNEL, \
+ .request_id = SPI3_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI3_TX_USING_DMA */
+
+#ifdef BSP_USING_SPI4
+#define SPI4_CONFIG \
+ { \
+ .spi_x = SPI4, \
+ .spi_name = "spi4", \
+ .irqn = SPI4_IRQn, \
+ }
+#endif /* BSP_USING_SPI4 */
+
+#ifdef BSP_SPI4_RX_USING_DMA
+#define SPI4_RX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI4_RX_DMA_CHANNEL, \
+ .dma_clock = SPI4_RX_DMA_CLOCK, \
+ .dma_irqn = SPI4_RX_DMA_IRQ, \
+ .dmamux_channel = SPI4_RX_DMA_MUX_CHANNEL, \
+ .request_id = SPI4_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI4_RX_USING_DMA */
+
+#ifdef BSP_SPI4_TX_USING_DMA
+#define SPI4_TX_DMA_CONFIG \
+ { \
+ .dma_channel = SPI4_TX_DMA_CHANNEL, \
+ .dma_clock = SPI4_TX_DMA_CLOCK, \
+ .dma_irqn = SPI4_TX_DMA_IRQ, \
+ .dmamux_channel = SPI4_TX_DMA_MUX_CHANNEL, \
+ .request_id = SPI4_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_SPI4_TX_USING_DMA */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__SPI_CONFIG_H__ */
+
+
+
diff --git a/bsp/at32/libraries/rt_drivers/config/f435_437/uart_config.h b/bsp/at32/libraries/rt_drivers/config/f435_437/uart_config.h
new file mode 100644
index 0000000000..9ba81b0a38
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/config/f435_437/uart_config.h
@@ -0,0 +1,251 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __UART_CONFIG_H__
+#define __UART_CONFIG_H__
+
+#include <rtthread.h>
+#include "dma_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(BSP_USING_UART1)
+#define UART1_CONFIG \
+ { \
+ .name = "uart1", \
+ .uart_x = USART1, \
+ .irqn = USART1_IRQn, \
+ }
+
+#if defined(BSP_UART1_RX_USING_DMA)
+#define UART1_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_RX_DMA_CHANNEL, \
+ .dma_clock = UART1_RX_DMA_CLOCK, \
+ .dma_irqn = UART1_RX_DMA_IRQ, \
+ .dmamux_channel = UART1_RX_DMA_MUX_CHANNEL, \
+ .request_id = UART1_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART1_RX_USING_DMA */
+
+#if defined(BSP_UART1_TX_USING_DMA)
+#define UART1_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART1_TX_DMA_CHANNEL, \
+ .dma_clock = UART1_TX_DMA_CLOCK, \
+ .dma_irqn = UART1_TX_DMA_IRQ, \
+ .dmamux_channel = UART1_TX_DMA_MUX_CHANNEL, \
+ .request_id = UART1_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART1_TX_USING_DMA */
+#endif /* BSP_USING_UART1 */
+
+#if defined(BSP_USING_UART2)
+#define UART2_CONFIG \
+ { \
+ .name = "uart2", \
+ .uart_x = USART2, \
+ .irqn = USART2_IRQn, \
+ }
+
+#if defined(BSP_UART2_RX_USING_DMA)
+#define UART2_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_RX_DMA_CHANNEL, \
+ .dma_clock = UART2_RX_DMA_CLOCK, \
+ .dma_irqn = UART2_RX_DMA_IRQ, \
+ .dmamux_channel = UART2_RX_DMA_MUX_CHANNEL, \
+ .request_id = UART2_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART2_RX_USING_DMA */
+
+#if defined(BSP_UART2_TX_USING_DMA)
+#define UART2_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART2_TX_DMA_CHANNEL, \
+ .dma_clock = UART2_TX_DMA_CLOCK, \
+ .dma_irqn = UART2_TX_DMA_IRQ, \
+ .dmamux_channel = UART2_TX_DMA_MUX_CHANNEL, \
+ .request_id = UART2_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART2_TX_USING_DMA */
+#endif /* BSP_USING_UART2 */
+
+#if defined(BSP_USING_UART3)
+#define UART3_CONFIG \
+ { \
+ .name = "uart3", \
+ .uart_x = USART3, \
+ .irqn = USART3_IRQn, \
+ }
+
+#if defined(BSP_UART3_RX_USING_DMA)
+#define UART3_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_RX_DMA_CHANNEL, \
+ .dma_clock = UART3_RX_DMA_CLOCK, \
+ .dma_irqn = UART3_RX_DMA_IRQ, \
+ .dmamux_channel = UART3_RX_DMA_MUX_CHANNEL, \
+ .request_id = UART3_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART3_RX_USING_DMA */
+
+#if defined(BSP_UART3_TX_USING_DMA)
+#define UART3_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART3_TX_DMA_CHANNEL, \
+ .dma_clock = UART3_TX_DMA_CLOCK, \
+ .dma_irqn = UART3_TX_DMA_IRQ, \
+ .dmamux_channel = UART3_TX_DMA_MUX_CHANNEL, \
+ .request_id = UART3_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART3_TX_USING_DMA */
+#endif /* BSP_USING_UART3 */
+
+#if defined(BSP_USING_UART4)
+#define UART4_CONFIG \
+ { \
+ .name = "uart4", \
+ .uart_x = UART4, \
+ .irqn = UART4_IRQn, \
+ }
+
+#if defined(BSP_UART4_RX_USING_DMA)
+#define UART4_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_RX_DMA_CHANNEL, \
+ .dma_clock = UART4_RX_DMA_CLOCK, \
+ .dma_irqn = UART4_RX_DMA_IRQ, \
+ .dmamux_channel = UART4_RX_DMA_MUX_CHANNEL, \
+ .request_id = UART4_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART4_RX_USING_DMA */
+
+#if defined(BSP_UART4_TX_USING_DMA)
+#define UART4_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART4_TX_DMA_CHANNEL, \
+ .dma_clock = UART4_TX_DMA_CLOCK, \
+ .dma_irqn = UART4_TX_DMA_IRQ, \
+ .dmamux_channel = UART4_TX_DMA_MUX_CHANNEL, \
+ .request_id = UART4_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART4_TX_USING_DMA */
+#endif /* BSP_USING_UART4 */
+
+#if defined(BSP_USING_UART5)
+#define UART5_CONFIG \
+ { \
+ .name = "uart5", \
+ .uart_x = UART5, \
+ .irqn = UART5_IRQn, \
+ }
+
+#if defined(BSP_UART5_RX_USING_DMA)
+#define UART5_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART5_RX_DMA_CHANNEL, \
+ .dma_clock = UART5_RX_DMA_CLOCK, \
+ .dma_irqn = UART5_RX_DMA_IRQ, \
+ .dmamux_channel = UART5_RX_DMA_MUX_CHANNEL, \
+ .request_id = UART5_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART5_RX_USING_DMA */
+
+#if defined(BSP_UART5_TX_USING_DMA)
+#define UART5_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART5_TX_DMA_CHANNEL, \
+ .dma_clock = UART5_TX_DMA_CLOCK, \
+ .dma_irqn = UART5_TX_DMA_IRQ, \
+ .dmamux_channel = UART5_TX_DMA_MUX_CHANNEL, \
+ .request_id = UART5_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART5_TX_USING_DMA */
+#endif /* BSP_USING_UART5 */
+
+#if defined(BSP_USING_UART6)
+#define UART6_CONFIG \
+ { \
+ .name = "usart6", \
+ .uart_x = UART6, \
+ .irqn = USART6_IRQn, \
+ }
+
+#if defined(BSP_UART6_RX_USING_DMA)
+#define UART6_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART6_RX_DMA_CHANNEL, \
+ .dma_clock = UART6_RX_DMA_CLOCK, \
+ .dma_irqn = UART6_RX_DMA_IRQ, \
+ .dmamux_channel = UART6_RX_DMA_MUX_CHANNEL, \
+ .request_id = UART6_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART6_RX_USING_DMA */
+
+#if defined(BSP_UART6_TX_USING_DMA)
+#define UART6_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART6_TX_DMA_CHANNEL, \
+ .dma_clock = UART6_TX_DMA_CLOCK, \
+ .dma_irqn = UART6_TX_DMA_IRQ, \
+ .dmamux_channel = UART6_TX_DMA_MUX_CHANNEL, \
+ .request_id = UART6_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART6_TX_USING_DMA */
+#endif /* BSP_USING_UART6 */
+
+#if defined(BSP_USING_UART7)
+#define UART7_CONFIG \
+ { \
+ .name = "uart7", \
+ .uart_x = UART7, \
+ .irqn = UART7_IRQn, \
+ }
+
+#if defined(BSP_UART7_RX_USING_DMA)
+#define UART7_RX_DMA_CONFIG \
+ { \
+ .dma_channel = UART7_RX_DMA_CHANNEL, \
+ .dma_clock = UART7_RX_DMA_CLOCK, \
+ .dma_irqn = UART7_RX_DMA_IRQ, \
+ .dmamux_channel = UART7_RX_DMA_MUX_CHANNEL, \
+ .request_id = UART7_RX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART7_RX_USING_DMA */
+
+#if defined(BSP_UART7_TX_USING_DMA)
+#define UART7_TX_DMA_CONFIG \
+ { \
+ .dma_channel = UART7_TX_DMA_CHANNEL, \
+ .dma_clock = UART7_TX_DMA_CLOCK, \
+ .dma_irqn = UART7_TX_DMA_IRQ, \
+ .dmamux_channel = UART7_TX_DMA_MUX_CHANNEL, \
+ .request_id = UART7_TX_DMA_REQ_ID, \
+ }
+#endif /* BSP_UART7_TX_USING_DMA */
+#endif /* BSP_USING_UART7 */
+
+#if defined(BSP_USING_UART8)
+#define UART8_CONFIG \
+ { \
+ .name = "uart8", \
+ .uart_x = UART8, \
+ .irqn = UART8_IRQn, \
+ }
+#endif /* BSP_USING_UART8 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsp/at32/libraries/rt_drivers/drv_config.h b/bsp/at32/libraries/rt_drivers/drv_config.h
new file mode 100644
index 0000000000..313c4c21c0
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/drv_config.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __DRV_CONFIG_H__
+#define __DRV_CONFIG_H__
+
+#include <board.h>
+#include <rtthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(SOC_SERIES_AT32F403A) || defined (SOC_SERIES_AT32F407)
+#include "f403a_407/dma_config.h"
+#include "f403a_407/uart_config.h"
+#include "f403a_407/spi_config.h"
+#elif defined(SOC_SERIES_AT32F413)
+#include "f413/dma_config.h"
+#include "f413/uart_config.h"
+#include "f413/spi_config.h"
+#elif defined(SOC_SERIES_AT32F415)
+#include "f415/dma_config.h"
+#include "f415/uart_config.h"
+#include "f415/spi_config.h"
+#elif defined(SOC_SERIES_AT32F435) || defined (SOC_SERIES_AT32F437)
+#include "f435_437/dma_config.h"
+#include "f435_437/uart_config.h"
+#include "f435_437/spi_config.h"
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsp/at32/libraries/rt_drivers/drv_dma.h b/bsp/at32/libraries/rt_drivers/drv_dma.h
new file mode 100644
index 0000000000..9038dd19a5
--- /dev/null
+++ b/bsp/at32/libraries/rt_drivers/drv_dma.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-11-09 shelton first version
+ */
+
+#ifndef __DRV_DMA_H__
+#define __DRV_DMA_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rtdevice.h>
+#include <rtthread.h>
+#include "drv_common.h"
+
+#define DMA_GLO_FLAG 0x0001U
+#define DMA_FDT_FLAG 0x0002U
+#define DMA_HDT_FLAG 0x0004U
+#define DMA_DTE_FLAG 0x0008U
+
+struct dma_config {
+ dma_type *dma_x;
+ rt_uint8_t channel_index;
+ rt_bool_t dma_done;
+ dma_channel_type *dma_channel;
+ crm_periph_clock_type dma_clock;
+ IRQn_Type dma_irqn;
+#if defined (SOC_SERIES_AT32F435) || defined (SOC_SERIES_AT32F437)
+ dmamux_channel_type *dmamux_channel;
+ rt_uint32_t request_id;
+#endif
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__DRV_DMA_H__ */
+
+/************************** end of file ******************/
diff --git a/bsp/at32/libraries/rt_drivers/drv_spi.c b/bsp/at32/libraries/rt_drivers/drv_spi.c
index 2465d21249..eb67a937d2 100644
--- a/bsp/at32/libraries/rt_drivers/drv_spi.c
+++ b/bsp/at32/libraries/rt_drivers/drv_spi.c
@@ -6,10 +6,13 @@
* Change Logs:
* Date Author Notes
* 2022-05-16 shelton first version
+ * 2022-11-10 shelton support spi dma
*/
#include "drv_common.h"
#include "drv_spi.h"
+#include "drv_config.h"
+#include <string.h>
#ifdef RT_USING_SPI
#if !defined(BSP_USING_SPI1) && !defined(BSP_USING_SPI2) && \
@@ -17,12 +20,44 @@
#error "Please define at least one BSP_USING_SPIx"
#endif
-#define ARR_LEN(__N) (sizeof(__N) / sizeof(__N[0]))
-
//#define DRV_DEBUG
#define LOG_TAG "drv.pwm"
#include <drv_log.h>
+enum
+{
+#ifdef BSP_USING_SPI1
+ SPI1_INDEX,
+#endif
+#ifdef BSP_USING_SPI2
+ SPI2_INDEX,
+#endif
+#ifdef BSP_USING_SPI3
+ SPI3_INDEX,
+#endif
+#ifdef BSP_USING_SPI4
+ SPI4_INDEX,
+#endif
+};
+
+static struct at32_spi_config spi_config[] = {
+#ifdef BSP_USING_SPI1
+ SPI1_CONFIG,
+#endif
+
+#ifdef BSP_USING_SPI2
+ SPI2_CONFIG,
+#endif
+
+#ifdef BSP_USING_SPI3
+ SPI3_CONFIG,
+#endif
+
+#ifdef BSP_USING_SPI4
+ SPI4_CONFIG,
+#endif
+};
+
/* private rt-thread spi ops function */
static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configuration* configuration);
static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* message);
@@ -81,14 +116,14 @@ static rt_err_t configure(struct rt_spi_device* device,
struct rt_spi_configuration* configuration)
{
struct rt_spi_bus * spi_bus = (struct rt_spi_bus *)device->bus;
- struct at32_spi *spi_instance = (struct at32_spi *)spi_bus->parent.user_data;
+ struct at32_spi *instance = (struct at32_spi *)spi_bus->parent.user_data;
spi_init_type spi_init_struct;
RT_ASSERT(device != RT_NULL);
RT_ASSERT(configuration != RT_NULL);
- at32_msp_spi_init(spi_instance->config->spi_x);
+ at32_msp_spi_init(instance->config->spi_x);
/* data_width */
if(configuration->data_width <= 8)
@@ -116,7 +151,7 @@ static rt_err_t configure(struct rt_spi_device* device,
LOG_D("sys freq: %d\n", clocks_struct.sclk_freq);
LOG_D("max freq: %d\n", max_hz);
- if (spi_instance->config->spi_x == SPI1)
+ if (instance->config->spi_x == SPI1)
{
spi_apb_clock = clocks_struct.apb2_freq;
LOG_D("pclk2 freq: %d\n", clocks_struct.apb2_freq);
@@ -157,7 +192,7 @@ static rt_err_t configure(struct rt_spi_device* device,
}
else
{
- /* min prescaler 256 */
+ /* min prescaler 256 */
spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_256;
}
} /* baudrate */
@@ -196,38 +231,64 @@ static rt_err_t configure(struct rt_spi_device* device,
spi_init_struct.master_slave_mode = SPI_MODE_MASTER;
spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE;
/* init spi */
- spi_init(spi_instance->config->spi_x, &spi_init_struct);
+ spi_init(instance->config->spi_x, &spi_init_struct);
/* enable spi */
- spi_enable(spi_instance->config->spi_x, TRUE);
+ spi_enable(instance->config->spi_x, TRUE);
/* disable spi crc */
- spi_crc_enable(spi_instance->config->spi_x, FALSE);
+ spi_crc_enable(instance->config->spi_x, FALSE);
return RT_EOK;
};
-static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* message)
+static void _spi_dma_receive(struct at32_spi *instance, rt_uint8_t *buffer, rt_uint32_t size)
{
- struct rt_spi_bus * at32_spi_bus = (struct rt_spi_bus *)device->bus;
- struct at32_spi *spi_instance = (struct at32_spi *)at32_spi_bus->parent.user_data;
- struct rt_spi_configuration * config = &device->config;
- struct at32_spi_cs * at32_spi_cs = device->parent.user_data;
+ dma_channel_type* dma_channel = instance->config->dma_rx->dma_channel;
- RT_ASSERT(device != NULL);
- RT_ASSERT(message != NULL);
+ dma_channel->dtcnt = size;
+ dma_channel->paddr = (rt_uint32_t)&(instance->config->spi_x->dt);
+ dma_channel->maddr = (rt_uint32_t)buffer;
- /* take cs */
- if(message->cs_take)
- {
- gpio_bits_reset(at32_spi_cs->gpio_x, at32_spi_cs->gpio_pin);
- LOG_D("spi take cs\n");
- }
+ /* enable transmit complete interrupt */
+ dma_interrupt_enable(dma_channel, DMA_FDT_INT, TRUE);
+ /* enable dma receive */
+ spi_i2s_dma_receiver_enable(instance->config->spi_x, TRUE);
+
+ /* mark dma flag */
+ instance->config->dma_rx->dma_done = RT_FALSE;
+ /* enable dma channel */
+ dma_channel_enable(dma_channel, TRUE);
+}
+
+static void _spi_dma_transmit(struct at32_spi *instance, rt_uint8_t *buffer, rt_uint32_t size)
+{
+ dma_channel_type *dma_channel = instance->config->dma_tx->dma_channel;
- if(config->data_width <= 8)
+ dma_channel->dtcnt = size;
+ dma_channel->paddr = (rt_uint32_t)&(instance->config->spi_x->dt);
+ dma_channel->maddr = (rt_uint32_t)buffer;
+
+ /* enable spi error interrupt */
+ spi_i2s_interrupt_enable(instance->config->spi_x, SPI_I2S_ERROR_INT, TRUE);
+ /* enable transmit complete interrupt */
+ dma_interrupt_enable(dma_channel, DMA_FDT_INT, TRUE);
+ /* enable dma transmit */
+ spi_i2s_dma_transmitter_enable(instance->config->spi_x, TRUE);
+
+ /* mark dma flag */
+ instance->config->dma_tx->dma_done = RT_FALSE;
+ /* enable dma channel */
+ dma_channel_enable(dma_channel, TRUE);
+}
+
+static void _spi_polling_receive_transmit(struct at32_spi *instance, rt_uint8_t *recv_buf, rt_uint8_t *send_buf, \
+ rt_uint32_t size, rt_uint8_t data_mode)
+{
+ /* data frame length 8 bit */
+ if(data_mode <= 8)
{
- const rt_uint8_t *send_ptr = message->send_buf;
- rt_uint8_t * recv_ptr = message->recv_buf;
- rt_uint32_t size = message->length;
+ const rt_uint8_t *send_ptr = send_buf;
+ rt_uint8_t * recv_ptr = recv_buf;
LOG_D("spi poll transfer start: %d\n", size);
@@ -241,14 +302,14 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
}
/* wait until the transmit buffer is empty */
- while(spi_i2s_flag_get(spi_instance->config->spi_x, SPI_I2S_TDBE_FLAG) == RESET);
+ while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_TDBE_FLAG) == RESET);
/* send the byte */
- spi_i2s_data_transmit(spi_instance->config->spi_x, data);
+ spi_i2s_data_transmit(instance->config->spi_x, data);
/* wait until a data is received */
- while(spi_i2s_flag_get(spi_instance->config->spi_x, SPI_I2S_RDBF_FLAG) == RESET);
+ while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_RDBF_FLAG) == RESET);
/* get the received data */
- data = spi_i2s_data_receive(spi_instance->config->spi_x);
+ data = spi_i2s_data_receive(instance->config->spi_x);
if(recv_ptr != RT_NULL)
{
@@ -257,11 +318,11 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
}
LOG_D("spi poll transfer finsh\n");
}
- else if(config->data_width <= 16)
+ /* data frame length 16 bit */
+ else if(data_mode <= 16)
{
- const rt_uint16_t * send_ptr = message->send_buf;
- rt_uint16_t * recv_ptr = message->recv_buf;
- rt_uint32_t size = message->length;
+ const rt_uint16_t * send_ptr = (rt_uint16_t *)send_buf;
+ rt_uint16_t * recv_ptr = (rt_uint16_t *)recv_buf;
while(size--)
{
@@ -273,14 +334,14 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
}
/* wait until the transmit buffer is empty */
- while(spi_i2s_flag_get(spi_instance->config->spi_x, SPI_I2S_TDBE_FLAG) == RESET);
+ while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_TDBE_FLAG) == RESET);
/* send the byte */
- spi_i2s_data_transmit(spi_instance->config->spi_x, data);
+ spi_i2s_data_transmit(instance->config->spi_x, data);
/* wait until a data is received */
- while(spi_i2s_flag_get(spi_instance->config->spi_x, SPI_I2S_RDBF_FLAG) == RESET);
+ while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_RDBF_FLAG) == RESET);
/* get the received data */
- data = spi_i2s_data_receive(spi_instance->config->spi_x);
+ data = spi_i2s_data_receive(instance->config->spi_x);
if(recv_ptr != RT_NULL)
{
@@ -288,6 +349,119 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
}
}
}
+}
+
+static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* message)
+{
+ struct rt_spi_bus * at32_spi_bus = (struct rt_spi_bus *)device->bus;
+ struct at32_spi *instance = (struct at32_spi *)at32_spi_bus->parent.user_data;
+ struct rt_spi_configuration *config = &device->config;
+ struct at32_spi_cs * at32_spi_cs = device->parent.user_data;
+ rt_size_t message_length = 0, already_send_length = 0;
+ rt_uint16_t send_length = 0;
+ rt_uint8_t *recv_buf;
+ const rt_uint8_t *send_buf;
+
+ RT_ASSERT(device != NULL);
+ RT_ASSERT(message != NULL);
+
+ /* take cs */
+ if(message->cs_take)
+ {
+ gpio_bits_reset(at32_spi_cs->gpio_x, at32_spi_cs->gpio_pin);
+ LOG_D("spi take cs\n");
+ }
+
+ message_length = message->length;
+ recv_buf = message->recv_buf;
+ send_buf = message->send_buf;
+ while (message_length)
+ {
+ /* the HAL library use uint16 to save the data length */
+ if (message_length > 65535)
+ {
+ send_length = 65535;
+ message_length = message_length - 65535;
+ }
+ else
+ {
+ send_length = message_length;
+ message_length = 0;
+ }
+
+ /* calculate the start address */
+ already_send_length = message->length - send_length - message_length;
+ send_buf = (rt_uint8_t *)message->send_buf + already_send_length;
+ recv_buf = (rt_uint8_t *)message->recv_buf + already_send_length;
+
+ /* start once data exchange in dma mode */
+ if (message->send_buf && message->recv_buf)
+ {
+ if ((instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX) && \
+ (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX))
+ {
+ _spi_dma_receive(instance, (uint8_t *)recv_buf, send_length);
+ _spi_dma_transmit(instance, (uint8_t *)send_buf, send_length);
+ /* wait transfer complete */
+ while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_BF_FLAG) != RESET);
+ while((instance->config->dma_tx->dma_done == RT_FALSE) || (instance->config->dma_rx->dma_done == RT_FALSE));
+ /* clear rx overrun flag */
+ spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG);
+ spi_enable(instance->config->spi_x, FALSE);
+ spi_enable(instance->config->spi_x, TRUE);
+ }
+ else
+ {
+ _spi_polling_receive_transmit(instance, (uint8_t *)recv_buf, (uint8_t *)send_buf, send_length, config->data_width);
+ }
+ }
+ else if (message->send_buf)
+ {
+ if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX)
+ {
+ _spi_dma_transmit(instance, (uint8_t *)send_buf, send_length);
+ /* wait transfer complete */
+ while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_BF_FLAG) != RESET);
+ while(instance->config->dma_tx->dma_done == RT_FALSE);
+ /* clear rx overrun flag */
+ spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG);
+ spi_enable(instance->config->spi_x, FALSE);
+ spi_enable(instance->config->spi_x, TRUE);
+ }
+ else
+ {
+ _spi_polling_receive_transmit(instance, RT_NULL, (uint8_t *)send_buf, send_length, config->data_width);
+ }
+
+ if (message->cs_release && (device->config.mode & RT_SPI_3WIRE))
+ {
+ /* release the cs by disable spi when using 3 wires spi */
+ spi_enable(instance->config->spi_x, FALSE);
+ }
+ }
+ else
+ {
+ memset((void *)recv_buf, 0xff, send_length);
+ if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX)
+ {
+ _spi_dma_receive(instance, (uint8_t *)recv_buf, send_length);
+ _spi_dma_transmit(instance, (uint8_t *)recv_buf, send_length);
+ /* wait transfer complete */
+ while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_BF_FLAG) != RESET);
+ while((instance->config->dma_tx->dma_done == RT_FALSE) || (instance->config->dma_rx->dma_done == RT_FALSE));
+ /* clear rx overrun flag */
+ spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG);
+ spi_enable(instance->config->spi_x, FALSE);
+ spi_enable(instance->config->spi_x, TRUE);
+ }
+ else
+ {
+ /* clear the old error flag */
+ spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG);
+ _spi_polling_receive_transmit(instance, (uint8_t *)recv_buf, (uint8_t *)recv_buf, send_length, config->data_width);
+ }
+ }
+ }
/* release cs */
if(message->cs_release)
@@ -297,38 +471,340 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
}
return message->length;
-};
+}
+
+static void _dma_base_channel_check(struct at32_spi *instance)
+{
+ dma_channel_type *rx_channel = instance->config->dma_rx->dma_channel;
+ dma_channel_type *tx_channel = instance->config->dma_tx->dma_channel;
+
+ if(instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX)
+ {
+ instance->config->dma_rx->dma_done = RT_TRUE;
+ instance->config->dma_rx->dma_x = (dma_type *)((rt_uint32_t)rx_channel & ~0xFF);
+ instance->config->dma_rx->channel_index = ((((rt_uint32_t)rx_channel & 0xFF) - 8) / 0x14) + 1;
+ }
+
+ if(instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX)
+ {
+ instance->config->dma_tx->dma_done = RT_TRUE;
+ instance->config->dma_tx->dma_x = (dma_type *)((rt_uint32_t)tx_channel & ~0xFF);
+ instance->config->dma_tx->channel_index = ((((rt_uint32_t)tx_channel & 0xFF) - 8) / 0x14) + 1;
+ }
+}
+
+static void at32_spi_dma_init(struct at32_spi *instance)
+{
+ dma_init_type dma_init_struct;
+
+ /* search dma base and channel index */
+ _dma_base_channel_check(instance);
+
+ /* config dma channel */
+ dma_default_para_init(&dma_init_struct);
+ dma_init_struct.peripheral_inc_enable = FALSE;
+ dma_init_struct.memory_inc_enable = TRUE;
+ dma_init_struct.peripheral_data_width = DMA_PERIPHERAL_DATA_WIDTH_BYTE;
+ dma_init_struct.memory_data_width = DMA_MEMORY_DATA_WIDTH_BYTE;
+ dma_init_struct.priority = DMA_PRIORITY_MEDIUM;
+ dma_init_struct.loop_mode_enable = FALSE;
+
+ if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX)
+ {
+ crm_periph_clock_enable(instance->config->dma_rx->dma_clock, TRUE);
+ dma_init_struct.direction = DMA_DIR_PERIPHERAL_TO_MEMORY;
+
+ dma_reset(instance->config->dma_rx->dma_channel);
+ dma_init(instance->config->dma_rx->dma_channel, &dma_init_struct);
+#if defined (SOC_SERIES_AT32F435) || defined (SOC_SERIES_AT32F437)
+ dmamux_enable(instance->config->dma_rx->dma_x, TRUE);
+ dmamux_init(instance->config->dma_rx->dmamux_channel, (dmamux_requst_id_sel_type)instance->config->dma_rx->request_id);
+#endif
+ /* dma irq should set in dma rx mode */
+ nvic_irq_enable(instance->config->dma_rx->dma_irqn, 0, 1);
+ }
+
+ if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX)
+ {
+ crm_periph_clock_enable(instance->config->dma_tx->dma_clock, TRUE);
+ dma_init_struct.direction = DMA_DIR_MEMORY_TO_PERIPHERAL;
+
+ dma_reset(instance->config->dma_tx->dma_channel);
+ dma_init(instance->config->dma_tx->dma_channel, &dma_init_struct);
+#if defined (SOC_SERIES_AT32F435) || defined (SOC_SERIES_AT32F437)
+ dmamux_enable(instance->config->dma_tx->dma_x, TRUE);
+ dmamux_init(instance->config->dma_tx->dmamux_channel, (dmamux_requst_id_sel_type)instance->config->dma_tx->request_id);
+#endif
+ /* dma irq should set in dma tx mode */
+ nvic_irq_enable(instance->config->dma_tx->dma_irqn, 0, 1);
+ }
+
+ if((instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX) || \
+ (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX))
+ {
+ nvic_irq_enable(instance->config->irqn, 0, 0);
+ }
+}
+
+void dma_isr(struct dma_config *dma_instance)
+{
+ volatile rt_uint32_t reg_sts = 0, index = 0;
+
+ reg_sts = dma_instance->dma_x->sts;
+ index = dma_instance->channel_index;
+
+ if ((reg_sts & (DMA_FDT_FLAG << (4 * (index - 1)))) != RESET)
+ {
+ /* clear dma flag */
+ dma_instance->dma_x->clr |= (rt_uint32_t)((DMA_FDT_FLAG << (4 * (index - 1))) | \
+ (DMA_HDT_FLAG << (4 * (index - 1))));
+ /* disable interrupt */
+ dma_interrupt_enable(dma_instance->dma_channel, DMA_FDT_INT, FALSE);
+ /* disable dma channel */
+ dma_channel_enable(dma_instance->dma_channel, FALSE);
+ /* mark done flag */
+ dma_instance->dma_done = RT_TRUE;
+ }
+}
+
+void spi_isr(spi_type *spi_x)
+{
+ if(spi_i2s_flag_get(spi_x, SPI_I2S_ROERR_FLAG) != RESET)
+ {
+ /* clear rx overrun error flag */
+ spi_i2s_flag_clear(spi_x, SPI_I2S_ROERR_FLAG);
+ }
+
+ if(spi_i2s_flag_get(spi_x, SPI_MMERR_FLAG) != RESET)
+ {
+ /* clear master mode error flag */
+ spi_i2s_flag_clear(spi_x, SPI_MMERR_FLAG);
+ }
+}
-static struct at32_spi_config configs[] = {
#ifdef BSP_USING_SPI1
- {SPI1, "spi1"},
+void SPI1_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ spi_isr(spi_config[SPI1_INDEX].spi_x);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#if defined(BSP_SPI1_RX_USING_DMA)
+void SPI1_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI1_INDEX].dma_rx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI1_RX_USING_DMA) */
+#if defined(BSP_SPI1_TX_USING_DMA)
+void SPI1_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI1_INDEX].dma_tx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI1_TX_USING_DMA) */
+#endif
+#ifdef BSP_USING_SPI2
+void SPI2_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ spi_isr(spi_config[SPI2_INDEX].spi_x);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#if defined(BSP_SPI2_RX_USING_DMA)
+void SPI2_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI2_INDEX].dma_rx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI2_RX_USING_DMA) */
+#if defined(BSP_SPI2_TX_USING_DMA)
+void SPI2_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI2_INDEX].dma_tx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI2_TX_USING_DMA) */
+#endif
+#ifdef BSP_USING_SPI3
+void SPI3_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ spi_isr(spi_config[SPI3_INDEX].spi_x);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#if defined(BSP_SPI3_RX_USING_DMA)
+void SPI3_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI3_INDEX].dma_rx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI3_RX_USING_DMA) */
+#if defined(BSP_SPI3_TX_USING_DMA)
+void SPI3_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI3_INDEX].dma_tx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI3_TX_USING_DMA) */
+#endif
+#ifdef BSP_USING_SPI4
+void SPI4_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ spi_isr(spi_config[SPI4_INDEX].spi_x);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#if defined(BSP_SPI4_RX_USING_DMA)
+void SPI4_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI4_INDEX].dma_rx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI4_RX_USING_DMA) */
+#if defined(BSP_SPI4_TX_USING_DMA)
+void SPI4_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_isr(spi_config[SPI4_INDEX].dma_tx);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(BSP_SPI14_TX_USING_DMA) */
+#endif
+
+static struct at32_spi spis[sizeof(spi_config) / sizeof(spi_config[0])] = {0};
+
+static void at32_spi_get_dma_config(void)
+{
+#ifdef BSP_USING_SPI1
+ spi_config[SPI1_INDEX].spi_dma_flag = 0;
+#ifdef BSP_SPI1_RX_USING_DMA
+ spi_config[SPI1_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config spi1_dma_rx = SPI1_RX_DMA_CONFIG;
+ spi_config[SPI1_INDEX].dma_rx = &spi1_dma_rx;
+#endif
+#ifdef BSP_SPI1_TX_USING_DMA
+ spi_config[SPI1_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config spi1_dma_tx = SPI1_TX_DMA_CONFIG;
+ spi_config[SPI1_INDEX].dma_tx = &spi1_dma_tx;
+#endif
#endif
#ifdef BSP_USING_SPI2
- {SPI2, "spi2"},
+ spi_config[SPI2_INDEX].spi_dma_flag = 0;
+#ifdef BSP_SPI2_RX_USING_DMA
+ spi_config[SPI2_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config spi2_dma_rx = SPI2_RX_DMA_CONFIG;
+ spi_config[SPI2_INDEX].dma_rx = &spi2_dma_rx;
+#endif
+#ifdef BSP_SPI2_TX_USING_DMA
+ spi_config[SPI2_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config spi2_dma_tx = SPI2_TX_DMA_CONFIG;
+ spi_config[SPI2_INDEX].dma_tx = &spi2_dma_tx;
+#endif
#endif
#ifdef BSP_USING_SPI3
- {SPI3, "spi3"},
+ spi_config[SPI3_INDEX].spi_dma_flag = 0;
+#ifdef BSP_SPI3_RX_USING_DMA
+ spi_config[SPI3_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config spi3_dma_rx = SPI3_RX_DMA_CONFIG;
+ spi_config[SPI3_INDEX].dma_rx = &spi3_dma_rx;
+#endif
+#ifdef BSP_SPI3_TX_USING_DMA
+ spi_config[SPI3_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config spi3_dma_tx = SPI3_TX_DMA_CONFIG;
+ spi_config[SPI3_INDEX].dma_tx = &spi3_dma_tx;
+#endif
#endif
#ifdef BSP_USING_SPI4
- {SPI4, "spi4"},
+ spi_config[SPI4_INDEX].spi_dma_flag = 0;
+#ifdef BSP_SPI4_RX_USING_DMA
+ spi_config[SPI4_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config spi4_dma_rx = SPI4_RX_DMA_CONFIG;
+ spi_config[SPI4_INDEX].dma_rx = &spi4_dma_rx;
#endif
-};
-
-static struct at32_spi spis[sizeof(configs) / sizeof(configs[0])] = {0};
+#ifdef BSP_SPI4_TX_USING_DMA
+ spi_config[SPI4_INDEX].spi_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config spi4_dma_tx = SPI4_TX_DMA_CONFIG;
+ spi_config[SPI4_INDEX].dma_tx = &spi4_dma_tx;
+#endif
+#endif
+}
int rt_hw_spi_init(void)
{
int i;
rt_err_t result;
- rt_size_t obj_num = sizeof(spis) / sizeof(struct at32_spi);
+ rt_size_t obj_num = sizeof(spi_config) / sizeof(spi_config[0]);
+
+ at32_spi_get_dma_config();
for (i = 0; i < obj_num; i++)
{
- spis[i].config = &configs[i];
+ spis[i].config = &spi_config[i];
spis[i].spi_bus.parent.user_data = (void *)&spis[i];
+
+ if(spis[i].config->spi_dma_flag & (RT_DEVICE_FLAG_DMA_RX | RT_DEVICE_FLAG_DMA_TX))
+ {
+ at32_spi_dma_init(&spis[i]);
+ }
result = rt_spi_bus_register(&(spis[i].spi_bus), spis[i].config->spi_name, &at32_spi_ops);
}
diff --git a/bsp/at32/libraries/rt_drivers/drv_spi.h b/bsp/at32/libraries/rt_drivers/drv_spi.h
index 74cc6c4e73..dd6cf48146 100644
--- a/bsp/at32/libraries/rt_drivers/drv_spi.h
+++ b/bsp/at32/libraries/rt_drivers/drv_spi.h
@@ -14,11 +14,16 @@
#include <rtthread.h>
#include <drivers/spi.h>
#include "drv_common.h"
+#include "drv_dma.h"
struct at32_spi_config
{
spi_type *spi_x;
const char *spi_name;
+ IRQn_Type irqn;
+ struct dma_config *dma_rx;
+ struct dma_config *dma_tx;
+ rt_uint16_t spi_dma_flag;
};
struct at32_spi
@@ -34,7 +39,6 @@ struct at32_spi_cs
};
/* public function */
-int rt_hw_spi_init(void);
rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, gpio_type *cs_gpiox, uint16_t cs_gpio_pin);
#endif // __DRV_SPI__
diff --git a/bsp/at32/libraries/rt_drivers/drv_usart.c b/bsp/at32/libraries/rt_drivers/drv_usart.c
index 832dca02be..fddc4b07e3 100644
--- a/bsp/at32/libraries/rt_drivers/drv_usart.c
+++ b/bsp/at32/libraries/rt_drivers/drv_usart.c
@@ -6,11 +6,12 @@
* Change Logs:
* Date Author Notes
* 2022-05-16 shelton first version
- * 2022-10-15 shelton optimize code
+ * 2022-11-10 shelton support uart dma
*/
#include "drv_common.h"
#include "drv_usart.h"
+#include "drv_config.h"
#ifdef RT_USING_SERIAL
#if !defined(BSP_USING_UART1) && !defined(BSP_USING_UART2) && \
@@ -20,13 +21,6 @@
#error "Please define at least one BSP_USING_UARTx"
#endif
-struct at32_usart {
- char *name;
- usart_type* usart_x;
- IRQn_Type irqn;
- struct rt_serial_device serial;
-};
-
enum {
#ifdef BSP_USING_UART1
UART1_INDEX,
@@ -54,52 +48,40 @@ enum {
#endif
};
-static struct at32_usart usart_config[] = {
+static struct at32_uart uart_config[] = {
#ifdef BSP_USING_UART1
- { "uart1",
- USART1,
- USART1_IRQn, },
+ UART1_CONFIG,
#endif
#ifdef BSP_USING_UART2
- { "uart2",
- USART2,
- USART2_IRQn, },
+ UART2_CONFIG,
#endif
#ifdef BSP_USING_UART3
- { "uart3",
- USART3,
- USART3_IRQn, },
+ UART3_CONFIG,
#endif
#ifdef BSP_USING_UART4
- { "uart4",
- UART4,
- UART4_IRQn, },
+ UART4_CONFIG,
#endif
#ifdef BSP_USING_UART5
- { "uart5",
- UART5,
- UART5_IRQn, },
+ UART5_CONFIG,
#endif
#ifdef BSP_USING_UART6
- { "uart6",
- USART6,
- USART6_IRQn, },
+ UART6_CONFIG,
#endif
#ifdef BSP_USING_UART7
- { "uart7",
- UART7,
- UART7_IRQn, },
+ UART7_CONFIG,
#endif
#ifdef BSP_USING_UART8
- { "uart8",
- UART8,
- UART8_IRQn, },
+ UART8_CONFIG,
#endif
};
+#ifdef RT_SERIAL_USING_DMA
+static void at32_dma_config(struct rt_serial_device *serial, rt_ubase_t flag);
+#endif
+
static rt_err_t at32_configure(struct rt_serial_device *serial,
struct serial_configure *cfg) {
- struct at32_usart *usart_instance = (struct at32_usart *) serial->parent.user_data;
+ struct at32_uart *instance = (struct at32_uart *) serial->parent.user_data;
usart_data_bit_num_type data_bit;
usart_stop_bit_num_type stop_bit;
usart_parity_selection_type parity_mode;
@@ -107,14 +89,14 @@ static rt_err_t at32_configure(struct rt_serial_device *serial,
RT_ASSERT(serial != RT_NULL);
RT_ASSERT(cfg != RT_NULL);
- RT_ASSERT(usart_instance != RT_NULL);
+ RT_ASSERT(instance != RT_NULL);
- at32_msp_usart_init((void *)usart_instance->usart_x);
+ at32_msp_usart_init((void *)instance->uart_x);
- usart_receiver_enable(usart_instance->usart_x, TRUE);
- usart_transmitter_enable(usart_instance->usart_x, TRUE);
+ usart_receiver_enable(instance->uart_x, TRUE);
+ usart_transmitter_enable(instance->uart_x, TRUE);
- usart_hardware_flow_control_set(usart_instance->usart_x, USART_HARDWARE_FLOW_NONE);
+ usart_hardware_flow_control_set(instance->uart_x, USART_HARDWARE_FLOW_NONE);
switch (cfg->data_bits) {
case DATA_BITS_8:
@@ -154,94 +136,347 @@ static rt_err_t at32_configure(struct rt_serial_device *serial,
parity_mode = USART_PARITY_NONE;
break;
}
- usart_parity_selection_config(usart_instance->usart_x, parity_mode);
- usart_init(usart_instance->usart_x, cfg->baud_rate, data_bit, stop_bit);
- usart_enable(usart_instance->usart_x, TRUE);
+
+#ifdef RT_SERIAL_USING_DMA
+ if (!(serial->parent.open_flag & RT_DEVICE_OFLAG_OPEN)) {
+ instance->last_index = 0;
+ }
+#endif
+
+ usart_parity_selection_config(instance->uart_x, parity_mode);
+ usart_init(instance->uart_x, cfg->baud_rate, data_bit, stop_bit);
+ usart_enable(instance->uart_x, TRUE);
return RT_EOK;
}
static rt_err_t at32_control(struct rt_serial_device *serial, int cmd, void *arg) {
- struct at32_usart *usart;
+ struct at32_uart *instance;
+
+#ifdef RT_SERIAL_USING_DMA
+ rt_ubase_t ctrl_arg = (rt_ubase_t)arg;
+#endif
RT_ASSERT(serial != RT_NULL);
- usart = (struct at32_usart *) serial->parent.user_data;
- RT_ASSERT(usart != RT_NULL);
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
switch (cmd) {
case RT_DEVICE_CTRL_CLR_INT:
- nvic_irq_disable(usart->irqn);
- usart_interrupt_enable(usart->usart_x, USART_RDBF_INT, FALSE);
+ nvic_irq_disable(instance->irqn);
+ usart_interrupt_enable(instance->uart_x, USART_RDBF_INT, FALSE);
+
+#ifdef RT_SERIAL_USING_DMA
+ /* disable DMA */
+ if (ctrl_arg == RT_DEVICE_FLAG_DMA_RX)
+ {
+ nvic_irq_disable(instance->dma_rx->dma_irqn);
+ dma_reset(instance->dma_rx->dma_channel);
+ }
+ else if(ctrl_arg == RT_DEVICE_FLAG_DMA_TX)
+ {
+ nvic_irq_disable(instance->dma_tx->dma_irqn);
+ dma_reset(instance->dma_tx->dma_channel);
+ }
+#endif
break;
case RT_DEVICE_CTRL_SET_INT:
- nvic_irq_enable(usart->irqn, 2, 1);
- usart_interrupt_enable(usart->usart_x, USART_RDBF_INT, TRUE);
+ nvic_irq_enable(instance->irqn, 1, 0);
+ usart_interrupt_enable(instance->uart_x, USART_RDBF_INT, TRUE);
break;
+#ifdef RT_SERIAL_USING_DMA
+ case RT_DEVICE_CTRL_CONFIG:
+ at32_dma_config(serial, ctrl_arg);
+ break;
+#endif
}
return RT_EOK;
}
static int at32_putc(struct rt_serial_device *serial, char ch) {
- struct at32_usart *usart;
+ struct at32_uart *instance;
RT_ASSERT(serial != RT_NULL);
- usart = (struct at32_usart *) serial->parent.user_data;
- RT_ASSERT(usart != RT_NULL);
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
- usart_data_transmit(usart->usart_x, (uint8_t)ch);
- while (usart_flag_get(usart->usart_x, USART_TDC_FLAG) == RESET);
+ usart_data_transmit(instance->uart_x, (uint8_t)ch);
+ while (usart_flag_get(instance->uart_x, USART_TDC_FLAG) == RESET);
return 1;
}
static int at32_getc(struct rt_serial_device *serial) {
int ch;
- struct at32_usart *usart;
+ struct at32_uart *instance;
RT_ASSERT(serial != RT_NULL);
- usart = (struct at32_usart *) serial->parent.user_data;
- RT_ASSERT(usart != RT_NULL);
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
ch = -1;
- if (usart_flag_get(usart->usart_x, USART_RDBF_FLAG) != RESET) {
- ch = usart_data_receive(usart->usart_x) & 0xff;
+ if (usart_flag_get(instance->uart_x, USART_RDBF_FLAG) != RESET) {
+ ch = usart_data_receive(instance->uart_x) & 0xff;
}
return ch;
}
-static const struct rt_uart_ops at32_usart_ops = {
+#ifdef RT_SERIAL_USING_DMA
+static void _uart_dma_receive(struct at32_uart *instance, rt_uint8_t *buffer, rt_uint32_t size)
+{
+ dma_channel_type* dma_channel = instance->dma_rx->dma_channel;
+
+ dma_channel->dtcnt = size;
+ dma_channel->paddr = (rt_uint32_t)&(instance->uart_x->dt);
+ dma_channel->maddr = (rt_uint32_t)buffer;
+ /* enable usart interrupt */
+ usart_interrupt_enable(instance->uart_x, USART_PERR_INT, TRUE);
+ usart_interrupt_enable(instance->uart_x, USART_IDLE_INT, TRUE);
+ /* enable transmit complete interrupt */
+ dma_interrupt_enable(dma_channel, DMA_FDT_INT, TRUE);
+ /* enable dma receive */
+ usart_dma_receiver_enable(instance->uart_x, TRUE);
+
+ /* enable dma channel */
+ dma_channel_enable(dma_channel, TRUE);
+}
+
+static void _uart_dma_transmit(struct at32_uart *instance, rt_uint8_t *buffer, rt_uint32_t size)
+{
+ /* wait before transfer complete */
+ while(instance->dma_tx->dma_done == RT_FALSE);
+
+ dma_channel_type *dma_channel = instance->dma_tx->dma_channel;
+
+ dma_channel->dtcnt = size;
+ dma_channel->paddr = (rt_uint32_t)&(instance->uart_x->dt);
+ dma_channel->maddr = (rt_uint32_t)buffer;
+
+ /* enable transmit complete interrupt */
+ dma_interrupt_enable(dma_channel, DMA_FDT_INT, TRUE);
+ /* enable dma transmit */
+ usart_dma_transmitter_enable(instance->uart_x, TRUE);
+
+ /* mark dma flag */
+ instance->dma_tx->dma_done = RT_FALSE;
+ /* enable dma channel */
+ dma_channel_enable(dma_channel, TRUE);
+}
+
+static void at32_dma_config(struct rt_serial_device *serial, rt_ubase_t flag)
+{
+ dma_init_type dma_init_struct;
+ dma_channel_type *dma_channel = NULL;
+ struct rt_serial_rx_fifo *rx_fifo;
+ struct at32_uart *instance;
+ struct dma_config *dma_config;
+
+ RT_ASSERT(serial != RT_NULL);
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
+
+ RT_ASSERT(flag == RT_DEVICE_FLAG_DMA_TX || flag == RT_DEVICE_FLAG_DMA_RX);
+
+ if (RT_DEVICE_FLAG_DMA_RX == flag)
+ {
+ dma_channel = instance->dma_rx->dma_channel;
+ dma_config = instance->dma_rx;
+ }
+ else /* RT_DEVICE_FLAG_DMA_TX == flag */
+ {
+ dma_channel = instance->dma_tx->dma_channel;
+ dma_config = instance->dma_tx;
+ }
+
+ crm_periph_clock_enable(dma_config->dma_clock, TRUE);
+ dma_default_para_init(&dma_init_struct);
+ dma_init_struct.peripheral_inc_enable = FALSE;
+ dma_init_struct.memory_inc_enable = TRUE;
+ dma_init_struct.peripheral_data_width = DMA_PERIPHERAL_DATA_WIDTH_BYTE;
+ dma_init_struct.memory_data_width = DMA_MEMORY_DATA_WIDTH_BYTE;
+ dma_init_struct.priority = DMA_PRIORITY_MEDIUM;
+
+ if (RT_DEVICE_FLAG_DMA_RX == flag)
+ {
+ dma_init_struct.direction = DMA_DIR_PERIPHERAL_TO_MEMORY;
+ dma_init_struct.loop_mode_enable = TRUE;
+ }
+ else if (RT_DEVICE_FLAG_DMA_TX == flag)
+ {
+ dma_init_struct.direction = DMA_DIR_MEMORY_TO_PERIPHERAL;
+ dma_init_struct.loop_mode_enable = FALSE;
+ }
+
+ dma_reset(dma_channel);
+ dma_init(dma_channel, &dma_init_struct);
+#if defined (SOC_SERIES_AT32F435) || defined (SOC_SERIES_AT32F437)
+ dmamux_enable(dma_config->dma_x, TRUE);
+ dmamux_init(dma_config->dmamux_channel, (dmamux_requst_id_sel_type)dma_config->request_id);
+#endif
+ /* enable interrupt */
+ if (flag == RT_DEVICE_FLAG_DMA_RX)
+ {
+ rx_fifo = (struct rt_serial_rx_fifo *)serial->serial_rx;
+ /* start dma transfer */
+ _uart_dma_receive(instance, rx_fifo->buffer, serial->config.bufsz);
+ }
+
+ /* dma irq should set in dma tx mode */
+ nvic_irq_enable(dma_config->dma_irqn, 0, 0);
+ nvic_irq_enable(instance->irqn, 1, 0);
+}
+
+static rt_size_t at32_dma_transmit(struct rt_serial_device *serial, rt_uint8_t *buf, rt_size_t size, int direction)
+{
+ struct at32_uart *instance;
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
+ RT_ASSERT(serial != RT_NULL);
+ RT_ASSERT(buf != RT_NULL);
+
+ if (size == 0)
+ {
+ return 0;
+ }
+
+ if (RT_SERIAL_DMA_TX == direction)
+ {
+ _uart_dma_transmit(instance, buf, size);
+ }
+
+ return size;
+}
+#endif
+
+static const struct rt_uart_ops at32_uart_ops = {
at32_configure,
at32_control,
at32_putc,
at32_getc,
- RT_NULL
+#ifdef RT_SERIAL_USING_DMA
+ at32_dma_transmit,
+#endif
};
-static void usart_isr(struct rt_serial_device *serial) {
- struct at32_usart *usart_instance;
+#ifdef RT_SERIAL_USING_DMA
+void dma_rx_isr(struct rt_serial_device *serial)
+{
+ volatile rt_uint32_t reg_sts = 0, index = 0;
+ rt_size_t recv_total_index, recv_len;
+ rt_base_t level;
+ struct at32_uart *instance;
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
+
+ reg_sts = instance->dma_rx->dma_x->sts;
+ index = instance->dma_rx->channel_index;
+
+ if (((reg_sts & (DMA_FDT_FLAG << (4 * (index - 1)))) != RESET) ||
+ ((reg_sts & (DMA_HDT_FLAG << (4 * (index - 1)))) != RESET))
+ {
+ /* clear dma flag */
+ instance->dma_rx->dma_x->clr |= (rt_uint32_t)(DMA_FDT_FLAG << (4 * (index - 1))) | (DMA_HDT_FLAG << (4 * (index - 1)));
+
+ level = rt_hw_interrupt_disable();
+ recv_total_index = serial->config.bufsz - dma_data_number_get(instance->dma_rx->dma_channel);
+ if (recv_total_index == 0)
+ {
+ recv_len = serial->config.bufsz - instance->last_index;
+ }
+ else
+ {
+ recv_len = recv_total_index - instance->last_index;
+ }
+ instance->last_index = recv_total_index;
+ rt_hw_interrupt_enable(level);
+ if (recv_len)
+ {
+ rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_DMADONE | (recv_len << 8));
+ }
+ }
+}
+
+void dma_tx_isr(struct rt_serial_device *serial)
+{
+ volatile rt_uint32_t reg_sts = 0, index = 0;
+ rt_size_t trans_total_index;
+ rt_base_t level;
+ RT_ASSERT(serial != RT_NULL);
+ struct at32_uart *instance;
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
+
+ reg_sts = instance->dma_tx->dma_x->sts;
+ index = instance->dma_tx->channel_index;
+
+ if ((reg_sts & (DMA_FDT_FLAG << (4 * (index - 1)))) != RESET)
+ {
+ /* mark dma flag */
+ instance->dma_tx->dma_done = RT_TRUE;
+ /* clear dma flag */
+ instance->dma_tx->dma_x->clr |= (rt_uint32_t)(DMA_FDT_FLAG << (4 * (index - 1)));
+ /* disable dma tx channel */
+ dma_channel_enable(instance->dma_tx->dma_channel, FALSE);
+
+ level = rt_hw_interrupt_disable();
+ trans_total_index = dma_data_number_get(instance->dma_tx->dma_channel);
+ rt_hw_interrupt_enable(level);
+
+ if (trans_total_index == 0)
+ {
+ rt_hw_serial_isr(serial, RT_SERIAL_EVENT_TX_DMADONE);
+ }
+ }
+}
+#endif
+
+static void usart_isr(struct rt_serial_device *serial) {
+ struct at32_uart *instance;
+#ifdef RT_SERIAL_USING_DMA
+ rt_size_t recv_total_index, recv_len;
+ rt_base_t level;
+#endif
RT_ASSERT(serial != RT_NULL);
- usart_instance = (struct at32_usart *) serial->parent.user_data;
- RT_ASSERT(usart_instance != RT_NULL);
+ instance = (struct at32_uart *) serial->parent.user_data;
+ RT_ASSERT(instance != RT_NULL);
- if (usart_flag_get(usart_instance->usart_x, USART_RDBF_FLAG) != RESET) {
+ if (usart_flag_get(instance->uart_x, USART_RDBF_FLAG) != RESET) {
rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
}
+#ifdef RT_SERIAL_USING_DMA
+ else if (usart_flag_get(instance->uart_x, USART_IDLEF_FLAG) != RESET)
+ {
+ /* clear idle flag */
+ usart_data_receive(instance->uart_x);
+
+ level = rt_hw_interrupt_disable();
+ recv_total_index = serial->config.bufsz - dma_data_number_get(instance->dma_rx->dma_channel);
+ recv_len = recv_total_index - instance->last_index;
+ instance->last_index = recv_total_index;
+ rt_hw_interrupt_enable(level);
+
+ if (recv_len)
+ {
+ rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_DMADONE | (recv_len << 8));
+ }
+ }
+#endif
else
{
- if (usart_flag_get(usart_instance->usart_x, USART_CTSCF_FLAG) != RESET) {
- usart_flag_clear(usart_instance->usart_x, USART_CTSCF_FLAG);
+ if (usart_flag_get(instance->uart_x, USART_CTSCF_FLAG) != RESET) {
+ usart_flag_clear(instance->uart_x, USART_CTSCF_FLAG);
}
- if (usart_flag_get(usart_instance->usart_x, USART_BFF_FLAG) != RESET) {
- usart_flag_clear(usart_instance->usart_x, USART_BFF_FLAG);
+ if (usart_flag_get(instance->uart_x, USART_BFF_FLAG) != RESET) {
+ usart_flag_clear(instance->uart_x, USART_BFF_FLAG);
}
- if (usart_flag_get(usart_instance->usart_x, USART_TDC_FLAG) != RESET) {
- usart_flag_clear(usart_instance->usart_x, USART_TDC_FLAG);
+ if (usart_flag_get(instance->uart_x, USART_TDC_FLAG) != RESET) {
+ usart_flag_clear(instance->uart_x, USART_TDC_FLAG);
}
}
}
@@ -250,94 +485,423 @@ static void usart_isr(struct rt_serial_device *serial) {
void USART1_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART1_INDEX].serial);
+ usart_isr(&uart_config[UART1_INDEX].serial);
rt_interrupt_leave();
}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART1_RX_USING_DMA)
+void UART1_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART1_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART1_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART1_TX_USING_DMA)
+void UART1_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART1_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART1_TX_USING_DMA) */
#endif
#ifdef BSP_USING_UART2
void USART2_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART2_INDEX].serial);
+ usart_isr(&uart_config[UART2_INDEX].serial);
+
+ rt_interrupt_leave();
+}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART2_RX_USING_DMA)
+void UART2_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART2_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART2_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART2_TX_USING_DMA)
+void UART2_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART2_INDEX].serial);
+ /* leave interrupt */
rt_interrupt_leave();
}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART2_TX_USING_DMA) */
#endif
#ifdef BSP_USING_UART3
void USART3_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART3_INDEX].serial);
+ usart_isr(&uart_config[UART3_INDEX].serial);
rt_interrupt_leave();
}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART3_RX_USING_DMA)
+void UART3_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART3_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART3_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART3_TX_USING_DMA)
+void UART3_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART3_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART3_TX_USING_DMA) */
#endif
#ifdef BSP_USING_UART4
void UART4_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART4_INDEX].serial);
+ usart_isr(&uart_config[UART4_INDEX].serial);
rt_interrupt_leave();
}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART4_RX_USING_DMA)
+void UART4_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART4_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART4_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART4_TX_USING_DMA)
+void UART4_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART4_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART14_TX_USING_DMA) */
#endif
#ifdef BSP_USING_UART5
void UART5_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART5_INDEX].serial);
+ usart_isr(&uart_config[UART5_INDEX].serial);
+
+ rt_interrupt_leave();
+}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART5_RX_USING_DMA)
+void UART5_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART5_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART5_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART5_TX_USING_DMA)
+void UART5_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART5_INDEX].serial);
+ /* leave interrupt */
rt_interrupt_leave();
}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART5_TX_USING_DMA) */
#endif
#ifdef BSP_USING_UART6
void USART6_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART6_INDEX].serial);
+ usart_isr(&uart_config[UART6_INDEX].serial);
+
+ rt_interrupt_leave();
+}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART6_RX_USING_DMA)
+void UART6_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART6_INDEX].serial);
+ /* leave interrupt */
rt_interrupt_leave();
}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART6_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART6_TX_USING_DMA)
+void UART6_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART6_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART6_TX_USING_DMA) */
#endif
#ifdef BSP_USING_UART7
void UART7_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART7_INDEX].serial);
+ usart_isr(&uart_config[UART7_INDEX].serial);
rt_interrupt_leave();
}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART7_RX_USING_DMA)
+void UART7_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART7_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART7_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART7_TX_USING_DMA)
+void UART7_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART7_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART7_TX_USING_DMA) */
#endif
#ifdef BSP_USING_UART8
void UART8_IRQHandler(void) {
rt_interrupt_enter();
- usart_isr(&usart_config[UART8_INDEX].serial);
+ usart_isr(&uart_config[UART8_INDEX].serial);
+
+ rt_interrupt_leave();
+}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART8_RX_USING_DMA)
+void UART8_RX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_rx_isr(&uart_config[UART8_INDEX].serial);
+ /* leave interrupt */
rt_interrupt_leave();
}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART8_RX_USING_DMA) */
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART8_TX_USING_DMA)
+void UART8_TX_DMA_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ dma_tx_isr(&uart_config[UART8_INDEX].serial);
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART8_TX_USING_DMA) */
+#endif
+
+#if defined (RT_SERIAL_USING_DMA)
+static void _dma_base_channel_check(struct at32_uart *instance)
+{
+ dma_channel_type *rx_channel = instance->dma_rx->dma_channel;
+ dma_channel_type *tx_channel = instance->dma_tx->dma_channel;
+
+ instance->dma_rx->dma_done = RT_TRUE;
+ instance->dma_rx->dma_x = (dma_type *)((rt_uint32_t)rx_channel & ~0xFF);
+ instance->dma_rx->channel_index = ((((rt_uint32_t)rx_channel & 0xFF) - 8) / 0x14) + 1;
+
+ instance->dma_tx->dma_done = RT_TRUE;
+ instance->dma_tx->dma_x = (dma_type *)((rt_uint32_t)tx_channel & ~0xFF);
+ instance->dma_tx->channel_index = ((((rt_uint32_t)tx_channel & 0xFF) - 8) / 0x14) + 1;
+}
+#endif
+
+static void at32_uart_get_dma_config(void)
+{
+#ifdef BSP_USING_UART1
+ uart_config[UART1_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART1_RX_USING_DMA
+ uart_config[UART1_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart1_dma_rx = UART1_RX_DMA_CONFIG;
+ uart_config[UART1_INDEX].dma_rx = &uart1_dma_rx;
+#endif
+#ifdef BSP_UART1_TX_USING_DMA
+ uart_config[UART1_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart1_dma_tx = UART1_TX_DMA_CONFIG;
+ uart_config[UART1_INDEX].dma_tx = &uart1_dma_tx;
+#endif
+#endif
+
+#ifdef BSP_USING_UART2
+ uart_config[UART2_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART2_RX_USING_DMA
+ uart_config[UART2_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart2_dma_rx = UART2_RX_DMA_CONFIG;
+ uart_config[UART2_INDEX].dma_rx = &uart2_dma_rx;
+#endif
+#ifdef BSP_UART2_TX_USING_DMA
+ uart_config[UART2_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart2_dma_tx = UART2_TX_DMA_CONFIG;
+ uart_config[UART2_INDEX].dma_tx = &uart2_dma_tx;
+#endif
+#endif
+
+#ifdef BSP_USING_UART3
+ uart_config[UART3_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART3_RX_USING_DMA
+ uart_config[UART3_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart3_dma_rx = UART3_RX_DMA_CONFIG;
+ uart_config[UART3_INDEX].dma_rx = &uart3_dma_rx;
+#endif
+#ifdef BSP_UART3_TX_USING_DMA
+ uart_config[UART3_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart3_dma_tx = UART3_TX_DMA_CONFIG;
+ uart_config[UART3_INDEX].dma_tx = &uart3_dma_tx;
+#endif
+#endif
+
+#ifdef BSP_USING_UART4
+ uart_config[UART4_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART4_RX_USING_DMA
+ uart_config[UART4_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart4_dma_rx = UART4_RX_DMA_CONFIG;
+ uart_config[UART4_INDEX].dma_rx = &uart4_dma_rx;
+#endif
+#ifdef BSP_UART4_TX_USING_DMA
+ uart_config[UART4_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart4_dma_tx = UART4_TX_DMA_CONFIG;
+ uart_config[UART4_INDEX].dma_tx = &uart4_dma_tx;
+#endif
+#endif
+
+#ifdef BSP_USING_UART5
+ uart_config[UART5_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART5_RX_USING_DMA
+ uart_config[UART5_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart5_dma_rx = UART5_RX_DMA_CONFIG;
+ uart_config[UART5_INDEX].dma_rx = &uart5_dma_rx;
+#endif
+#ifdef BSP_UART5_TX_USING_DMA
+ uart_config[UART5_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart5_dma_tx = UART5_TX_DMA_CONFIG;
+ uart_config[UART5_INDEX].dma_tx = &uart5_dma_tx;
+#endif
+#endif
+
+#ifdef BSP_USING_UART6
+ uart_config[UART6_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART6_RX_USING_DMA
+ uart_config[UART6_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart6_dma_rx = UART6_RX_DMA_CONFIG;
+ uart_config[UART6_INDEX].dma_rx = &uart6_dma_rx;
+#endif
+#ifdef BSP_UART6_TX_USING_DMA
+ uart_config[UART6_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart6_dma_tx = UART6_TX_DMA_CONFIG;
+ uart_config[UART6_INDEX].dma_tx = &uart6_dma_tx;
+#endif
#endif
+#ifdef BSP_USING_UART7
+ uart_config[UART7_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART7_RX_USING_DMA
+ uart_config[UART7_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart7_dma_rx = UART7_RX_DMA_CONFIG;
+ uart_config[UART7_INDEX].dma_rx = &uart7_dma_rx;
+#endif
+#ifdef BSP_UART7_TX_USING_DMA
+ uart_config[UART7_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart7_dma_tx = UART7_TX_DMA_CONFIG;
+ uart_config[UART7_INDEX].dma_tx = &uart7_dma_tx;
+#endif
+#endif
+
+#ifdef BSP_USING_UART8
+ uart_config[UART8_INDEX].uart_dma_flag = 0;
+#ifdef BSP_UART8_RX_USING_DMA
+ uart_config[UART8_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config uart8_dma_rx = UART8_RX_DMA_CONFIG;
+ uart_config[UART8_INDEX].dma_rx = &uart8_dma_rx;
+#endif
+#ifdef BSP_UART8_TX_USING_DMA
+ uart_config[UART8_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_TX;
+ static struct dma_config uart8_dma_tx = UART8_TX_DMA_CONFIG;
+ uart_config[UART8_INDEX].dma_tx = &uart8_dma_tx;
+#endif
+#endif
+}
+
int rt_hw_usart_init(void) {
rt_size_t obj_num;
int index;
- obj_num = sizeof(usart_config) / sizeof(struct at32_usart);
+ obj_num = sizeof(uart_config) / sizeof(struct at32_uart);
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
rt_err_t result = 0;
+ at32_uart_get_dma_config();
+
for (index = 0; index < obj_num; index++) {
- usart_config[index].serial.ops = &at32_usart_ops;
- usart_config[index].serial.config = config;
+ uart_config[index].serial.ops = &at32_uart_ops;
+ uart_config[index].serial.config = config;
+#if defined (RT_SERIAL_USING_DMA)
+ /* search dma base and channel index */
+ _dma_base_channel_check(&uart_config[index]);
+#endif
/* register uart device */
- result = rt_hw_serial_register(&usart_config[index].serial,
- usart_config[index].name,
+ result = rt_hw_serial_register(&uart_config[index].serial,
+ uart_config[index].name,
RT_DEVICE_FLAG_RDWR |
RT_DEVICE_FLAG_INT_RX |
- RT_DEVICE_FLAG_INT_TX,
- &usart_config[index]);
+ uart_config[index].uart_dma_flag ,
+ &uart_config[index]);
RT_ASSERT(result == RT_EOK);
}
diff --git a/bsp/at32/libraries/rt_drivers/drv_usart.h b/bsp/at32/libraries/rt_drivers/drv_usart.h
index fc493d42da..f1e625991d 100644
--- a/bsp/at32/libraries/rt_drivers/drv_usart.h
+++ b/bsp/at32/libraries/rt_drivers/drv_usart.h
@@ -13,6 +13,18 @@
#include <rtthread.h>
#include <rtdevice.h>
+#include "drv_dma.h"
+
+struct at32_uart {
+ char *name;
+ usart_type *uart_x;
+ IRQn_Type irqn;
+ struct dma_config *dma_rx;
+ rt_size_t last_index;
+ struct dma_config *dma_tx;
+ rt_uint16_t uart_dma_flag;
+ struct rt_serial_device serial;
+};
int rt_hw_usart_init(void);