serial_v1和serial_v2的差别
RT_USING_SRIAL_V1和RT_USING_SRIAL_V2是 RT-Thread串口驱动的两个版本
定义在
choice RT_USING_SERIAL_VERSION
prompt "Choice Serial version"
default RT_USING_SERIAL_V1
config RT_USING_SERIAL_V1
bool "RT_USING_SERIAL_V1"
config RT_USING_SERIAL_V2
bool "RT_USING_SERIAL_V2"
endchoice
SCons会根据这个选择不同的源码
if GetDepend(['RT_USING_SERIAL_V2']):
src += ['dev_serial_v2.c']
else:
src += ['dev_serial.c']
V1 和 V2 的主要区别:
| 项目 | Serial V1 | Serial V2 |
|---|---|---|
| RT-Thread serial 核心文件 | dev_serial.c | devserialv2.c |
| STM32 UART 驱动 | drv_usart.c | drvusartv2.c |
| 默认选择 | 是 | 否 |
| RX buffer | 全局 RTSERIALRB_BUFSZ | 每个 UART 单独配置 |
| TX buffer | 较弱 | 每个 UART 单独配置 |
| buffer 策略 | 较传统 | 支持 drop / overwrite |
| Kconfig 可配置粒度 | 较粗 | 更细 |
| DMA 支持 | 有 | 更系统化 |
| 适合新项目 | 一般 | 更推荐 |
BYPASS功能
这个功能是RT-Thread serial 驱动里面的一个串口数据拦截机制。
开启 bypass 之后,串口的数据在被 rt_device_read()之前,会经过bypass pipe。
这个功能可以让某些模块提前看到串口字节。