在Windows中,COM端口中FIFO缓冲区的作用是什么?

7

请问有人可以解释一下在Windows中,设备管理器中“高级COM端口设置”中的FiFo缓冲区检查的作用吗?

勾选/取消勾选FiFo缓冲区如何影响从COM端口读取数据?

非常感谢您提供的帮助性回复!

1个回答

10
IBM-PC设计中最初使用的UART芯片是8250。它只能存储一个接收字节,而接收器正在接收下一个字节。这对操作系统的串行端口驱动程序响应“数据接收”中断的响应能力提出了很高的要求。在接收器覆盖它之前,必须足够快地读取该字节。如果不够快会导致溢出错误和无法恢复的数据丢失。高中断率也是有害的。 16550 UART芯片改进了这种设计。它获得了更大的缓冲区FIFO,使操作系统有更多时间在溢出发生之前清空缓冲区。串行端口驱动程序可以编程以在特定填充级别生成中断,从而降低中断率。
但是,芯片设计和软件一样存在问题,原始的16550 FIFO实现存在漏洞。在软件方面,由16550A版本1.1修复。
问题在于,驱动程序无法确定机器是否有16550的有缺陷版本还是好的版本。像这样简单的芯片没有GetVersion()等价物。因此,它提供了一个属性页面,让用户关闭FIFO支持,从而绕过错误。
今天你拥有有缺陷的版本的可能性为零。关闭FIFO已不再必要。

1
非常感谢您详细的回复,教授 :) - Adil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接