Page 2 of 3

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

Posted: Wed Feb 09, 2011 9:31 am
by XVilka
По поводу старой модели доступа к PCI и новой - почему бы не сделать условную компиляцию - где надо скомпилировать по старой модели доступа, а где можно - по новой?

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

Posted: Tue Feb 15, 2011 9:19 pm
by Serge
Не прошло и полгода, сделал определение устройств. Для моей системы за небольшим исключением результаты не отличаются от тех, что показывает 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

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

Posted: Sun Feb 20, 2011 9:07 pm
by Maxis
Serge
Протестировал на свежей ночной сборке. Вылетает с ядрёной ошибкой. Логи прилагаются.

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

Posted: Thu Feb 24, 2011 2:36 pm
by Asper
Отличная работа. :)
А текущий синтаксис именования носителей информации не годится?

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

Posted: Fri Feb 25, 2011 11:41 am
by Asper
Протестировал на Thinkpad R51. Работает замечательно.

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

Posted: Fri Feb 25, 2011 2:38 pm
by Serge
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.

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

Posted: Sun Feb 27, 2011 1:24 pm
by Asper

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

Posted: Sun Feb 27, 2011 5:14 pm
by popovpa
Здравствуйте!

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

AcpiOsGetRootPointer returning 0xf7830

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

Posted: Sun Feb 27, 2011 5:20 pm
by Serge
Asper

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

popovpa

После чего вылетел ?

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

Posted: Sun Feb 27, 2011 5:27 pm
by popovpa
У меня не вылетал...эт же колибри..она бегает :)

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

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

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

Posted: Mon Feb 28, 2011 7:46 pm
by Serge
Asper

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

2. hd, cd это имена логических устройств. Диспетчер с ними ещё не работает. Сейчас в списке только устройства pci и остальные устройства, требующие ресурсы - прерывания, порты и т.д.

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

Posted: Wed Sep 21, 2011 1:29 pm
by Serge
Исправил ошибку в ядре и обновил нумератор устройств. Новая версия записывает файл drivers/devices.dat с данными для работы в режиме APIC.

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

Posted: Wed Sep 21, 2011 6:49 pm
by Asper
Отлично! :) Т.е. теперь система может получить доступ ко всем устройствам компьютера, я правильно понимаю?

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

Posted: Wed Sep 21, 2011 9:14 pm
by Serge
Да, осталось разобраться с именованием устройств, потому что единого стандарта на имена не наблюдается.