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



我正在尝试在嵌入式Linux中的UART上强制使用9位协议。 目前,我正在am335x_evm板上对此进行测试。 我计划使用棍偶校验来做到这一点。 理想情况下,我希望我不需要实际修改 omap-serial.c 驱动程序的任何代码。

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

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

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

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

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