有什么方法可以通过编程控制 linux 中的 uart rx fifo 大小

Is there any way to control uart rx fifo size in linux programmaticaly

我正在编写软件来与设计糟糕的硬件进行通信。此硬件可以通过 RS485 线 (9600 8N1) 与 linux 电脑(内核 4.15)通信,并且它的时间非常短:电脑应在收到设备请求后 2 毫秒内回复。

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

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

有什么方法可以通过 API 调用或在系统启动/驱动程序加载后修复它吗?目前的实现看起来很难看:(

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

我想你应该有自己的审美吧。

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