GMON - утилита стресс тестирования и мониторинга системы

...
  • Ghost приятно общаться с серьёзным человеком, курящим мануалы. Давай покурим вместе. Итак.
    Для однозначности взаимопонимания беру то, что совпадает добуквенно с твоим, это 8705F.
    Теперь акцентирую твоёвнимание именно на том, что
    8.3 Global Configuration Registers
    8.3.1 Configure Control (Index=02h)
    ..........................
    8.3.3 Chip ID Byte 1 (Index=20h, Default=87h)
    This read only register is the Chip ID Byte 1. Bits [7:0]=87h when read.
    8.3.4 Chip ID Byte 2 (Index=21h, Default=05h)

    Не стоит забывать, что данный чипак комплексный и имеет в своем составе, если можно так сказать, целяй ряд контроллеров............., и в том числе ЧАСТИЧКУ ответственную за мониторинг, о котором идет речь и код соответственно!
    Естественно "доступ к телу" каждого из них индивидуального плана! Значит от общего к частному.. ну как каталог корня, подкаталог 1 уровня, в нем 2го и тп.....
    Ведь 8.3.1. говорит об Индексном номере= 02, а уж ВНУТРИ его имеется 8.3.3 Индекс=21h и на этом же уровне вложенности второй Индекс=21h !!!! ВО! Вот где собака зарылася!
    В данном коде(выше), и я бы сказал механизме доступа к МОНИТОРИНГОВОЙ ЧАСТИ, которую имеем по базе 0x290 мы ВПРАВЕ владеть лишь регистрами из таблицы см. Table 9-2. Environment Controller Registers = Лист91 у меня.
    Таким образом послав 20h в 0x295 и прочитав из 0x296 значение, мы имеем по таблице... э-э-э-э....
    VIN0 Voltage Reading Register --- НАПРЯЖЕНИЕ на пине VIN0.
    Согласен? ;)
  • VaStaNi: видимо можеш уже не проверять почту )
    Last edited by Ghost on Wed Dec 13, 2006 11:40 pm, edited 1 time in total.
  • Ghost
    Я разобрался с ITE. Регистры 0х20 и 0х21 относятся к конфигурационными
    и читаются через порты 0x2e/0x2f или 0x4e/0x4f

    Чтобы получить к ним доступ надо перевести чип в "MB PnP Mode"
    для этого записать ключ 0x87015555 в порт 0x2e или 0x870155AA в 0х4E

    для выхода из режима установить в "1" бит 1 в регистра 0х02

    В ДОС этот код дал правильные результаты 0х87 для 0х20 и 0х12 для 0х21

    mov eax, 0x55550187 ;переход в режим
    out 0x2e, al
    shr eax, 8
    out 0x2e, al
    shr eax, 8
    out 0x2e, al
    shr eax, 8
    out 0x2e, al

    mov al, 0x20
    out 0x2e, al
    in al, 0x2f ; al = 0x87

    mov al, 0x21
    out 0x2e, al
    in al, 0x2f ; al = 0x12

    mov al, 2
    out 0x2e, al
    mov ah, al
    in al, 0x2f ; читаем регистр 0x02
    or al, 2 ; выход из режима
    xchg ah, al
    out 0x2e, al ;записываем регистр 0x02
    mov al, ah
    out 0x2f, al

    Читать показания датчиков через порты 0х295-0х296 не совсем
    верно. Базовый адрес регистров "Enviroment control" (EC) по умолчанию 0x290
    тоже хранится в конфигурационном пространстве LDN=4 MSBreg 0x60 LSBreg 0x62

    mov al, 7 LDN index reg
    out 0x2e, al
    mov al, 4 LDN val
    out 0x2f, al
    mov ax, 0x6160
    out ox2e, al
    in al, 0x2f ;MSB
    xchg ah, al
    out 0x2e, al
    in al, 0x2F ;LSB
    mov [EC_base], ax

    адресный регистр EC base+5 данных base+6
  • Serge: спасибо за код и за разяснения, примерно тоже я слал VaStaNi, только там были догатки (про 0x55550187) взятые из какого то кода на delphi. Прикручу на выходных (если есть желание, можеш сам), прейдётся ядро править, а то оно 0x2e, 0x2f, 0x4e, 0x4f не даст. Кстати на этих портах Fintek висит, будет время, прикручу и его.

    P.S. А если чип висит на SMBus, тогда как? Я сам в руках держал двухкамнёвку под AthlonMP с двумя IT8712F, один через ISA(LPC), другой через SMBus.
  • У чипов есть контакт JP3/SOUT1 по сигналу на котором они себя различают. После записи ключа в порт 0х2е/0х4е оба перейдут в режим настройки. Потом надо записать правильное значение в регистр 0х22. Бит 7 определяет какой чип будет настраиваться 0 или 1. После записи чип у которого сигнал на JP3 не совпадает с битом 7 рег. 0х22 выйдет из режима. Тогда можно считать правильные значения из конфигурационных регистров а потом всё повторить для второго чипа.

    Как работать с SMBus не знаю. Надо читать System Management Bus (SMBus) Specification, Version 2.0.
  • Скупо как то вы ребята поясняете, я хоть и догадываюсь, но лучше спрошу ниже. И потом нас ведь МОГУТ читать совсем несведущие ребятки и для них сведения из конференции могут быть на уровне ОТКРЫТИЯ в личном плане понимания чеголибо...
    Serge wrote: Я разобрался с ITE. Регистры 0х20 и 0х21 относятся к конфигурационными
    и читаются через порты 0x2e/0x2f или 0x4e/0x4f
    Конфигурац. чего, кого? PCI CFG? Данного чипа? Данного южника матери?.........
    Данные конкретные адреса портов откуда взялись? Для какого чипсета справедливы они? На ASUS ни есть? На NFORCE имеются? У людей разные "покупки" разных лет....
    Serge wrote: Чтобы получить к ним доступ надо перевести чип в "MB PnP Mode"
    для этого записать ключ 0x87015555 в порт 0x2e или 0x870155AA в 0х4E
    Из чего это следует? Где прочитать можно? Опять же для какого..... справедливо или испытывалось, работает?
    Serge wrote: Читать показания датчиков через порты 0х295-0х296 не совсем
    верно. Базовый адрес регистров "Enviroment control" (EC) по умолчанию 0x290
    тоже хранится в конфигурационном пространстве LDN=4 MSBreg 0x60 LSBreg 0x62
    Если очень сурово подходить к этому то - ДА! Если проще и обобщая, то на сегодня, достаточно определить есть ли такие порты вообще и если есть то работать с ними спокойно. Такие вещи считаю де-факто портами, равно как порт 0x3F8, я не могу считать портом для LPT или мониторинговым или... просто он настолько "устаканился", что все просто знают однозначность - это COM1 для нормальных осей.
    Serge wrote: Как работать с SMBus не знаю. Надо читать System Management Bus (SMBus) Specification, Version 2.0.
    Я давно занимаюсь эпизодически этой темой, наряду с кучей остальных интересов по железу :)
    Могу сказать сразу - чтением этого мануала делу не поможешь. Разве так только просветиться в общих чертах. С точки зрения практики ПОМОГАЕТ ТОЛЬКО КОНКРЕТНЫЙ РЕВЕРСИНГ КОДА из BIOS (или соотв.прог если им доверять) конкретной матери (производителя)
    http://lowlevel.h14.ru/cgi-bin/yabb/YaB ... 1165931685
    Могу по ходу доводки поделиться исходниками в обмен на взаимную помошь в реверсинге и обкатке кодов процедур работы на SMBus, их долизыванию до унифицированного применения на широком кругу матерей. Нужны реальные и другие (не интел) матери, чипсеты, раальность проверки и доводки кода на них и в первую очередь слизывание прошивки с них и её реверсинг силами владельца или мы вместе с ним... Короче SMBus - ужасно проста, но вендорозависима и опасна, т.к. запросто угробить кое что можно, посему видимо и не афишируется, а всякие жлобы еще и деньгу за это хотят то тут то там в виде приложений по мониторингу и пр.... Тут я читывал, что кто то IDA уважал... Не Ghost ли? В принципе можно обсудить детали и круг участников, но нужны сведущие, а не любопытствующие, ибо от последних, в последнее время меня чтото тошнит, т.к. они, как минимум просто тормозят дело.... Лучше по финалу дела пусть.....
  • Ghost
    Посмотрел описание 8712F и 8718F там нет ничего о SMBus. Похоже что они не работают с этой шиной иначе было бы упоминание. Правда не совсем понятно каким образом два чипа могут сидеть на одной LPC шине. Вообще неясно зачем второй SuperIO чип. Если только для мониторинга то это сложно и дороже чем специальным чипом.

    Для выхода из конфигурационного режима читать регистр 0х02 не обязательно так что код упрощается до
    mov al, 0x02
    out 0x2E, al
    out 0x2F, al

    VaStaNi
    Регистры доступные через порты 2E-2F/4E-4F отвечают за настройку чипа.
    Всё подробно описано в
    8.1 Configuring Sequence Description
    8.2 Description of the Configurftion Registers
    8.3 Global Configurftion Registers
    официального руководства.
    http://www.ite.com.tw/product_info/file ... V0.8.2.pdf
    На сайте есть и заготовка с кодом настройки чипа для разработчиков BIOS.
  • Serge, на SMBus ITE`шники не работают Winbond - имеет вариант работы по манам, SMSC чипаки на последних матерях интела (реально пробовал) на этой шине и висит (6d103.pdf)
    Вопрос. Порты 2E-2F/... де-факто??? Или это только для интел справедливо? А что если в южнике он указан в PCICFG данных конкретно для LPC. В манах на ICH есть данные касаемо LPC.... Кто нить знает?
    Где то раньше на машины .... летней давности читал про супер-пупер сервисн-конфиг порты материнки типа 22h-23h. Может это тоже но сегоняшних дней?
    Попробую, наверное, их насщупать на I945GNT где SMSC чипак на SMBus висит, любопытный может быть расклад...
  • VaStaNi
    2E-2F или 4E-4F других вариантов нет. Всё это написано в документации. Там даже блок-схема есть с последовательностью конфигурирования.
  • Чем дальше в лес, тем больше помидоров... ;)
    Итак, задачка! Имеются 2 машины I915 и I945 (ICh6 и ICH7 соответственно), никаких портов 2E,2F не наблюдаются, а очень вероятный их "близнец" вычитывается парами с четким шагом близнецов по содержанию чтения:
    24-25 28-29 2C-2D 30-31 34-35 38-39 3C-3D
    Для тех, кто знаком со схемотехническими принципами дешифраци адресов в цифр.техн. ясен вывод 1:
    --- производитель не стал морочить голову с полной дешифрацией адресов в этом диапазоне и некоторые адресные линии "простил" себе самому и не стал заводить на.... результат лицезреем.
    Вывод 2:
    --- порты 2E-2F - НЕ де-факто! И еще непонятно кому они принадлежат, эти адреса надо достоверно знать, определять, проверять и т.п. (есть предположение, что через эти порты регулируется паряжение питания CPU!)
    Примечание.
    У первой машины IT8712 (на LPC, производитель ITE) у второй EMC6D103 (на SMBus, производитель SMSC).
    Надеюсь кому то это интересно и я говорю не сам с собой :)
  • VaStaNi
    Ещё раз. 2E-2F или 4E-4F. Это написано в документации чёрным по-белому. Порты становятся доступны после записи ключа 0x87015555 для 0x2e или 0x870155AA для 0х4E. Если этого не сделать то контроллер игнорирует все чтения из портов
    in al, 0x2E = 0xFF
  • Ghost
    Есть у них SMBus. Только они здорово замаскировались. В блоке мониторинга упоминается Serial bus и Serial Bus base register. Только найти в карте его не удалось. Есть контакты SIN1,SIN2 и SOUT1,SOUT2. Наверное если прочитать "незанятые" регистры то можно найти те что относятся к SMBus.
  • Serge
    Вот упоминания о IT8712F (кстати на той матери были IT8712F-A, но как я понял это значит первая редакция?)
    http://www.mjmwired.net/kernel/Documentation/hwmon/it87
    This driver also supports IT8712F, which adds SMBus access...
    правда потом появилось : http://lists.lm-sensors.org/pipermail/l ... 18044.html,
    ... available on a small number of motherboard models ...
    видимо я видел редкую модель, хотя на многих двухкамнёвках мониторинг одного камня идёт через LPC а второго через I2C (SMBus).

    Маркировку той матери не знаю, на логике AMD была, вроде на ASUS A7V600 тоже IT8712F на SMBus.

    VaStaNi
    Об этих регистрах говорится и в манах Winbond в разделе PnP.
    По поводу SMBus можно почитать например lm-sensors.org, но как я понял с шиной ты уже разобрался, тебя интересует определение базового адреса, многое можно узнать из ядра linux. За реверс я могу взятся но не скоро, в районе января/февраля (хотя всякое может быть).
  • Привет! Ребята ВЫ ПРАВЫ!!! Беру свои слова обратно. Действительно ДЕТАЛЬНАЯ ПРОВЕРКА + коды биосов разных машин (производителей, года выпуска) говорят о том, что 2E, 2F присутствуют и выковырянный код подтверждает ВСЕ приведенное выше и маны! Биосы "говорят", также о аналогично-хитрых портах (аналогичная парочка индексный+данные) - 0x22, 0x23 пока загадка, но узелок на память :)
    ПОРТЫ 0x2E и 0x2F - можно сказать де-факто порты на матерях, где ITE чипы применены про остальные утверждать не буду.

    Ребята, поверьте, по SMBus я перерыл многое, но саное путевое и достоверное (+ уверенность что оно именно на этой машине должно работать) - код биоса!
    Короче, так, дабы пытливые упрямцы, аналогичные мне, набили себе шишек поменьше... даю сегодня, смышленым и пытливым, "вкусный пирожек" по SMBus и надеюсь меня не забудут, и когда то кто то "угостит" меня своим и ПРИНЦИПАЛЬНО новым по алгоритму работы, регистрам, портам.

    Принцип нахождения РЕАЛЬНО РАБОТАЮЩИХ SMBus процедур и алгоритмов:
    1. Определяем базовый порт SMBus.
    Самый наглядный проги под винду: тестовые, SpeedFan и т.п. Рекомендую SpeedFan, т.к. там на вкладке просканируете эту шину на предмет адресов устройств (ведь шину можно воспринимать, как микро-сеть :) со схемой взаимодействия мастер(хост)-ведомые)
    2. Берем прошивку или сливаем ее оригинал, Потрошим(распаковываем) ее на составляющие файлы (кто неграмотен, как и чем идет на http://www.rom.by)
    В первом куске прошивки (первый упакованный файл) есть код процедур SMBus. Обычно он 128Кб.
    3. В IDA грузим его, незабыв указать сегмент 0xE000! Далее все логично. Поиск HEX = Word БАЗА SMBus, БАЗА+1, БАЗА+2, БАЗА+3, БАЗА+4 (у NFORCE еще БАЗА+20h, БАЗА+40h и еще +1,2,4 относительно них есть)
    4. Причесываем выуженный код и имеем для интелов:

    Code: Select all

                    mov     dx, 500h
    loc_E92F7:
                    in      al, dx
                    out     0EBh, al
                    out     dx, al
                    and     al, 0BFh
                    or      al, al
                    jnz     loc_E92F7
    
                    mov     dx, 504h
                    mov     al, ch
                    or      al, 1
                    out     dx, al
                    mov     al, cl
                    mov     dx, 503h
                    out     dx, al
                    mov     dx, 502h
                    mov     al, 74h ; 't'
                    out     dx, al
                    out     0EBh, al
    
                    xor     cx, cx
                    mov     dx, 500h
    loc_E931C:
                    in      al, dx
                    out     0EBh, al
                    test    al, 4
                    jnz     loc_E932D
                    test    al, 2
                    jz      loc_E932B
                    test    al, 80h
                    jnz     loc_E932D
    loc_E932B:
                    loop    loc_E931C
    loc_E932D:
                    out     dx, al
    
                    mov     dx, 507h
                    in      al, dx
                    ret
    
    
    5. база у этой машины, конечно 0x500, пытливый берет ман на южник интела... находит соотв., раздел вкуривает что такое +2 +3 +4 +7 от базы... разгадывает для себя загадку почему именно 0x74 засылается в.... как готовность оценивается и как правильно формируется СЕТЕВОЙ адрес в CH регистре на входе процедуры(внимание Бит0!)
    6. Начинаются вопросы другого плана ))) http://www.wasm.ru/forum/viewtopic.php?id=17706
    УСПЕХОВ и ПОБЕД!
  • Who is online

    Users browsing this forum: No registered users and 1 guest