2

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

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

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

4

2 回答 2

2

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

于 2014-12-17T18:29:04.527 回答
1

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

我帮你找个链接。。。

于 2014-11-12T13:00:56.443 回答