Сначало было начал исправлять код, потом покурил маны, вот что они говорят :
Для IT8705F :
8.3.3 Chip ID Byte 1 (Index=20h, Default=87h)
8.3.4 Chip ID Byte 2 (Index=21h, Default=05h)
9.5.3.2.36 Code ID Register (Index=5Bh, Default=12h) {ITE Vendor ID}
Для IT8712F :
8.3.3 Chip ID Byte 1 (Index=20h, Default=87h)
8.3.4 Chip ID Byte 2 (Index=21h, Default=12h)
9.6.2.2.37 Code ID Register (Index=5Bh, Default=12h) {ITE Vendor ID}
Для IT8716F :
8.3.3 Chip ID Byte 1 (Index=20h, Default=87h)
8.3.4 Chip ID Byte 2 (Index=21h, Default=16h)
9.6.2.2.37 Code ID Register (Index=5Bh, Default=12h) {ITE Vendor ID}
как видим 0x5B не о том.
VaStaNi: если сможеш решить проблему Serge (у тебя видимо чип тоже не определяется верно), буду благодарен.
P.S. На svn есть более свежая версия (видимо теперь там исправления будут появлятся чаще, хотя ftp ссылка жива, и по возможности будет обновлятся) но в плане вопроса там нет изменений.
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.
Согласен?
Для однозначности взаимопонимания беру то, что совпадает добуквенно с твоим, это 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
Я разобрался с 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.
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.
Как работать с SMBus не знаю. Надо читать System Management Bus (SMBus) Specification, Version 2.0.
Скупо как то вы ребята поясняете, я хоть и догадываюсь, но лучше спрошу ниже. И потом нас ведь МОГУТ читать совсем несведущие ребятки и для них сведения из конференции могут быть на уровне ОТКРЫТИЯ в личном плане понимания чеголибо...
Данные конкретные адреса портов откуда взялись? Для какого чипсета справедливы они? На ASUS ни есть? На NFORCE имеются? У людей разные "покупки" разных лет....
Могу сказать сразу - чтением этого мануала делу не поможешь. Разве так только просветиться в общих чертах. С точки зрения практики ПОМОГАЕТ ТОЛЬКО КОНКРЕТНЫЙ РЕВЕРСИНГ КОДА из BIOS (или соотв.прог если им доверять) конкретной матери (производителя)
http://lowlevel.h14.ru/cgi-bin/yabb/YaB ... 1165931685
Могу по ходу доводки поделиться исходниками в обмен на взаимную помошь в реверсинге и обкатке кодов процедур работы на SMBus, их долизыванию до унифицированного применения на широком кругу матерей. Нужны реальные и другие (не интел) матери, чипсеты, раальность проверки и доводки кода на них и в первую очередь слизывание прошивки с них и её реверсинг силами владельца или мы вместе с ним... Короче SMBus - ужасно проста, но вендорозависима и опасна, т.к. запросто угробить кое что можно, посему видимо и не афишируется, а всякие жлобы еще и деньгу за это хотят то тут то там в виде приложений по мониторингу и пр.... Тут я читывал, что кто то IDA уважал... Не Ghost ли? В принципе можно обсудить детали и круг участников, но нужны сведущие, а не любопытствующие, ибо от последних, в последнее время меня чтото тошнит, т.к. они, как минимум просто тормозят дело.... Лучше по финалу дела пусть.....
Конфигурац. чего, кого? PCI CFG? Данного чипа? Данного южника матери?.........Serge wrote: Я разобрался с ITE. Регистры 0х20 и 0х21 относятся к конфигурационными
и читаются через порты 0x2e/0x2f или 0x4e/0x4f
Данные конкретные адреса портов откуда взялись? Для какого чипсета справедливы они? На ASUS ни есть? На NFORCE имеются? У людей разные "покупки" разных лет....
Из чего это следует? Где прочитать можно? Опять же для какого..... справедливо или испытывалось, работает?Serge wrote: Чтобы получить к ним доступ надо перевести чип в "MB PnP Mode"
для этого записать ключ 0x87015555 в порт 0x2e или 0x870155AA в 0х4E
Если очень сурово подходить к этому то - ДА! Если проще и обобщая, то на сегодня, достаточно определить есть ли такие порты вообще и если есть то работать с ними спокойно. Такие вещи считаю де-факто портами, равно как порт 0x3F8, я не могу считать портом для LPT или мониторинговым или... просто он настолько "устаканился", что все просто знают однозначность - это COM1 для нормальных осей.Serge wrote: Читать показания датчиков через порты 0х295-0х296 не совсем
верно. Базовый адрес регистров "Enviroment control" (EC) по умолчанию 0x290
тоже хранится в конфигурационном пространстве LDN=4 MSBreg 0x60 LSBreg 0x62
Я давно занимаюсь эпизодически этой темой, наряду с кучей остальных интересов по железу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.
Посмотрел описание 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 висит, любопытный может быть расклад...
Вопрос. Порты 2E-2F/... де-факто??? Или это только для интел справедливо? А что если в южнике он указан в PCICFG данных конкретно для LPC. В манах на ICH есть данные касаемо LPC.... Кто нить знает?
Где то раньше на машины .... летней давности читал про супер-пупер сервисн-конфиг порты материнки типа 22h-23h. Может это тоже но сегоняшних дней?
Попробую, наверное, их насщупать на I945GNT где SMSC чипак на SMBus висит, любопытный может быть расклад...
VaStaNi
2E-2F или 4E-4F других вариантов нет. Всё это написано в документации. Там даже блок-схема есть с последовательностью конфигурирования.
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).
Надеюсь кому то это интересно и я говорю не сам с собой
Итак, задачка! Имеются 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
Ещё раз. 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.
Есть у них 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. За реверс я могу взятся но не скоро, в районе января/февраля (хотя всякое может быть).
Вот упоминания о 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. Причесываем выуженный код и имеем для интелов:
5. база у этой машины, конечно 0x500, пытливый берет ман на южник интела... находит соотв., раздел вкуривает что такое +2 +3 +4 +7 от базы... разгадывает для себя загадку почему именно 0x74 засылается в.... как готовность оценивается и как правильно формируется СЕТЕВОЙ адрес в CH регистре на входе процедуры(внимание Бит0!)
6. Начинаются вопросы другого плана ))) http://www.wasm.ru/forum/viewtopic.php?id=17706
УСПЕХОВ и ПОБЕД!
ПОРТЫ 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
6. Начинаются вопросы другого плана ))) http://www.wasm.ru/forum/viewtopic.php?id=17706
УСПЕХОВ и ПОБЕД!
Who is online
Users browsing this forum: No registered users and 0 guests