本章介绍YY3588开开发板串口的 工作模式、流控、作为控制台使用、ttl转usb、ttl转rs232、ttl转rs485 (以串口1为例)
实验环境:windows PC 电脑一台; YY3588 开发板 debian12 系统一台。
串口有两种工作模式分别是中断模式和 DMA 模式。
内核默认配置串口为中断模式。中断模式下传输速率快,但是在传大量数据的时候很容易丢包或者出错,所以当数据量比较大的时候请不要使用中断模式,可以考虑下面的DMA模式。
有类似的打印log
failed to request DMA, use interrupt mode
DMA 模式主要是传输大量数据的时候使用。内核会为串口提供一个缓存空间接收数据来尽量降低串口传输的丢包率。缓存空间限默认大小为 8K 如果一次传输超过缓存大小就会丢包,所以使用 DMA 模式的话需要发送端需要分包发送。UART使用DMA传输模式只有在数据量很大时才会产生较为明显的减轻CPU负载的效果。一般情况下,和使用中断传输模式相比,UART使用DMA传输模式并不一定能提高数据传输速度。
DTS 配置(以串口1为例)
&uart1 {
+++ status = "okay";
+++ dma-names = "tx", "rx";
};
UART使用硬件自动流控时,需要确保UART驱动使能硬件自动流控功能,且在dts中已经切换cts和rts流控引脚的iomux。建议在高波特率(1.5M波特率及以上)、大数据量的场景下都使用硬件自动流控,即使用四线UART。
硬件流控需要有硬件支持,请确认你的设备是不是支持。
&uart1 {
+++ pinctrl-0 = <&uart1m0_xfer &uart1m1_ctsn &uart1m1_rtsn>;
};
应用层也需要打开流控的设置,这里介绍 stty 如何打开流控。
# stty -F /dev/ttyS1 crtscts
# stty -F /dev/ttyS1 -a | grep crtscts
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal crtscts
YY3588开发板默认uart2配置为ttyFIQ0设备,也就是我们说的debug口,一般不需要修改。
如果客户需要将普通串口配置成为控制台串口,需要禁用对应的普通串口uart节点,然后使能fiq_debugger节点。
Device Drivers --->
[*] Staging drivers --->
Android --->
chosen: chosen {
bootargs = "earlycon=uart8250,mmio32,0xfeb40000 console=ttyFIQ0";
};
fiq-debugger {
compatible = "rockchip,fiq-debugger";
rockchip,serial-id = <1>;
rockchip,wake-irq = <0>;
/* If enable uart uses irq instead of fiq */
rockchip,irq-mode-enable = <1>;
rockchip,baudrate = <1500000>; /* Only 115200 and 1500000 */
interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&uart1m0_xfer>;
status = "okay";
};
&uart2 {
status = "disabled";
};
说明:
这里以
mobaxterm
软件免费版演示,动图如下
端口 | 板端 | TTL转232模块端 |
---|---|---|
对应 | TX | TX |
对应 | RX | RX |
对应 | VCC | VCC |
对应 | GND | GND |
这里以
mobaxterm
软件免费版演示,动图如下
// TO DO