UART 8250, 16550

Тема в разделе "WASM.ASSEMBLER", создана пользователем simpleX, 11 май 2008.

  1. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    Товарищи низкауровневые кодеры!
    Подскажите пожалусто как определить срецтвами ассемблера
    тип микросхемы UART: 8250 или 16550 ?
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Советую почитать
    Александр Фролов, Григорий Фролов
    Библиотека системного программиста\Том 4. Программирование модемов\CH2.HTM

    По мимо ихнего способа можно через PnP. Правда там где он есть и так ясно, что 16550A будет.
     
  3. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    simpleX
    Такие могут быть только на очень старых компах. Значит это исключает продвинутые Винды и т.д.
    Но по-моему как раз telemax из Norton Commander-a все прекрасно определяет.
     
  4. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    хммм... весьма любопытный мануал
    премного благодарен
     
  5. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    можно определить и эту разницу, только не средствами ассемблера, а это называется низкоуровневыми методами, конкретнее в данном случае, через порты и регистры самого контроллера последовательного порта.
    1) на текущий момент для тебя тема уже исчерпана?
    2) 8250 - 16550 это взято, как пример чтобы спросить/познать или есть реальная потребность именно их детектить реально?
     
  6. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    во чувак, ты уцепил самую суть, именно как через порты.
    1) не исчерпана. до сих пор не знаю. те мануалы што мне попадались описывали тока регистры самой микросхемы, причем там и намека не было на чтото вроде "регистра идентификатора микросхемы".
    2) ето взято как пример, хочу познать сие и применять када нужно будед =)
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Зачастую так все и работает.
    1. вариант есть набор байт/бит индетнтифицируещее устройство его функции.
    2. Нету такой информации остается метод тыка. Взять и попробовать исполнить что-то попробовать записать и считать.
    Если ты читал то что я тебе дал то 8250 отличается от 16550 наличием еще одного регистра. Так вот тестирование идет вторым путем.

    Т.е можно понять что 250 использовался в очень старых компах.
    Pentium I 1991-92 год. это было более чем 17 лет тому назад. Если нет специальной необходимости то на это можно забить.
    1995-96 году вводитья спецификация PnP которая позволяет определить наличие тех или иных устройств.
     
  8. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    - согласен с Pavia именно на данный пример можно забить, если... если ты не упрямый и суперпытливый ковырялщик железяк, которому недает это покоя :)
    Делал я такую штуку и даже ширше ставил себе задачу определять все известные чипы популярных UART... Собственно популяных, а тем более СТАНДАРНЫХ методов НЕТ!!! Отдельного регистра в чистом виде нет...
    Вообще все это и подобные чип-ковыряния это: эксклюзивно, нетривиально, зависит от производителя например потроха UART от Exar отличаются от TexasInstruments... НО почти общий принцип можно изобресть и попытаться тестить портами+регистрами+маски чипы от 8250 до 16950 модели (это глубокое чтиво DATASHEETs, анализ + кодинг + тесты = кропотливая работа классного "дровосека", аппаратчика, инженера...).
    Если очень, очень- очень надо, то могу порыться поискать, лет 5-6 назад травмировал себе мозги этим :).
    А лучше преключи внимание на что нить более полезное или современное. USB например. :0)
     
  9. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Да и еще. Данная тема ДОЛЖНА бы быть в разделе "WASM.ELECTRONICS"
     
  10. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    хммм... ну сопсна про существование различий в регистровой модели 8250 и 16550
    я знал, но посчитал что етот способ определения "через djopu" =)

    p.s. еслиб знал что тема уйдет в "железные" дискуссии, канешноб разместил в electronics =))
    p.p.s. кстате, вот такой вопрос меня еще мучает. допустим я читаю из порта или пишу в порт, а он не сопоставлен ни одному устройству в системе. ето можно как нить определить? например флаги какие-нить выставляются или та же in вернет что нить типо 0xFFFF?
     
  11. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    simpleX
    Бытует мнение что при обращении к такому порту задержка буде порядка 250нс можно таймером померить. Хотя время для доступа к другим портам не регламенирвано.
    А вообще при чтении такой порт должен вернуть 0FFh хотя тут тоже вроде не регламентировано.
    Собственно с водом PnP все порты должны быть под колпаком. т.е можно используя PnP BIOS, PCI, ACPI получить список всех устройств и их портов.
     
  12. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    спасиба всем за помощь =)