Роль буфера FIFO для COM-порта в windows

может ли кто-нибудь здесь объяснить роль проверки буфера FiFo (в расширенных настройках COM-порта из Диспетчера устройств) в windows?

Как проверка / снятие флажка буфера FIFO влияет на чтение данных из COM-порта?

большое спасибо заранее за полезные ответы!

1 ответов


оригинальный чип UART, используемый в IBM-PC designs, был 8250. Он мог хранить только один полученный байт, пока получатель был занят получением следующего байта. Это предъявляет высокий спрос на отзывчивость драйвера последовательного порта операционной системы, реагирующего на прерывание "полученные данные". Он должен быть достаточно быстрым, чтобы прочитать этот байт, прежде чем приемник перезапишет его. Недостаточная скорость приводит к ошибке переполнения и безвозвратной потере данных. Высокие частоты прерываний тоже вредно.

этот дизайн был улучшен на 16550 UART чип. Он получил больший буфер, FIFO, давая ОС больше времени, чтобы очистить буфер до того, как может произойти переполнение. Драйвер последовательного порта может запрограммировать его для генерации прерывания на определенном уровне заполнения, что также снижает частоту прерываний.

но конструкции обломоков имеют такой же вид проблемы что програмное обеспечение имеет, первоначально 16550 имело ошибку в вставке FIFO. Зафиксированный в 16550A, версия 1.1 в программном обеспечении говорить.

проблема заключалась в том, что водитель не мог сказать, была ли у машины багги версия 16550 или хорошая. Такие простые чипы не имеют эквивалента GetVersion (). Таким образом, он предоставил страницу свойств, которая позволяет пользователю отключить поддержку FIFO, минуя ошибку.

шансы на то, что сегодня у вас будет багги-версия, равны нулю. Выключение FIFO больше не требуется.