嵌入式Linux中UART上的9位协议

时间:2014-11-12 12:50:58

标签: linux-kernel driver uart parity

我试图在嵌入式Linux中的UART上强制使用9位协议。目前我正在am335x_evm板上测试这个。我打算用棍子奇偶校验这样做。理想情况下,我希望我不需要实际修改omap-serial.c驱动程序的任何代码。

9位协议的原因是支持一些使用它的传统硬件。对于消息的地址部分,奇偶校验位需要为1,对于数据部分,奇偶校验位需要为0,然后对于终止字节,奇偶校验位需要为1.

我计划在用户空间中运行一个进程,该进程将通过标准系统调用(open,write,read,ioctl,tcsetattr等)与UART连接。我将配置UART以启用奇偶校验并设置棒奇偶校验。然后我将奇偶校验设置为偶数并调用write()来发送我的地址数据。然后我将奇偶校验设置为0并发送数据。我担心的是,如果我将奇偶校验从1更改为0,那么这何时会生效?如果未完成发送所有地址数据的UART,奇偶校验的更改是否适用于任何未发送的数据?

2 个答案:

答案 0 :(得分:2)

结束编写我自己的9位uart驱动程序。是最简单,最有效的解决方案。

答案 1 :(得分:1)

正确的方法是在串口上设置cs9(可能没有奇偶校验),只要硬件和驱动程序支持此功能。

我会为你搜索链接......