Товарищи низкауровневые кодеры! Подскажите пожалусто как определить срецтвами ассемблера тип микросхемы UART: 8250 или 16550 ?
Советую почитать Александр Фролов, Григорий Фролов Библиотека системного программиста\Том 4. Программирование модемов\CH2.HTM По мимо ихнего способа можно через PnP. Правда там где он есть и так ясно, что 16550A будет.
simpleX Такие могут быть только на очень старых компах. Значит это исключает продвинутые Винды и т.д. Но по-моему как раз telemax из Norton Commander-a все прекрасно определяет.
можно определить и эту разницу, только не средствами ассемблера, а это называется низкоуровневыми методами, конкретнее в данном случае, через порты и регистры самого контроллера последовательного порта. 1) на текущий момент для тебя тема уже исчерпана? 2) 8250 - 16550 это взято, как пример чтобы спросить/познать или есть реальная потребность именно их детектить реально?
во чувак, ты уцепил самую суть, именно как через порты. 1) не исчерпана. до сих пор не знаю. те мануалы што мне попадались описывали тока регистры самой микросхемы, причем там и намека не было на чтото вроде "регистра идентификатора микросхемы". 2) ето взято как пример, хочу познать сие и применять када нужно будед =)
Зачастую так все и работает. 1. вариант есть набор байт/бит индетнтифицируещее устройство его функции. 2. Нету такой информации остается метод тыка. Взять и попробовать исполнить что-то попробовать записать и считать. Если ты читал то что я тебе дал то 8250 отличается от 16550 наличием еще одного регистра. Так вот тестирование идет вторым путем. Т.е можно понять что 250 использовался в очень старых компах. Pentium I 1991-92 год. это было более чем 17 лет тому назад. Если нет специальной необходимости то на это можно забить. 1995-96 году вводитья спецификация PnP которая позволяет определить наличие тех или иных устройств.
- согласен с Pavia именно на данный пример можно забить, если... если ты не упрямый и суперпытливый ковырялщик железяк, которому недает это покоя Делал я такую штуку и даже ширше ставил себе задачу определять все известные чипы популярных UART... Собственно популяных, а тем более СТАНДАРНЫХ методов НЕТ!!! Отдельного регистра в чистом виде нет... Вообще все это и подобные чип-ковыряния это: эксклюзивно, нетривиально, зависит от производителя например потроха UART от Exar отличаются от TexasInstruments... НО почти общий принцип можно изобресть и попытаться тестить портами+регистрами+маски чипы от 8250 до 16950 модели (это глубокое чтиво DATASHEETs, анализ + кодинг + тесты = кропотливая работа классного "дровосека", аппаратчика, инженера...). Если очень, очень- очень надо, то могу порыться поискать, лет 5-6 назад травмировал себе мозги этим . А лучше преключи внимание на что нить более полезное или современное. USB например. :0)
хммм... ну сопсна про существование различий в регистровой модели 8250 и 16550 я знал, но посчитал что етот способ определения "через djopu" =) p.s. еслиб знал что тема уйдет в "железные" дискуссии, канешноб разместил в electronics =)) p.p.s. кстате, вот такой вопрос меня еще мучает. допустим я читаю из порта или пишу в порт, а он не сопоставлен ни одному устройству в системе. ето можно как нить определить? например флаги какие-нить выставляются или та же in вернет что нить типо 0xFFFF?
simpleX Бытует мнение что при обращении к такому порту задержка буде порядка 250нс можно таймером померить. Хотя время для доступа к другим портам не регламенирвано. А вообще при чтении такой порт должен вернуть 0FFh хотя тут тоже вроде не регламентировано. Собственно с водом PnP все порты должны быть под колпаком. т.е можно используя PnP BIOS, PCI, ACPI получить список всех устройств и их портов.