2014-01-16 169 views
6

任何人都可以在这里请解释窗口中的FiFo缓冲区检查(在设备管理器的高级COM端口设置)的作用?在Windows中的COM端口的FIFO缓冲区的作用

检查/取消选中FIFO缓冲区如何影响从COM端口读取数据?

很多在此先感谢您的帮助回复!

回答

7

IBM-PC设计中使用的原始UART芯片是8250。当接收器忙于接收下一个字节时,它可以只存储一个接收字节。这对操作系统的串口驱动程序的响应性提出了高要求,以响应“数据接收”中断。它必须足够快才能在接收器覆盖它之前读取该字节。速度不够快导致溢出错误和不可挽回的数据丢失。高中断率也是有害的。

该设计在16550 UART chip的基础上进行了改进。它获得了一个更大的缓冲区,即FIFO,让操作系统有更多时间在发生溢出之前清空缓冲区。串口驱动程序可以对其进行编程以在特定的填充级别生成中断,从而也可以降低中断率。

但是芯片设计与软件有同样的问题,原来的16550在FIFO实现中有一个缺陷。固定在16550A,版本1.1的软件中。

问题是,司机无法分辨机器是否有16550的错误版本或良好的版本。像这样的简单芯片没有GetVersion()等价物。所以它提供了一个属性页面,让用户关闭FIFO支持,从而绕开了错误。

今天你会得到越野车版本的几率是零。关闭FIFO不再是必要的。

+1

非常感谢这么好,详细的答复教授:) – adi