super io

Тема в разделе "WASM.BEGINNERS", создана пользователем Kirillxskynet, 9 фев 2007.

  1. Kirillxskynet

    Kirillxskynet New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    30
    Народ подскажите как программно определить какой super io установлен на моей матери?
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ничего себе
    можно попробовать пепебрать все PCI устройства и выделить среди них SuperIO по коду класса. Затем посмотреть Vendor/Device ID
    можно попробовать тупо полезть в регистры самого io и поискать идентификатор там
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Kirillxskynet
    Открытого стандарта я не встречал. Судя по документации все похоже, но различия есть, так что качаем спецификации на все самые популярные Super I/O устройства.
    Через один из порты 2Eh и 2Fh(или 4Eh и 4Fh) осуществляется доступ к таблицам настройки устройств. Структура этих таблиц напоминает PnP. Собственно 2Eh - порт адресса 2Fh порт данных. По адрессу 20h-21h у Winbond и IT87 лежит идентификатор.
    Насчет протокола общения, перед тем как что-то прочитать нужно инициировать доступ к этим таблицам.
    Код (Text):
    1. ; Иницилизация режима доступа
    2. MOV DX,2Eh
    3. MOV AL,87h
    4. OUT DX,AL
    5. OUT DX,AL
    6. ; Тут уже можно читать писать в глобальные регистры.
    7. MOV DX,2Eh
    8. MOV AL,20h
    9. OUT DX,AL
    10.  
    11. MOV DX,2Fh
    12. MOV AL,20h
    13. IN    AL, DX
    14. MOV CL,AL
    15.  
    16. MOV DX,2Fh
    17. MOV AL,21h
    18. IN    AL, DX
    19. MOV CH,AL
    20. ; Теперь по идее в CX лежит ID устройства.
    21. ; код не проверял набирал прямо сдесь
    22. ; для доступа к локальным нужно установить номер тоблицы.
    23. ; выход
    24. ;тут различные протоколы.
    Nouzui
    К PCI это не имеет отношение.
     
  4. Kirillxskynet

    Kirillxskynet New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    30
    А какой у тебя windond? IT87...?
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    У меня IT8712F
    Там должно лежать
    Адресс значение
    20h 87h
    21h 12h
    У IT8705F
    20h 87h
    21h 05h
    У W83627THF
    20h 82h
    21h 8h
     
  6. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    они не только на 2E/2F или 4E/4F, есть и на других диапазонах. На части чипов можно менять базу портов strap'ами. Отчасти поэтому в lm-sensors порты описываются не фиксироваными адресами, а диапазонами, которые собственно и сканятся при поиске SIO-чипа.
    Лично мне в исходниках lm-sensors лень было копаться, поэтому я инфу брал из CPU-Z. ;) Там по крайней мере нет такого столпотворения с мониторинг-чипами на SMBus, как в lm-sensor'ах. CPU-Z кстати со сканом диапазонов не заморачивается, исключительно фиксированный набор баз портов. Базу и метод работы с чипом детектит методом проб и ошибок. ;)
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    может быть.. мне казалось, что у sio обычно есть конфиг на pci
    кстати, порты и разрешающая последовательность у каждой микросхемы своя
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _BC_
    LM сенсор я копал. Но он мне не нравиться. Да и способ детекта у них не практичный. А во вторых они ищут в 290h или в адрессах SMBus. Причем эти адреса настраевыемые и делается эта настройка через те порты о которых я писал выше.

    Я не иду на поводу у lm-sensors. А предлогаю иной способ, другии порты другии ID.
     
  9. Kirillxskynet

    Kirillxskynet New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    30
    A чем отличается winbond W83627THF от W83627THF-A? Может кто знает?
     
  10. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    lm-sensors вроде тоже этот способ использует для Super I/O чипов, помимо сканов по диапазонам. А в CPU-Z это основной и единственный способ детекта чипа и взятия базы мониторинг-чипа. ;) Помимо 87h 87h CPU-Z еще 55h и 87h 01h 55h 55h пробует.
     
  11. Kirillxskynet

    Kirillxskynet New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    30
    А откуда у тебя столько информации про CPU-Z? Есть исходники или сам разбирался?
     
  12. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    любопытство ;)
     
  13. apple_rom

    apple_rom Роман

    Публикаций:
    0
    Регистрация:
    1 авг 2006
    Сообщения:
    34
    Адрес:
    Минск
    Верно говорит _BC_ - для "правильного" детекта мультиков нужно использовать базу используемых портов, на которых оные могут сидеть. База нарабатывается собственными усилиями. Для кого-то эти "усилия" будут выражаться в расколупывании уже работающих с этим программ :), для кого-то (что правильней, но много сложней) перекапыванию всевозможных биосов.
     
  14. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Есть еще один "правильный" способ - поиск по инету всех доступных даташитов
    вот, кстати, немного:
    Код (Text):
    1. 1. SID|SRID (FF - undefine)
    2. 2. SRID index
    3. 3. Index Register
    4. 4. Index2 Register
    5. 5. LDN list
    6. 6. Config entry set
    7.  
    8. 'IT8702F'
    9. 8702h      
    10. 21h        
    11. 2Eh        
    12. 4Eh        
    13. 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah
    14. 87h,01h,55h,55h
    15.  
    16. 'IT8712F'
    17. 8712h      
    18. 21h        
    19. 2Eh        
    20. 4Eh        
    21. 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah
    22. 87h,01h,55h,55h
    23.  
    24. 'IT8706R'
    25. 8706h      
    26. 21h        
    27. 2Eh        
    28. 4Eh        
    29. 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah
    30. 87h,06h,55h,55h
    31.  
    32. 'IT8710F'
    33. 8710h      
    34. 21h        
    35. 2Eh        
    36. 4Eh        
    37. 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah
    38. 87h,87h    
    39.  
    40. 'W83977EF'
    41. 52F7h      
    42. 21h        
    43. 3F0h           
    44. 370h           
    45. 01h,00h    
    46. 87h,87h    
    47.  
    48. 'W83627HF'
    49. 5217h      
    50. 21h        
    51. 2Eh        
    52. 4Eh        
    53. 0Ah,00h,01h,02h,03h,05h,06h,07h,08h,09h,0Ah    
    54. 87h,87h    
    55.  
    56. 'W83627HF'
    57. 5213h      
    58. 21h        
    59. 2Eh        
    60. 4Eh        
    61. 0Ah,00h,01h,02h,03h,05h,06h,07h,08h,09h,0Ah    
    62. 87h,87h    
    63.  
    64. 'PC8739x'
    65. 0EA17h     
    66. 27h        
    67. 2Eh        
    68. 4Eh        
    69. 01h,00h    
    70.            
    71.  
    72. 'FDC37M70x',0
    73. 4200h      
    74. 21h        
    75. 3F0h           
    76. 370h           
    77. 01h,00h    
    78. 55h
    Config entry set, кажется, нужно запихивать в индексный регистр. Регистр даных, соответственно, отображается на следующий по номеру порт