首页 > 解决方案 > 有没有办法在 linux programmaticaly 中控制 uart rx fifo 大小

问题描述

我正在编写软件来与设计不良的硬件进行通信。该硬件可以通过 RS485 线(9600 8N1)与 linux pc(内核 4.15)通信,并且时间很短:pc 应在收到设备请求后 2ms 内回复。

我能够使用 LOW_LATENCY 标志和 /sys/class/tty/ttySx/rx_trig_bytes 文件解决此任务。

打开端口后“rx_trig_bytes”文件内容变为“14”,所以我需要在打开端口后写入“1”以获得良好的回复延迟。

有没有办法通过 API 调用或在系统启动/驱动程序加载后修复它?当前的实现看起来很丑:(

标签: clinuxuartlow-latencyrs485

解决方案


有趣的是,你觉得这种方式很难看,考虑到 Unix 中的一切都是文件,它应该是聪明的方式。

我想你有权拥有自己的审美意识。

如果您想将另一个缓冲区大小设为默认值,您可以随时在驱动程序中更改它并按照此处的建议重新编译内核。


推荐阅读