Инициализация COM порта в BIOS и DOS
- Rio444
- Почётный пользователь
- Сообщения: 26861
- Зарегистрирован: 14.09.2014,19:11
- Откуда: Ростов-на-Дону
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
uav1606, посмотрел отчет.
Что-то не сходится.
Судя по результатам теста, "received F4h", но кода "F4" нигде в отчете нет.
Чтение из регистра 3fe всего в двух местах:
com1 register read from address: 0x03fe = 0xff
com1 register read from address: 0x03fe = 0x03
Что-то не сходится.
Судя по результатам теста, "received F4h", но кода "F4" нигде в отчете нет.
Чтение из регистра 3fe всего в двух местах:
com1 register read from address: 0x03fe = 0xff
com1 register read from address: 0x03fe = 0x03
Электронка: копия
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
Не могу ничего по этому поводу сказать - возможно, имеется в виду не сам регистр, а что-то ещё? Т.е. F4 - это не содержимое Modem Status Register, а что-то другое? Но так сразу я не соображу, что это может быть.
- Rio444
- Почётный пользователь
- Сообщения: 26861
- Зарегистрирован: 14.09.2014,19:11
- Откуда: Ростов-на-Дону
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
Может это значение "F4" получено обработчиком прерывания IRQ4?
Он же не попал в отчет?
Он же не попал в отчет?
Электронка: копия
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
В отчёт должны были попасть все обращения к диапазону порта COM1, даже из BIOS и прочего. Может быть, эти F0 и F4 - это нечто, генерируемое самим CheckIt по своей внутренней логике, то есть не прямое значение регистра MSR, а как-то обработанное? Там же нижние 4 бита - это какие-то delta, возможно, CheckIt их как-то так странно интерпретирует?
Прерывания при этом тесте, кстати, не используются вообще.
Прерывания при этом тесте, кстати, не используются вообще.
- Rio444
- Почётный пользователь
- Сообщения: 26861
- Зарегистрирован: 14.09.2014,19:11
- Откуда: Ростов-на-Дону
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
Тогда вообще ничего не понятно.
Нижние 4 бита это действительно дельта. Они сбрасываются после чтения этого регистра.
Всё равно спасибо за помощь. Буду копать дальше.
Нижние 4 бита это действительно дельта. Они сбрасываются после чтения этого регистра.
Всё равно спасибо за помощь. Буду копать дальше.
Электронка: копия
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
Ещё интереснее вот это:
00130124390d[SER ] com1 register write to address: 0x03fe = 0x00
Зачем CheckIt это делает, то есть пишет в read-only регистр?
00130124390d[SER ] com1 register write to address: 0x03fe = 0x00
Зачем CheckIt это делает, то есть пишет в read-only регистр?
- Rio444
- Почётный пользователь
- Сообщения: 26861
- Зарегистрирован: 14.09.2014,19:11
- Откуда: Ростов-на-Дону
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
В Вашем отчете следующей строкой написано: "com1: write to MODEM status register ignored"
Мне кажется это проверка на невозможность записи в read-only регистр.
Собственно потом из него читается FF, как и должно быть.
Хотя нет. Должно читаться FB. Третий бит устанавливается не по изменению, а по спаду сигнала, с 1 в 0.
Надо поэкспериментировать на "живой" мультикарте.
Мне кажется это проверка на невозможность записи в read-only регистр.
Собственно потом из него читается FF, как и должно быть.
Хотя нет. Должно читаться FB. Третий бит устанавливается не по изменению, а по спаду сигнала, с 1 в 0.
Надо поэкспериментировать на "живой" мультикарте.
Электронка: копия
Инициализация COM порта в BIOS и DOS
Подтверждаю, проверено на реальном железе.
Глюк документирован - он есть на 8250 и устранен в 16450.
Checkit не виноват.
Сделано, см. выше.
ИМХО, вспоминая нашу беседу про read-only регистры:
возможно у 8250 он таким и является, а Checkit, споткнувшись, завершает тест.
F4 / F0 - внутренние переменные Checkit, в лог не попали, т.к. запись отвергнута.
В 16450, согласно описанию, запись возможна. Ошибок нет...
Инициализация COM порта в BIOS и DOS
Провел дополнительные проверки Modem Status Register.
Подопытные: CM611P - болгарский клон 8250
и FM88450-A (производителя определить не удалось).
Обе м/c 1989 г.в., из старых запасов.
Младшие 4 бита доступны на запись и у 8250, и у 88450.
Независимо от установки режима "loopback".
Подопытные: CM611P - болгарский клон 8250
и FM88450-A (производителя определить не удалось).
Обе м/c 1989 г.в., из старых запасов.
Младшие 4 бита доступны на запись и у 8250, и у 88450.
Независимо от установки режима "loopback".
- Rio444
- Почётный пользователь
- Сообщения: 26861
- Зарегистрирован: 14.09.2014,19:11
- Откуда: Ростов-на-Дону
-
Вклад в сообщество
Инициализация COM порта в BIOS и DOS
Вам об этом же и писал в теме про адаптер.
Я проверял не только COM-порт на мультикарте, но и встроенный на плате Pentium, чипсет 430TX. Он себя тоже так ведет.
Так что это сделано абсолютно осознанно.
Гук в своих "Аппаратных интерфейсах..." явно указывает, что MSR доступен как R/W.
Но делает сноску
Впрочем, нигде потом не разъясняет, какие биты можно только читать, а какие и записывать.1 Некоторые биты допускают только чтение. Запись в регистр может привести к сбою
протокола.
Думаю смыл возможности записи младших 4-х битов заключается в том, что при чтении MSR они всегда автоматом сбрасываются в ноль.
При этом могут показывать до 4-х разных событий, произошедших на линиях управления от модема.
В случае, если обработчик способен обработать только одно событие, они читает MSR, выполняет необходимые действия, сбрасывает бит за который отвечает, пишет новое значение MSR,
и вызывает следующий обработчик, которые будет обрабатывать другие события.
Электронка: копия