Диспетчер устройств

Devices programming
  • Не прошло и полгода, сделал определение устройств. Для моей системы за небольшим исключением результаты не отличаются от тех, что показывает Windows.
    Spoiler:

    Code: Select all

    PCI_8086_2570 bus:0 devfn: 0
      MMIO range d0000000 - dfffffff
    
    PCI_8086_2571 bus:0 devfn: 8
    
    PCI_8086_24d2 bus:0 devfn: e8
      IO range bc00 - bc1f
      APIC IRQ: 16
    
    PCI_8086_24d4 bus:0 devfn: e9
      IO range b000 - b01f
      APIC IRQ: 19
    
    PCI_8086_24d7 bus:0 devfn: ea
      IO range b400 - b41f
      APIC IRQ: 18
    
    PCI_8086_24de bus:0 devfn: eb
      IO range b800 - b81f
      APIC IRQ: 16
    
    PCI_8086_24dd bus:0 devfn: ef
      MMIO range f2100000 - f21003ff
      APIC IRQ: 23
    
    PCI_8086_244e bus:0 devfn: f0
    
    PCI_8086_24d0 bus:0 devfn: f8
    
    PCI_8086_24d1 bus:0 devfn: fa
      IO range 1f0 - 1f7
      IO range 3f6 - 3f6
      IO range 170 - 177
      IO range 376 - 376
      IO range f000 - f00f
      APIC IRQ: 18
    
    PCI_8086_24d3 bus:0 devfn: fb
      IO range 1400 - 141f
      APIC IRQ: 17
    
    PCI_8086_24d5 bus:0 devfn: fd
      IO range d800 - d8ff
      IO range dc00 - dc3f
      MMIO range f2101000 - f21011ff
      MMIO range f2102000 - f21020ff
      APIC IRQ: 17
    
    PCI_1002_9495 bus:1 devfn: 0
      MMIO range e0000000 - efffffff
      IO range 9000 - 90ff
      MMIO range f1000000 - f100ffff
      MMIO range 0 - 1ffff
      APIC IRQ: 16
    
    PCI_1002_aa38 bus:1 devfn: 1
      MMIO range f1010000 - f1013fff
      APIC IRQ: 17
    
    PCI_1106_3106 bus:2 devfn: 8
      IO range a000 - a0ff
      MMIO range f2000000 - f20000ff
      APIC IRQ: 21
    
    MEM
     Memory range 0d0000-0d7fff
     Memory range 0f0000-0f7fff
     Memory range 0f8000-0fbfff
     Memory range 0fc000-0fffff
     Memory range 03fff0000-03fffffff
     Memory range 00-09ffff
     Memory range 0100000-03ffeffff
     Memory range 0fec00000-0fec00fff
     Memory range 0fee00000-0fee00fff
     Memory range 0fed20000-0fed8ffff
     Memory range 0ffb00000-0ffbfffff
     Memory range 0fff00000-0ffffffff
     Memory range 0e0000-0effff
    
    PCI0
     Address range 00-0ff
     IO range 0cf8-0cff
     Address range 00-0cf7
     Address range 0d00-0fff
     IO range 01000-010bf
     Address range 010c0-013ff
     Address range 01400-0ffff
     Address range 0a0000-0bffff
     Address range 0c0000-0dffff
     Address range 040000000-0febfffff
    
    SYSR
     IO range 010-01f
     IO range 022-03f
     IO range 044-05f
     IO range 062-063
     IO range 065-06f
     IO range 074-07f
     IO range 091-093
     IO range 0a2-0bf
     IO range 0e0-0ef
     IO range 04d0-04d1
     IO range 0290-029f
     IO range 0800-0805
    
    PIC
     IO range 020-021
     IO range 0a0-0a1
     IRQ 2
    
    DMA1
     DMA  channel 4
     IO range 00-0f
     IO range 080-090
     IO range 094-09f
     IO range 0c0-0df
    
    TMR
     IO range 040-043
     IRQ 0
    
    RTC
     IO range 070-073
     IRQ 8
    
    SPKR
     IO range 061-061
    
    COPR
     IO range 0f0-0ff
     IRQ 13
    
    UAR1
     IO range 03f8-03ff
     IRQ 4
    
    LPT1
     IO range 0378-037f
     IRQ 7
    
    Пора думать об ущемлении прав программистов организации доступа к устройствам. Нужна система имён для устройств. Функции для перечисления и поиска и т.п.

    Update.

    Перечисление устройств для желающих узнать из чего сделан их компьютер.
    Spoiler:Скопировать файлы в /rd/1/drivers и запустить acpi. Туда же будет записан acpi.log
  • Serge
    Протестировал на свежей ночной сборке. Вылетает с ядрёной ошибкой. Логи прилагаются.
    Attachments
    ACPI_Dump.txt (77.43 KiB)
    На всякий случай дамп ACPI таблицы программой ACPI Explorer.
    Downloaded 429 times
    log_error.7z (161.22 KiB)
    Мать ASUS A8R32-MVP Deluxe
    Downloaded 422 times
  • Отличная работа. :)
    А текущий синтаксис именования носителей информации не годится?
  • Протестировал на Thinkpad R51. Работает замечательно.
    Attachments
    ACPI.LOG (10.73 KiB)
    Downloaded 426 times
  • Asper

    Это ACPI имена, они весьма условны и различаются в разных БИОС.

    Code: Select all

    ACPI: Adding [\_SB_.PCI0.PX40.SYSR] HID: PNP0C02
    ACPI: Adding [\_SB_.PCI0.PX40.PIC_] HID: PNP0000
    ACPI: Adding [\_SB_.PCI0.PX40.DMA1] HID: PNP0200
    ACPI: Adding [\_SB_.PCI0.PX40.TMR_] HID: PNP0100
    ACPI: Adding [\_SB_.PCI0.PX40.RTC_] HID: PNP0B00
    ACPI: Adding [\_SB_.PCI0.PX40.SPKR] HID: PNP0800
    ACPI: Adding [\_SB_.PCI0.PX40.COPR] HID: PNP0C04
    ACPI: Adding [\_SB_.PCI0.PX40.UAR1] HID: PNP0501
    ACPI: Adding [\_SB_.PCI0.PX40.LPT1] HID: PNP0400 
    Однозначно устройства отпределяются только по кодам PNP.
  • Attachments
    ACPI.LOG (13.75 KiB)
    Downloaded 433 times
  • Здравствуйте!

    А у меня вот такое написал в лог:

    AcpiOsGetRootPointer returning 0xf7830
  • Asper

    Да, HID и CID коды устройств. Все имена взяты из данных ACPI, сам я пока ничего не назначаю.

    popovpa

    После чего вылетел ?
  • У меня не вылетал...эт же колибри..она бегает :)
  • Serge
    Ты как-то говорил, что драйверу должно быть всё равно как называть устройство, если использовать логические номера и структуру конфигурации устройства. Если это актуально и для текущего кода, то имеет смысл давать устройствам краткие названия, а дополнительную информацию об устройстве получать по запросу от драйвера. Тогда для носителей информации: для жёстких дисков можно оставить hd, для CD/DVD cd, для Floppy fd, для USB дисков ud. Конечно можно давать буквенные обозначения как Win/DOS, но надо ли?
    Для остальных устройств даже не знаю имеет ли смысл давать какие-то имена.
  • Asper

    1. Стандартные имена нужны. Иначе как искать устройства ? Есть же не только PCI, но и порты, вентиляторы, батареи, термодатчики и т.п. ACPI определяет все эти устройства и с ними можно работать. Но чтобы получть доступ к устройству драйверу надо его сначала найти в списке.

    2. hd, cd это имена логических устройств. Диспетчер с ними ещё не работает. Сейчас в списке только устройства pci и остальные устройства, требующие ресурсы - прерывания, порты и т.д.
  • Исправил ошибку в ядре и обновил нумератор устройств. Новая версия записывает файл drivers/devices.dat с данными для работы в режиме APIC.
  • Отлично! :) Т.е. теперь система может получить доступ ко всем устройствам компьютера, я правильно понимаю?
  • Да, осталось разобраться с именованием устройств, потому что единого стандарта на имена не наблюдается.
  • Who is online

    Users browsing this forum: No registered users and 0 guests