有没有办法改善 Linux (4.8) 中串行端口数据处理的延迟?特别是,在线上的实际数据与此端口上的 select()
和 read read()
函数返回之间的时间。
现在,我的测量结果显示为 350 微秒。该进程以 SCHED_RR
优先级 90 运行。有没有办法缩短这个时间,或者我必须更改驱动程序?我使用的是 PERICOM (PI7C9X7954) 的 16C550 兼容芯片。
最佳答案
所以为了解决这个问题,我不得不在用户空间编写自己的驱动程序。这不是很困难,只是弄清楚了如何正确配置芯片。使用内存映射 IO 访问芯片。可以从 /sys/dev/char/<major>:<minor>/iomem_base
中读取内存偏移量文件。
只需要确保端口永远不会打开。否则操作系统将尝试读取相同的数据。
关于Linux read() 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42588291/