Программирование PNP

Тема в разделе "WASM.ASSEMBLER", создана пользователем DJK, 14 окт 2006.

  1. DJK

    DJK Member

    Публикаций:
    0
    Регистрация:
    8 авг 2006
    Сообщения:
    39
    Подскажите как перечислить все PNP устройства находящиеся на материнской плате?
    используя толко порты А79, 274-277 , 279 PNP.
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    DJK
    Хочешь скину исходники биоса 2.8МБ? Там это есть.
    Могу скинуть документацию на PnP в PDF или в RTF там несколько файлов 0.5МБ. То что нужно PNPISA - это если через порты.
    Лично я так с портами и не поработал, остановился на работе с BIOSом.
    Если ты всетаки напишишь програмку, то я с удовольствием приму ее.
     
  3. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    0,5Мб -- это наверное Plug and Play ISA Specification и Plug and Play BIOS Specification ;)
    до кучи:
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _BC_
    PNPBIOS.rtf
    pnpisa.pdf
    pnpcom.pdf
    pnplpt.pdf
    pnpscsi.pdf
    devids.txt
    Все в сумме если сжать раром то 430КБ.
    http://footballtabl.h15.ru/ivan/pnp_specs.rar
    А за EISA ID спасибо, правда не уверен я что он верный.
     
  5. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    в принципе на современных MB от ISA PnP Enumerator'а толку мало -- там похоже "зацепить" можно только реальные ISA-карты (кои уже раритет) и ничего более. Залез у себя в HKLM\Enum\ISAPNP -- там пусто, pciscope cоответственно выдает Total number of CSNs assigned 0. Т.е. "Чтение данных из порта для перечислителя ISA Plug and Play" (С)винда на данный момент бесполезно (что правда не мешает isapnp.vxd болтаться в памяти). Т.о., сабж сводится к $PnP + PCI conf. (если конечно не надо специально перечислить ISA PnP-карты на старой материнке). ACPI к несчастью загажен всяким г..ном вроде объектов и aml, хотя по идее DSDT д.б. главным источником этой инфы. :dntknw:
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _BC_
    Судя по документации на PnP все устройства находящиеся на MB являются устаревшими legacy. Есть такая дока от Майкрософт pnp_legacy.doc в который про это и говорится. А следовательно не должны детектится через порт PNPISA. Если заглянуть в исходники биоса то там видно, что часть устройств вообще не определяется, а забиты как данные, другие детектятся сторонними методами.
    Поэтому использовать порт 279h можно только на старых компьютерах с ISA шиной, для определения карт ISA.
    Но BIOS PnP определяет не все устройство, часть ACPI устройсв не определена, возможно и др
     
  7. DJK

    DJK Member

    Публикаций:
    0
    Регистрация:
    8 авг 2006
    Сообщения:
    39
    На платах интела есть такое устройство как LPC Interface Controller (82801EB) к которому прицеплены все PNP устройства. Все что прицеплено к нему и необходимо найти,
    необходимо перечеслить все PNP устройства не используя БОИС только порты.
     
  8. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    К LPC "прицеплена" только всякая мелюзга вроде таймера, PIC, RTC, DMA, FDC, COM и тп -- всё то, что совсем не PnP -- большинство с фиксированными ресурсами или настраиваемое/отключаемое средствами LPC I/F bridge. И там как раз всё то, что перечисляется ч/з $PnP -- пример Pavia дал.

    Only the following class of devices may be connected to the LPC interface:
    - Super I/O (FDC, SP, PP, IR, KBC) => I/O slave, DMA, Bus Master (for IR, PP)
    - Audio, including AC'97 style design => I/O slave, DMA, Bus Master
    - Generic Application Memory, including BIOS => Memory Slave
    - BIOS Firmware Memory => Firmware Memory Slave
    - Embedded Controller => I/O slave, Bus Master

    (С) Intel® Low Pin Count (LPC) Interface Specification

    + AC97 на интелах подключен не к LPC, а отдельно.
     
  9. DJK

    DJK Member

    Публикаций:
    0
    Регистрация:
    8 авг 2006
    Сообщения:
    39
    Спасибо Pavia за програмку, работает.
    Но почему-то не находит
    PNPB006 MPU401 compatible
    PNPB02F Joystick/Game port
    зато все остальное ОК.
    Мне нет необходимости искать PNP ISA Card Devices.
     
  10. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    DJK
    проверь
    а) что на материнской плате MIDI и gameport вообще реализованы
    б) что в BIOS setup'е MIDI и gameport включены

    Если в сетапе нет никаких опций для миди и геймпорта, значит материнка их не поддерживает. На моей MB, к примеру, миди и геймпорт отсутствуют как в виде разъемов на задней панели, так и в виде контактов на самой плате, несмотря на то, что сам Winbond W83627EHF (SIO + sensor) их поддерживает.

    Все остальные девайсы -- мосты, LAN контроллер, AC97, IDE/SATA-контроллеры, USB и тд -- перечисляются в PCI conf. ;)
     
  11. DJK

    DJK Member

    Публикаций:
    0
    Регистрация:
    8 авг 2006
    Сообщения:
    39
    Физически Joystick/Game por и MPU1 присутствуют, в БИОСе все они включены, в ДОС я с Joystick/Game por работаю, но определить его не удается, оба они весят на LPC.
     
  12. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    а в самом реестре винды где они прописаны? Можешь экспорт ветки кинуть? В DSDT бы их поискать по-хорошему, но винда к сожалению любит херить ACPI reclaim area после копирования инфы с нее в реестр.
     
  13. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _BC_
    Все прописываютя в ACPI. А где в DSDT хранится?
     
  14. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    DSDT -- это как раз имя ACPI-таблицы, в которой хранится сабжевый стафф -- MB-устройства, их ресурсы, методы, etc. По логике вещей DSDT является #1 источником для перечисления этих устройств, но разработчики ACPI подложили свинью -- BIOS копирует DSDT (и другие таблицы) в ACPI reclaim area (вверху физ.памяти), которая, будучи обработанной осью, помечается как свободная физ.память -- согласно acpi-спецификации. ;) Соответственно часть или вся DSDT может оказаться запоротой -- в 1м же экспериментальном дампе, снятом при загруженной винде, примерно половина DSDT оказалась забита мусором. :dntknw: (added: актуально только для w9x, NT/XP похоже оставляет DSDT нетронутой)
    Вообще же штука полезная -- в аттаче DSDT с моей системы, снятая в нужный момент при загрузке (а именно во время ее обработки в acpi.sys ;) ) + она же, обработанная AML-дизассемблером. В листинге явно видно, что в DSDT гораздо больше информации по сравнению с PnP BIOS. ;)