Не могу найти все оборудование на шине PCI

Тема в разделе "WASM.NT.KERNEL", создана пользователем goga2007, 12 апр 2008.

  1. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    Не могу найти все оборудование на шине PCI, используя BIOS PCI функции:

    Код (Text):
    1. ...
    2. devices_search:
    3.  
    4. ;searching:
    5.  
    6.         call    GetDevice
    7.         cmp     ah,DEVICE_NOT_FOUND
    8.         je      @f
    9.         test    ah,ah
    10.         jnz     error_device_search
    11.         call    FillDescriptor  ;заполняет структуру в памяти и выводит на экран информацию о найденном оборуд.
    12.         inc     si
    13.         add     di,DEVICE_DESCRIPTOR_SIZE
    14.         jmp     devices_search
    15.    @@:
    16.  
    17.         mov     ax,di
    18.         pop     di              ;restore descriptor count offset
    19.         mov     [es:di],si
    20.         cmp     ecx,DEVICE_RADIO_CONTROLLER     ;the last device type
    21.         je      @f                              ;all devices were found
    22.         mov     si,0                            ;the first device
    23.         add     ecx,010000h ;next device type
    24.         push    ax              ;save descriptor count field offset
    25.         mov     di,ax
    26.         add     di,2            ;add size of descriptor count field
    27.         jmp     devices_search
    28.    @@:
    29. ...
    30.  
    31.  
    32. GetDevice:
    33.  
    34.         push            edi
    35.         push            ecx
    36.         mov             ax,0B103h
    37.         int             1Ah
    38.         pop             ecx
    39.         pop             edi
    40.         ret
    этот код находит только сетевой контроллер, контроллер дисплея и устройство моста:

    Код (Text):
    1. network controller:
    2. device number: 0
    3. bus number:2
    4. vendorid:10ECh
    5. deviceid:8168h
    6.  
    7. display controller:
    8. device number:0
    9. bus number:1
    10. vendorid:10deh
    11. deviceid:01d7h
    12.  
    13. bridge:
    14. device number:0
    15. bus number:0
    16. vendorid:8086h
    17. deviceid:27a0h
    подскажите как найти остальные устройства, ведь гдето должен быть контроллер ждисков, контроллер usb,
    контроллер опер памяти и тд??

    п.с. ноутбук acer travelmate 5620.
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    goga2007
    Лучши для поиска пробовать подряд все устройства. Вернее там не все подряд перебираются, а с учетом ограничений.

    А ошибка у тебя в том что ты инкримируешь код класса устройства на ecx,010000h, надо инкремировать на 1. Так как контроллер ждисков имеет классы с 010180h по 01018Fh то ты его и не находишь
     
  3. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    goga2007
    может быть несколько шин PCI.
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    t00x
    Не может быть. А так оно и есть. И найденно по одному устройству с шины.
    0 - главная, системная шина на ней распологается системная логика материнской карты и сам процессор.
    1 - шина видео карты AGP/PCI-E, необязательно только нее.
    2 - шина плат расширения PCI.

    Может быть больше меньше в зависимости от конфигурации компьютера но обычно эти три.
     
  5. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Pavia
    буду знать.
     
  6. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Код (Text):
    1. # lspci
    2. 00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a1)
    3. 00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a2)
    4. 00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a2)
    5. 00:01.2 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
    6. 00:01.3 Co-processor: nVidia Corporation MCP55 SMU (rev a2)
    7. 00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
    8. 00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
    9. 00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
    10. 00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a2)
    11. 00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a2)
    12. 00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
    13. 00:06.1 Audio device: nVidia Corporation MCP55 High Definition Audio (rev a2)
    14. 00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a2)
    15. 00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
    16. 00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
    17. 00:0d.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
    18. 00:0e.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
    19. 00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
    20. 00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
    21. 00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
    22. 00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
    23. 00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
    24. 01:08.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
    25. 01:08.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
    26. 01:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
    27. 06:00.0 VGA compatible controller: nVidia Corporation GeForce 7300 GS (rev a1)
    У меня даже 6-я шина есть.
    Кстати, а сколько шин всего может быть? А то я на 486-ом моём столько девайсов одинаковых понаобнаружал, что никому и не снилось :) (учитывая, что максимальный номер шины я взял 255).
    З.Ы. function = [1..7] надо смотреть, если это только multifunctional device (читается из параметров девайса с функцией 0).
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    надо в спецификацию лезть. Напямть вроде 256 шин и ккаждой из них можно подключить столькоже.
    Насчет 486 ничего нескажу.

    Правельно 5 мастов E-PCI + 1 мост PCI + 1 главная шина.