运行Linux内核3.14.43,我正在读取CDC ACM设备(在LPC4330上实现)。设备出现在/ dev / ttyACM0,我可以打开它并以正常方式从中读取。
该设备似乎在缓冲大约4096个字节(通常,在操作的早期阶段,在大多数12字节读取的一段时间后,我读取4095字节)。在花哨的schmancy工作站上运行时,一切顺利。但是,当在嵌入式设备(AM3352)上运行时,如果我采用高数据速率,有时会丢失数据。我怀疑读缓冲区是否过度填充 - 高数据速率足以在不超过1毫秒(3.8MB / s)的时间内填充4k缓冲区,而且我很可能不会回来鉴于设备正在其他线程中执行大量其他操作并且我全面使用SCHED_OTHER,所以read()调用足够快以便跟上。
所以 - 首先 - 是否有办法增加设备的缓冲区大小?作为补充,有没有办法检测这里的缓冲区是否溢出?我想我有另一种选择,可以为read()线程使用实时调度,但是如果可能的话,我宁愿不进入。
感谢。