工具/软件:Linux
你(们)好
我在基于运行内核4.4.19的 BeagleBone 的定制板上运行
root@AM335x-EVM:~ cm# uname -a Linux AM335x-EVM 4.4.4.19-gdb0b54cdd #238抢先于8月25日星期五16:25:18 AEST 2017 armv7l GNU/Linux
我想知道获取快速高效 UART 通信的最佳方式是什么。
电路板的布局使得 am3352和 DSP 之间有一个 UART 通信
还有一个 GPIO 用作从 DSP 到 am3352的 IRQ。
工艺流程如下。
- DSP 断言 IRQ GPIO 线路
- DSP 在 UART 上发送22个字节
- am3352检测 IRQ GPIO 并向 DSP 发送12个字节
- am3352从 UART 接收字节
每10ms 就会发生这样的交换。
目前、我正在调用轮询、观察 GPIO 和 UART 节点的文件描述符。
UART 端口配置为115k2波特、原始模式和低延迟。
在这种配置下、我发现22个字节通常以3个块的形式读取。
即、每10ms、对于 GPIO、轮询返回一次、对于 UART、轮询返回三次
使用顶部观察该过程使用93%的 CPU;这似乎太过分了。
理想情况下、我希望指定在大约200uS 的"超时"后通知传入字节的 UART;以便我可以读取一次这些字节
但是、termios 结构中的 VTIME 仅具有0.1的分辨率
-是否有人知道以比这更精确的分辨率在原始模式下配置 TTY 节点行为的方法?
或者还有其他方法可以做到这一点吗?
感谢您的任何建议。
祝你一切顺利、
Richard