diff --git a/bsp/CME_M7/rtconfig.h b/bsp/CME_M7/rtconfig.h
index f981ad9a91..886c28cb9e 100644
--- a/bsp/CME_M7/rtconfig.h
+++ b/bsp/CME_M7/rtconfig.h
@@ -55,6 +55,7 @@
#define RT_USING_DEVICE
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/allwinner_tina/.config b/bsp/allwinner_tina/.config
index 3a40f9d566..de547c5a34 100644
--- a/bsp/allwinner_tina/.config
+++ b/bsp/allwinner_tina/.config
@@ -120,6 +120,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/allwinner_tina/rtconfig.h b/bsp/allwinner_tina/rtconfig.h
index 2fb7c07df3..25a1302b1a 100644
--- a/bsp/allwinner_tina/rtconfig.h
+++ b/bsp/allwinner_tina/rtconfig.h
@@ -111,6 +111,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/amebaz/.config b/bsp/amebaz/.config
index 4a513007e7..9412058c8e 100644
--- a/bsp/amebaz/.config
+++ b/bsp/amebaz/.config
@@ -106,6 +106,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/amebaz/rtconfig.h b/bsp/amebaz/rtconfig.h
index 5d8ee1df02..92bac2d294 100644
--- a/bsp/amebaz/rtconfig.h
+++ b/bsp/amebaz/rtconfig.h
@@ -75,6 +75,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* Using WiFi */
diff --git a/bsp/apollo2/rtconfig.h b/bsp/apollo2/rtconfig.h
index 5f94db4eff..dfa458bc4e 100644
--- a/bsp/apollo2/rtconfig.h
+++ b/bsp/apollo2/rtconfig.h
@@ -99,6 +99,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
#define RT_USING_I2C
diff --git a/bsp/asm9260t/.config b/bsp/asm9260t/.config
index ed77c0678d..e634c994c8 100644
--- a/bsp/asm9260t/.config
+++ b/bsp/asm9260t/.config
@@ -83,6 +83,7 @@ CONFIG_FINSH_CMD_SIZE=80
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_I2C is not set
diff --git a/bsp/asm9260t/rtconfig.h b/bsp/asm9260t/rtconfig.h
index def7f36a71..bf1f76fefb 100644
--- a/bsp/asm9260t/rtconfig.h
+++ b/bsp/asm9260t/rtconfig.h
@@ -75,6 +75,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_I2C is not set */
diff --git a/bsp/at91sam9260/rtconfig.h b/bsp/at91sam9260/rtconfig.h
index 62ceba4914..b9ec26f390 100755
--- a/bsp/at91sam9260/rtconfig.h
+++ b/bsp/at91sam9260/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/beaglebone/.config b/bsp/beaglebone/.config
index 0ff69f1164..409e89d18e 100644
--- a/bsp/beaglebone/.config
+++ b/bsp/beaglebone/.config
@@ -115,6 +115,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/beaglebone/rtconfig.h b/bsp/beaglebone/rtconfig.h
index 5bc7ab92db..c49528049d 100644
--- a/bsp/beaglebone/rtconfig.h
+++ b/bsp/beaglebone/rtconfig.h
@@ -77,6 +77,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using USB */
diff --git a/bsp/ck802/.config b/bsp/ck802/.config
index 4284658f94..e91f93fd0e 100644
--- a/bsp/ck802/.config
+++ b/bsp/ck802/.config
@@ -97,6 +97,7 @@ CONFIG_FINSH_ARG_MAX=10
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/ck802/rtconfig.h b/bsp/ck802/rtconfig.h
index 3eb48b11f0..076d48e534 100644
--- a/bsp/ck802/rtconfig.h
+++ b/bsp/ck802/rtconfig.h
@@ -71,6 +71,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using USB */
diff --git a/bsp/dm365/.config b/bsp/dm365/.config
index 30dc0871e5..6974ff8ae0 100644
--- a/bsp/dm365/.config
+++ b/bsp/dm365/.config
@@ -134,6 +134,7 @@ CONFIG_RT_NFS_HOST_EXPORT="192.168.1.5:/"
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/dm365/rtconfig.h b/bsp/dm365/rtconfig.h
index ae16abdca6..4f3698f124 100644
--- a/bsp/dm365/rtconfig.h
+++ b/bsp/dm365/rtconfig.h
@@ -125,6 +125,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/fh8620/rtconfig.h b/bsp/fh8620/rtconfig.h
index cefbff053c..01a2d2d45c 100644
--- a/bsp/fh8620/rtconfig.h
+++ b/bsp/fh8620/rtconfig.h
@@ -74,6 +74,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 64
//
diff --git a/bsp/frdm-k64f/rtconfig.h b/bsp/frdm-k64f/rtconfig.h
index d8e6f6dbc5..8d0ad639ce 100644
--- a/bsp/frdm-k64f/rtconfig.h
+++ b/bsp/frdm-k64f/rtconfig.h
@@ -63,6 +63,7 @@
#define RT_USING_DEVICE_IPC
/* Using Serial Device Driver Framework" default="true" */
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_USING_COMPONENTS_INIT
diff --git a/bsp/gd32303e-eval/.config b/bsp/gd32303e-eval/.config
index 94c9a258f0..b61d310f03 100644
--- a/bsp/gd32303e-eval/.config
+++ b/bsp/gd32303e-eval/.config
@@ -120,6 +120,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/gd32303e-eval/rtconfig.h b/bsp/gd32303e-eval/rtconfig.h
index 26f476db78..479ad99af5 100644
--- a/bsp/gd32303e-eval/rtconfig.h
+++ b/bsp/gd32303e-eval/rtconfig.h
@@ -87,6 +87,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_I2C
#define RT_USING_PIN
#define RT_USING_SPI
diff --git a/bsp/gd32450z-eval/.config b/bsp/gd32450z-eval/.config
index a04025b693..e2f00a07fc 100644
--- a/bsp/gd32450z-eval/.config
+++ b/bsp/gd32450z-eval/.config
@@ -131,6 +131,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/gd32450z-eval/rtconfig.h b/bsp/gd32450z-eval/rtconfig.h
index 1eaeb4b827..500aab6290 100644
--- a/bsp/gd32450z-eval/rtconfig.h
+++ b/bsp/gd32450z-eval/rtconfig.h
@@ -88,6 +88,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using USB */
diff --git a/bsp/gkipc/.config b/bsp/gkipc/.config
index b3a1cd2628..975b82b5b2 100644
--- a/bsp/gkipc/.config
+++ b/bsp/gkipc/.config
@@ -123,6 +123,7 @@ CONFIG_RT_NFS_HOST_EXPORT="192.168.10.82:/"
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/gkipc/rtconfig.h b/bsp/gkipc/rtconfig.h
index 23df0f0704..2c0233cf29 100644
--- a/bsp/gkipc/rtconfig.h
+++ b/bsp/gkipc/rtconfig.h
@@ -114,6 +114,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/hifive1/.config b/bsp/hifive1/.config
index 186ad3e8e3..9f66767320 100644
--- a/bsp/hifive1/.config
+++ b/bsp/hifive1/.config
@@ -107,6 +107,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/hifive1/rtconfig.h b/bsp/hifive1/rtconfig.h
index 762eb92df5..1d96bfc3db 100644
--- a/bsp/hifive1/rtconfig.h
+++ b/bsp/hifive1/rtconfig.h
@@ -74,6 +74,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* Using WiFi */
diff --git a/bsp/imx6sx/cortex-a9/.config b/bsp/imx6sx/cortex-a9/.config
index cb857b4c0f..ce2e256f2c 100644
--- a/bsp/imx6sx/cortex-a9/.config
+++ b/bsp/imx6sx/cortex-a9/.config
@@ -116,6 +116,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/imx6sx/cortex-a9/rtconfig.h b/bsp/imx6sx/cortex-a9/rtconfig.h
index 71f7cf4d9b..30de937b05 100644
--- a/bsp/imx6sx/cortex-a9/rtconfig.h
+++ b/bsp/imx6sx/cortex-a9/rtconfig.h
@@ -77,6 +77,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using USB */
diff --git a/bsp/imx6ul/rtconfig.h b/bsp/imx6ul/rtconfig.h
index f37f620a9c..ee3857dcb8 100644
--- a/bsp/imx6ul/rtconfig.h
+++ b/bsp/imx6ul/rtconfig.h
@@ -72,6 +72,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 64
//
diff --git a/bsp/imxrt/imxrt1050-ArchMix/.config b/bsp/imxrt/imxrt1050-ArchMix/.config
index 3406bd3ee8..353f769594 100644
--- a/bsp/imxrt/imxrt1050-ArchMix/.config
+++ b/bsp/imxrt/imxrt1050-ArchMix/.config
@@ -135,6 +135,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
CONFIG_RT_USING_CPUTIME=y
diff --git a/bsp/imxrt/imxrt1050-ArchMix/rtconfig.h b/bsp/imxrt/imxrt1050-ArchMix/rtconfig.h
index 525013e73e..98c795a026 100644
--- a/bsp/imxrt/imxrt1050-ArchMix/rtconfig.h
+++ b/bsp/imxrt/imxrt1050-ArchMix/rtconfig.h
@@ -95,6 +95,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_CPUTIME
#define RT_USING_CPUTIME_CORTEXM
#define RT_USING_I2C
diff --git a/bsp/imxrt/imxrt1050-evk/.config b/bsp/imxrt/imxrt1050-evk/.config
index ba6c3d19ad..63fea7652c 100644
--- a/bsp/imxrt/imxrt1050-evk/.config
+++ b/bsp/imxrt/imxrt1050-evk/.config
@@ -136,6 +136,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
CONFIG_RT_USING_CPUTIME=y
diff --git a/bsp/imxrt/imxrt1050-evk/rtconfig.h b/bsp/imxrt/imxrt1050-evk/rtconfig.h
index b5e68cdab9..f1a7a6785a 100644
--- a/bsp/imxrt/imxrt1050-evk/rtconfig.h
+++ b/bsp/imxrt/imxrt1050-evk/rtconfig.h
@@ -95,6 +95,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_CPUTIME
#define RT_USING_CPUTIME_CORTEXM
#define RT_USING_I2C
diff --git a/bsp/imxrt1052-evk/.config b/bsp/imxrt1052-evk/.config
index ece9538595..88643d85b4 100644
--- a/bsp/imxrt1052-evk/.config
+++ b/bsp/imxrt1052-evk/.config
@@ -124,6 +124,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/imxrt1052-evk/rtconfig.h b/bsp/imxrt1052-evk/rtconfig.h
index ef00ef09ff..d4298a93ca 100644
--- a/bsp/imxrt1052-evk/rtconfig.h
+++ b/bsp/imxrt1052-evk/rtconfig.h
@@ -91,6 +91,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_PIN
diff --git a/bsp/lpc408x/.config b/bsp/lpc408x/.config
index e10d9ce3f9..eed04f9c32 100644
--- a/bsp/lpc408x/.config
+++ b/bsp/lpc408x/.config
@@ -121,6 +121,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
CONFIG_RT_USING_CAN=y
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/lpc408x/rtconfig.h b/bsp/lpc408x/rtconfig.h
index 650dade6f0..0d5469786f 100644
--- a/bsp/lpc408x/rtconfig.h
+++ b/bsp/lpc408x/rtconfig.h
@@ -112,6 +112,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_CAN
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/lpc43xx/M0/rtconfig.h b/bsp/lpc43xx/M0/rtconfig.h
index c48cf2525c..90531287dd 100644
--- a/bsp/lpc43xx/M0/rtconfig.h
+++ b/bsp/lpc43xx/M0/rtconfig.h
@@ -75,6 +75,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 256
//
diff --git a/bsp/lpc43xx/M4/rtconfig.h b/bsp/lpc43xx/M4/rtconfig.h
index 9bb1b656f2..0b30998cc0 100644
--- a/bsp/lpc43xx/M4/rtconfig.h
+++ b/bsp/lpc43xx/M4/rtconfig.h
@@ -74,6 +74,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 256
//
diff --git a/bsp/lpc5410x/rtconfig.h b/bsp/lpc5410x/rtconfig.h
index bd231931e3..c054bfabba 100644
--- a/bsp/lpc5410x/rtconfig.h
+++ b/bsp/lpc5410x/rtconfig.h
@@ -68,6 +68,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
//
diff --git a/bsp/lpc54114-lite/.config b/bsp/lpc54114-lite/.config
index 0b7ccbf108..4fae2a9de6 100644
--- a/bsp/lpc54114-lite/.config
+++ b/bsp/lpc54114-lite/.config
@@ -138,6 +138,7 @@ CONFIG_RT_USING_DFS_ROMFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/lpc54114-lite/rtconfig.h b/bsp/lpc54114-lite/rtconfig.h
index ca76f59014..4fc1054b7b 100644
--- a/bsp/lpc54114-lite/rtconfig.h
+++ b/bsp/lpc54114-lite/rtconfig.h
@@ -95,6 +95,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_PIN
diff --git a/bsp/lpc54608-LPCXpresso/.config b/bsp/lpc54608-LPCXpresso/.config
index 5aff9d0e48..85046e050d 100644
--- a/bsp/lpc54608-LPCXpresso/.config
+++ b/bsp/lpc54608-LPCXpresso/.config
@@ -136,6 +136,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/lpc54608-LPCXpresso/rtconfig.h b/bsp/lpc54608-LPCXpresso/rtconfig.h
index 7738810b58..46855f7713 100644
--- a/bsp/lpc54608-LPCXpresso/rtconfig.h
+++ b/bsp/lpc54608-LPCXpresso/rtconfig.h
@@ -95,6 +95,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_PIN
diff --git a/bsp/lpc824/rtconfig.h b/bsp/lpc824/rtconfig.h
index 1426427b8d..ccc1a76d43 100644
--- a/bsp/lpc824/rtconfig.h
+++ b/bsp/lpc824/rtconfig.h
@@ -128,6 +128,7 @@
// Using Serial
// Using Serial
//#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
//
diff --git a/bsp/ls1cdev/.config b/bsp/ls1cdev/.config
index e51b00e78e..30d3540c58 100644
--- a/bsp/ls1cdev/.config
+++ b/bsp/ls1cdev/.config
@@ -133,6 +133,7 @@ CONFIG_RT_DFS_ELM_REENTRANT=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
CONFIG_RT_USING_CAN=y
# CONFIG_RT_CAN_USING_HDR is not set
# CONFIG_RT_USING_HWTIMER is not set
diff --git a/bsp/ls1cdev/rtconfig.h b/bsp/ls1cdev/rtconfig.h
index 889d051eef..7e140a731c 100644
--- a/bsp/ls1cdev/rtconfig.h
+++ b/bsp/ls1cdev/rtconfig.h
@@ -124,6 +124,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_CAN
/* RT_CAN_USING_HDR is not set */
/* RT_USING_HWTIMER is not set */
diff --git a/bsp/mb9bf506r/rtconfig.h b/bsp/mb9bf506r/rtconfig.h
index fa8f5a3014..9499045fd1 100644
--- a/bsp/mb9bf506r/rtconfig.h
+++ b/bsp/mb9bf506r/rtconfig.h
@@ -68,6 +68,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_USING_UART0_0
//
diff --git a/bsp/nrf51822/rtconfig.h b/bsp/nrf51822/rtconfig.h
index 8731f29c30..b41bbdadfa 100644
--- a/bsp/nrf51822/rtconfig.h
+++ b/bsp/nrf51822/rtconfig.h
@@ -68,6 +68,7 @@
#define RT_USING_DEVICE_IPC
//
//#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/nrf52832/rtconfig.h b/bsp/nrf52832/rtconfig.h
index b8710f31c8..64349ec531 100644
--- a/bsp/nrf52832/rtconfig.h
+++ b/bsp/nrf52832/rtconfig.h
@@ -70,6 +70,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/nuvoton_m05x/.config b/bsp/nuvoton_m05x/.config
index 38716c0942..07830e5c36 100644
--- a/bsp/nuvoton_m05x/.config
+++ b/bsp/nuvoton_m05x/.config
@@ -104,6 +104,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/nuvoton_m05x/rtconfig.h b/bsp/nuvoton_m05x/rtconfig.h
index 4d5ab6b201..db3cc679c8 100644
--- a/bsp/nuvoton_m05x/rtconfig.h
+++ b/bsp/nuvoton_m05x/rtconfig.h
@@ -96,6 +96,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/nuvoton_m451/rtconfig.h b/bsp/nuvoton_m451/rtconfig.h
index 58cdfdcb24..cb4868725c 100644
--- a/bsp/nuvoton_m451/rtconfig.h
+++ b/bsp/nuvoton_m451/rtconfig.h
@@ -65,6 +65,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/nuvoton_m487/.config b/bsp/nuvoton_m487/.config
index a20bd22939..2e12793338 100644
--- a/bsp/nuvoton_m487/.config
+++ b/bsp/nuvoton_m487/.config
@@ -118,6 +118,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=64
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/nuvoton_m487/rtconfig.h b/bsp/nuvoton_m487/rtconfig.h
index 6e3b9c097e..5eb9dca57e 100644
--- a/bsp/nuvoton_m487/rtconfig.h
+++ b/bsp/nuvoton_m487/rtconfig.h
@@ -75,6 +75,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 64
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* Using WiFi */
diff --git a/bsp/nuvoton_nuc472/rtconfig.h b/bsp/nuvoton_nuc472/rtconfig.h
index dccf59ecc8..9d1268a7ff 100644
--- a/bsp/nuvoton_nuc472/rtconfig.h
+++ b/bsp/nuvoton_nuc472/rtconfig.h
@@ -66,6 +66,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/nv32f100x/rtconfig.h b/bsp/nv32f100x/rtconfig.h
index 0279e205ae..e5b146528e 100644
--- a/bsp/nv32f100x/rtconfig.h
+++ b/bsp/nv32f100x/rtconfig.h
@@ -66,6 +66,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_HOOK
#define RT_USING_CPU_USAGE
/* SECTION: Console options */
diff --git a/bsp/qemu-vexpress-a9/.config b/bsp/qemu-vexpress-a9/.config
index f5709ced29..f0ce96e4e2 100644
--- a/bsp/qemu-vexpress-a9/.config
+++ b/bsp/qemu-vexpress-a9/.config
@@ -143,6 +143,7 @@ CONFIG_RT_USING_DFS_RAMFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/qemu-vexpress-a9/rtconfig.h b/bsp/qemu-vexpress-a9/rtconfig.h
index 618aa5c599..2ebcd96019 100644
--- a/bsp/qemu-vexpress-a9/rtconfig.h
+++ b/bsp/qemu-vexpress-a9/rtconfig.h
@@ -134,6 +134,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/qemu-vexpress-gemini/.config b/bsp/qemu-vexpress-gemini/.config
index 02c5ee7d12..425f9a1eae 100644
--- a/bsp/qemu-vexpress-gemini/.config
+++ b/bsp/qemu-vexpress-gemini/.config
@@ -118,6 +118,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/qemu-vexpress-gemini/rtconfig.h b/bsp/qemu-vexpress-gemini/rtconfig.h
index a1dcba1248..7218fedca1 100644
--- a/bsp/qemu-vexpress-gemini/rtconfig.h
+++ b/bsp/qemu-vexpress-gemini/rtconfig.h
@@ -110,6 +110,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/raspi2/.config b/bsp/raspi2/.config
index b9827ac3ed..7db26a7cb1 100644
--- a/bsp/raspi2/.config
+++ b/bsp/raspi2/.config
@@ -108,6 +108,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/raspi2/rtconfig.h b/bsp/raspi2/rtconfig.h
index 073c18bed2..d0b692f9ab 100644
--- a/bsp/raspi2/rtconfig.h
+++ b/bsp/raspi2/rtconfig.h
@@ -100,6 +100,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/realview-a8/rtconfig.h b/bsp/realview-a8/rtconfig.h
index 2b196b4466..d06e81a0e1 100644
--- a/bsp/realview-a8/rtconfig.h
+++ b/bsp/realview-a8/rtconfig.h
@@ -72,6 +72,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 64
//
diff --git a/bsp/rm48x50/rtconfig.h b/bsp/rm48x50/rtconfig.h
index a4189b9308..f7d9235a5b 100644
--- a/bsp/rm48x50/rtconfig.h
+++ b/bsp/rm48x50/rtconfig.h
@@ -70,6 +70,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 64
//
diff --git a/bsp/rv32m1_vega/ri5cy/.config b/bsp/rv32m1_vega/ri5cy/.config
index fec5225b63..d62e37947a 100644
--- a/bsp/rv32m1_vega/ri5cy/.config
+++ b/bsp/rv32m1_vega/ri5cy/.config
@@ -136,6 +136,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/rx/rtconfig.h b/bsp/rx/rtconfig.h
index e1d6cb3fe8..364204696f 100644
--- a/bsp/rx/rtconfig.h
+++ b/bsp/rx/rtconfig.h
@@ -66,6 +66,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/samd21/rtconfig.h b/bsp/samd21/rtconfig.h
index 1ccf6616a0..c22a5496e7 100644
--- a/bsp/samd21/rtconfig.h
+++ b/bsp/samd21/rtconfig.h
@@ -68,6 +68,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/simulator/.config b/bsp/simulator/.config
index be55343ce7..dbb69fd390 100644
--- a/bsp/simulator/.config
+++ b/bsp/simulator/.config
@@ -117,6 +117,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/simulator/rtconfig.h b/bsp/simulator/rtconfig.h
index 995ab93c3b..4955172df7 100755
--- a/bsp/simulator/rtconfig.h
+++ b/bsp/simulator/rtconfig.h
@@ -108,6 +108,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/stm32/libraries/templates/stm32f10x/.config b/bsp/stm32/libraries/templates/stm32f10x/.config
index 1bfa29eca5..4a931cf1e2 100644
--- a/bsp/stm32/libraries/templates/stm32f10x/.config
+++ b/bsp/stm32/libraries/templates/stm32f10x/.config
@@ -110,6 +110,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/libraries/templates/stm32f10x/rtconfig.h b/bsp/stm32/libraries/templates/stm32f10x/rtconfig.h
index f213d2e34b..ed7bf5a5f7 100644
--- a/bsp/stm32/libraries/templates/stm32f10x/rtconfig.h
+++ b/bsp/stm32/libraries/templates/stm32f10x/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32/libraries/templates/stm32f4xx/.config b/bsp/stm32/libraries/templates/stm32f4xx/.config
index 1491b26f9a..935757f65a 100644
--- a/bsp/stm32/libraries/templates/stm32f4xx/.config
+++ b/bsp/stm32/libraries/templates/stm32f4xx/.config
@@ -110,6 +110,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/libraries/templates/stm32f4xx/rtconfig.h b/bsp/stm32/libraries/templates/stm32f4xx/rtconfig.h
index 2f9f7370d7..21d3064ad0 100644
--- a/bsp/stm32/libraries/templates/stm32f4xx/rtconfig.h
+++ b/bsp/stm32/libraries/templates/stm32f4xx/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32/libraries/templates/stm32l4xx/.config b/bsp/stm32/libraries/templates/stm32l4xx/.config
index fccf1fe55b..233ed0577f 100644
--- a/bsp/stm32/libraries/templates/stm32l4xx/.config
+++ b/bsp/stm32/libraries/templates/stm32l4xx/.config
@@ -110,6 +110,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/libraries/templates/stm32l4xx/rtconfig.h b/bsp/stm32/libraries/templates/stm32l4xx/rtconfig.h
index ceec0bd451..1b16eff99f 100644
--- a/bsp/stm32/libraries/templates/stm32l4xx/rtconfig.h
+++ b/bsp/stm32/libraries/templates/stm32l4xx/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32/stm32f103-atk-nano/.config b/bsp/stm32/stm32f103-atk-nano/.config
index efe60afe64..73bea08b16 100644
--- a/bsp/stm32/stm32f103-atk-nano/.config
+++ b/bsp/stm32/stm32f103-atk-nano/.config
@@ -108,6 +108,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/stm32f103-atk-nano/rtconfig.h b/bsp/stm32/stm32f103-atk-nano/rtconfig.h
index c9087c09a6..a711e28ea1 100644
--- a/bsp/stm32/stm32f103-atk-nano/rtconfig.h
+++ b/bsp/stm32/stm32f103-atk-nano/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32/stm32f103-fire-arbitrary/.config b/bsp/stm32/stm32f103-fire-arbitrary/.config
index f67ab34e10..17c6756122 100644
--- a/bsp/stm32/stm32f103-fire-arbitrary/.config
+++ b/bsp/stm32/stm32f103-fire-arbitrary/.config
@@ -108,6 +108,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/stm32f103-fire-arbitrary/rtconfig.h b/bsp/stm32/stm32f103-fire-arbitrary/rtconfig.h
index fdd6a747f4..db085c7e6b 100644
--- a/bsp/stm32/stm32f103-fire-arbitrary/rtconfig.h
+++ b/bsp/stm32/stm32f103-fire-arbitrary/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32/stm32f407-atk-explorer/.config b/bsp/stm32/stm32f407-atk-explorer/.config
index 4f44d6b3af..d01dbef79b 100644
--- a/bsp/stm32/stm32f407-atk-explorer/.config
+++ b/bsp/stm32/stm32f407-atk-explorer/.config
@@ -110,6 +110,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/stm32f407-atk-explorer/rtconfig.h b/bsp/stm32/stm32f407-atk-explorer/rtconfig.h
index 948a7a65d7..917f5fb0b5 100644
--- a/bsp/stm32/stm32f407-atk-explorer/rtconfig.h
+++ b/bsp/stm32/stm32f407-atk-explorer/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32/stm32f429-atk-apollo/.config b/bsp/stm32/stm32f429-atk-apollo/.config
index 1ad45f888b..f637dd09af 100644
--- a/bsp/stm32/stm32f429-atk-apollo/.config
+++ b/bsp/stm32/stm32f429-atk-apollo/.config
@@ -110,6 +110,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/stm32f429-atk-apollo/rtconfig.h b/bsp/stm32/stm32f429-atk-apollo/rtconfig.h
index d236ab8d53..c68a679a37 100644
--- a/bsp/stm32/stm32f429-atk-apollo/rtconfig.h
+++ b/bsp/stm32/stm32f429-atk-apollo/rtconfig.h
@@ -76,6 +76,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32/stm32f429-fire-challenger/.config b/bsp/stm32/stm32f429-fire-challenger/.config
index 8bab59ba52..3032c8fe13 100644
--- a/bsp/stm32/stm32f429-fire-challenger/.config
+++ b/bsp/stm32/stm32f429-fire-challenger/.config
@@ -110,6 +110,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32/stm32f429-fire-challenger/rtconfig.h b/bsp/stm32/stm32f429-fire-challenger/rtconfig.h
index 1357a79922..cda1392595 100644
--- a/bsp/stm32/stm32f429-fire-challenger/rtconfig.h
+++ b/bsp/stm32/stm32f429-fire-challenger/rtconfig.h
@@ -77,6 +77,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/stm32f0x/rtconfig.h b/bsp/stm32f0x/rtconfig.h
index bee200136a..0a71690b53 100644
--- a/bsp/stm32f0x/rtconfig.h
+++ b/bsp/stm32f0x/rtconfig.h
@@ -66,6 +66,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* SECTION: Console options */
#define RT_USING_CONSOLE
diff --git a/bsp/stm32f10x-HAL/.config b/bsp/stm32f10x-HAL/.config
index 3f583f6b34..39706cd496 100644
--- a/bsp/stm32f10x-HAL/.config
+++ b/bsp/stm32f10x-HAL/.config
@@ -91,6 +91,7 @@ CONFIG_FINSH_USING_MSH_ONLY=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32f10x-HAL/rtconfig.h b/bsp/stm32f10x-HAL/rtconfig.h
index ad9537c495..84514b603c 100644
--- a/bsp/stm32f10x-HAL/rtconfig.h
+++ b/bsp/stm32f10x-HAL/rtconfig.h
@@ -83,6 +83,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/stm32f10x/.config b/bsp/stm32f10x/.config
index 360fa61320..7b1a9477ab 100644
--- a/bsp/stm32f10x/.config
+++ b/bsp/stm32f10x/.config
@@ -121,6 +121,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
CONFIG_RT_USING_CAN=y
CONFIG_RT_CAN_USING_HDR=y
# CONFIG_RT_USING_HWTIMER is not set
diff --git a/bsp/stm32f10x/rtconfig.h b/bsp/stm32f10x/rtconfig.h
index e41cb5fc10..e1d38b4667 100644
--- a/bsp/stm32f10x/rtconfig.h
+++ b/bsp/stm32f10x/rtconfig.h
@@ -112,6 +112,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_CAN
#define RT_CAN_USING_HDR
/* RT_USING_HWTIMER is not set */
diff --git a/bsp/stm32f40x/.config b/bsp/stm32f40x/.config
index b7945e1820..a6a47ac6f3 100644
--- a/bsp/stm32f40x/.config
+++ b/bsp/stm32f40x/.config
@@ -135,6 +135,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32f40x/rtconfig.h b/bsp/stm32f40x/rtconfig.h
index 9482d19aa3..c855f42fad 100644
--- a/bsp/stm32f40x/rtconfig.h
+++ b/bsp/stm32f40x/rtconfig.h
@@ -93,6 +93,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using USB */
diff --git a/bsp/stm32f411-nucleo/.config b/bsp/stm32f411-nucleo/.config
index a757505873..f300370a16 100644
--- a/bsp/stm32f411-nucleo/.config
+++ b/bsp/stm32f411-nucleo/.config
@@ -92,6 +92,7 @@ CONFIG_FINSH_USING_MSH_ONLY=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32f411-nucleo/rtconfig.h b/bsp/stm32f411-nucleo/rtconfig.h
index e3b684271c..3a925c78b4 100644
--- a/bsp/stm32f411-nucleo/rtconfig.h
+++ b/bsp/stm32f411-nucleo/rtconfig.h
@@ -70,6 +70,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* Using USB */
diff --git a/bsp/stm32f429-apollo/.config b/bsp/stm32f429-apollo/.config
index 45c584c188..604b56e5b2 100644
--- a/bsp/stm32f429-apollo/.config
+++ b/bsp/stm32f429-apollo/.config
@@ -132,6 +132,7 @@ CONFIG_RT_USING_DFS_ROMFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32f429-apollo/rtconfig.h b/bsp/stm32f429-apollo/rtconfig.h
index 4de160fe17..9c28c2c959 100644
--- a/bsp/stm32f429-apollo/rtconfig.h
+++ b/bsp/stm32f429-apollo/rtconfig.h
@@ -90,6 +90,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_MTD_NAND
diff --git a/bsp/stm32f429-armfly/.config b/bsp/stm32f429-armfly/.config
index be7abc5df7..b001018a9f 100644
--- a/bsp/stm32f429-armfly/.config
+++ b/bsp/stm32f429-armfly/.config
@@ -134,6 +134,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32f429-armfly/rtconfig.h b/bsp/stm32f429-armfly/rtconfig.h
index 0f302ccee4..b570ea5234 100644
--- a/bsp/stm32f429-armfly/rtconfig.h
+++ b/bsp/stm32f429-armfly/rtconfig.h
@@ -92,6 +92,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_PIN
diff --git a/bsp/stm32f429-disco/.config b/bsp/stm32f429-disco/.config
index a2d11a94c3..1a51abcea1 100644
--- a/bsp/stm32f429-disco/.config
+++ b/bsp/stm32f429-disco/.config
@@ -114,6 +114,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32f429-disco/rtconfig.h b/bsp/stm32f429-disco/rtconfig.h
index 962f62bc55..91dd49c872 100644
--- a/bsp/stm32f429-disco/rtconfig.h
+++ b/bsp/stm32f429-disco/rtconfig.h
@@ -75,6 +75,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_I2C
#define RT_USING_I2C_BITOPS
#define RT_USING_PIN
diff --git a/bsp/stm32f4xx-HAL/.config b/bsp/stm32f4xx-HAL/.config
index 8be1f1789f..210efe60dc 100644
--- a/bsp/stm32f4xx-HAL/.config
+++ b/bsp/stm32f4xx-HAL/.config
@@ -88,6 +88,7 @@ CONFIG_FINSH_USING_MSH_ONLY=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_I2C is not set
diff --git a/bsp/stm32f4xx-HAL/rtconfig.h b/bsp/stm32f4xx-HAL/rtconfig.h
index 8fe06d171c..e490ee1f31 100644
--- a/bsp/stm32f4xx-HAL/rtconfig.h
+++ b/bsp/stm32f4xx-HAL/rtconfig.h
@@ -80,6 +80,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_I2C is not set */
diff --git a/bsp/stm32f7-disco/.config b/bsp/stm32f7-disco/.config
index 36452791a8..9cdfcfa368 100644
--- a/bsp/stm32f7-disco/.config
+++ b/bsp/stm32f7-disco/.config
@@ -92,6 +92,7 @@ CONFIG_FINSH_USING_MSH_DEFAULT=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32f7-disco/rtconfig.h b/bsp/stm32f7-disco/rtconfig.h
index abbe9d6f59..5d0a04aad7 100644
--- a/bsp/stm32f7-disco/rtconfig.h
+++ b/bsp/stm32f7-disco/rtconfig.h
@@ -70,6 +70,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using USB */
diff --git a/bsp/stm32h743-nucleo/.config b/bsp/stm32h743-nucleo/.config
index bb13ccfc66..1576a11eff 100644
--- a/bsp/stm32h743-nucleo/.config
+++ b/bsp/stm32h743-nucleo/.config
@@ -116,6 +116,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32h743-nucleo/rtconfig.h b/bsp/stm32h743-nucleo/rtconfig.h
index e341d043f9..173db7f63c 100644
--- a/bsp/stm32h743-nucleo/rtconfig.h
+++ b/bsp/stm32h743-nucleo/rtconfig.h
@@ -108,6 +108,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/stm32l072/rtconfig.h b/bsp/stm32l072/rtconfig.h
index 57be51ea76..5e750f5d1f 100644
--- a/bsp/stm32l072/rtconfig.h
+++ b/bsp/stm32l072/rtconfig.h
@@ -66,6 +66,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_HOOK
#define RT_USING_CPU_USAGE
/* SECTION: Console options */
diff --git a/bsp/stm32l475-iot-disco/rtconfig.h b/bsp/stm32l475-iot-disco/rtconfig.h
index 89428e1cf4..f7b00767d2 100644
--- a/bsp/stm32l475-iot-disco/rtconfig.h
+++ b/bsp/stm32l475-iot-disco/rtconfig.h
@@ -61,6 +61,7 @@
#define RT_USING_DEVICE_IPC
/* Using serial framework */
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_UART1
#define RT_USING_UART2
diff --git a/bsp/stm32l476-nucleo/.config b/bsp/stm32l476-nucleo/.config
index 44a239f90d..529d8c5fb0 100644
--- a/bsp/stm32l476-nucleo/.config
+++ b/bsp/stm32l476-nucleo/.config
@@ -105,6 +105,7 @@ CONFIG_FINSH_ARG_MAX=10
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/stm32l476-nucleo/rtconfig.h b/bsp/stm32l476-nucleo/rtconfig.h
index 7be9f6b5b6..d1e5fd2e41 100644
--- a/bsp/stm32l476-nucleo/rtconfig.h
+++ b/bsp/stm32l476-nucleo/rtconfig.h
@@ -71,6 +71,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using USB */
diff --git a/bsp/tm4c129x/.config b/bsp/tm4c129x/.config
index 65b5b05742..3dbea9e5ba 100644
--- a/bsp/tm4c129x/.config
+++ b/bsp/tm4c129x/.config
@@ -82,6 +82,7 @@ CONFIG_FINSH_CMD_SIZE=80
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_I2C is not set
diff --git a/bsp/tm4c129x/rtconfig.h b/bsp/tm4c129x/rtconfig.h
index d9e6e561c9..17065905cd 100644
--- a/bsp/tm4c129x/rtconfig.h
+++ b/bsp/tm4c129x/rtconfig.h
@@ -74,6 +74,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_I2C is not set */
diff --git a/bsp/tms320f28379d/.config b/bsp/tms320f28379d/.config
index ddc9fd302e..d62b1e40c8 100644
--- a/bsp/tms320f28379d/.config
+++ b/bsp/tms320f28379d/.config
@@ -104,6 +104,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/tms320f28379d/rtconfig.h b/bsp/tms320f28379d/rtconfig.h
index f74783569c..b037295813 100644
--- a/bsp/tms320f28379d/rtconfig.h
+++ b/bsp/tms320f28379d/rtconfig.h
@@ -68,6 +68,7 @@
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
#define RT_USING_PIN
/* Using WiFi */
diff --git a/bsp/x1000/.config b/bsp/x1000/.config
index e6698d1d90..9ac579ccd9 100644
--- a/bsp/x1000/.config
+++ b/bsp/x1000/.config
@@ -121,6 +121,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
#
CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
diff --git a/bsp/x1000/rtconfig.h b/bsp/x1000/rtconfig.h
index 30ccf9e409..6babbd0b15 100644
--- a/bsp/x1000/rtconfig.h
+++ b/bsp/x1000/rtconfig.h
@@ -112,6 +112,7 @@
#define RT_USING_DEVICE_IPC
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
diff --git a/bsp/xplorer4330/M0/rtconfig.h b/bsp/xplorer4330/M0/rtconfig.h
index 8adbc4e576..ee849028f2 100644
--- a/bsp/xplorer4330/M0/rtconfig.h
+++ b/bsp/xplorer4330/M0/rtconfig.h
@@ -74,6 +74,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 256
//
diff --git a/bsp/xplorer4330/M4/rtconfig.h b/bsp/xplorer4330/M4/rtconfig.h
index 8adbc4e576..ee849028f2 100644
--- a/bsp/xplorer4330/M4/rtconfig.h
+++ b/bsp/xplorer4330/M4/rtconfig.h
@@ -74,6 +74,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 256
//
diff --git a/bsp/zynq7000/rtconfig.h b/bsp/zynq7000/rtconfig.h
index 4c042a88f6..ca304c6ac9 100644
--- a/bsp/zynq7000/rtconfig.h
+++ b/bsp/zynq7000/rtconfig.h
@@ -72,6 +72,7 @@
#define RT_USING_DEVICE_IPC
//
#define RT_USING_SERIAL
+#define RT_SERIAL_USING_DMA
//
#define RT_UART_RX_BUFFER_SIZE 64
//