【问题标题】:Role of FIFO Buffer for COM Port in windowswindows中COM端口FIFO缓冲区的作用
【发布时间】:2014-01-16 14:10:16
【问题描述】:

这里有人可以解释一下 FiFo 缓冲区检查(在设备管理器的高级 COM 端口设置中)在 windows 中的作用吗?

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

非常感谢您提供有用的回复!

【问题讨论】:

    标签: windows serial-port buffer


    【解决方案1】:

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

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

    但是芯片设计和软件有同样的问题,原来的 16550 在 FIFO 实现中有一个错误。已在 16550A 1.1 版软件中修复。

    问题是,驱动程序无法判断机器是否有 16550 的错误版本或好的版本。像这样的简单芯片没有等效的 GetVersion()。所以它提供了一个属性页,让用户可以关闭 FIFO 支持,从而绕过这个 bug。

    今天你有错误版本的几率为零。不再需要关闭 FIFO。

    【讨论】:

    • 非常感谢教授这么好详细的回复:)
    猜你喜欢
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多