Решил вынести в отдельную тему, хотя может можно было кинуть в теоретические вопросы. Ну если что , перекинте...
Облазил форум, многие темы посвящены конкретной плате, а у меня вопрос следующий.
Очень хочется просто прочитать BIOS. Не перезаписать, а просто прочитать. Да, уточнение, чтение на этапе загрузки, то есть осуществляется из кода BIOS платы расширения. Прочитав умные книги
, выяснил, что как минимум у AWARD и AMI BIOS отображается на область памяти (FFFFFFFFh - объем чипа BIOS). То есть возникает резонное предположение о возможности просканировать эту область памяти и соответственно быть отправленным южным мостом в чип BIOS (хотя может он уже в этот момент туда и не отправляет). Однако где-то в этой области возникают непонятки, в смысле, то ли что-то там отображается из внутренних регистров чипа, то ли код распакованного BIOS меняется после каждой загрузки, но в этой области памяти некоторые участки изменяются при перезагрузке, хотя остальные совпадают с образом, скачанным с сайта производителя. Кстати, как отображается память BIOS у других производителей, в том числе IBM? Кто дизассемблировал, подскажите!
В общем, вопрос следующий. Как можно просто прочитать BIOS на этапе работы самого BIOS ( то есть при выполнении BIOS платы расширения), можно ли разрешить чтение напрямую из флеш-биос путем программирования его регистров, можно ли как-то универсализировать эту процедуру, хотя бы в рамках одного производителя (используются может одни и те же регистры для разрешения чтения)??? Или это вообще гиблое дело???
Пожалуйста, высказывайте мнения, Все интересно!!!
BIB
помечтайте. реальный пример - открываем схему (причем референсную!!!) от Интела на 875 и видим сигнал ICH_SYNC. А теперь найдите мне его в даташите на мост. Слабо? Знаете - мне тоже. Зато вот в даташитах на 9-ю линейку чипсетов он есть и вполне документирован... Так что явно, что документация НЕполная.
вообще-то я могу сказать одно - документации КАТАСТРОФИЧЕСКИ не хватает. Чего только стоят MSR. Их ведь намного больше, чем есть в даташитах, которые можно нахаляву скачать с АМД и Интела... даже более того - есть запароленные MSR (для работы с которыми надо сформировать спец. значения в опр. регистрах). И что более печально - не любая NDAшная дока полная... В том смысле, что есть доки для программеров драйверов, есть доки для разрабов плат, а есть доки для разработчиков БИОСов... И чтобы достать сразу полный комплект обычному смертному придется просто вылезти из кожи вон...
совершенно не обязательно. Реф. дизайн и большинство мамок будут утилизировать одну схемы, а бренды типа ASUS скорее всего придумают что-то свое. на то GPIO и GPIO, что регистры "general purpose", т.е. общего назначения - юзай как знаешь....
Аццкий ромбовод {:€
Я пока не волшебник - я только учусь! :-P
Спасибо всем высказавшимся! Особенно Apple_rom и еще раз ему за поддержку Runiflash!!! То, что он делает достойно самого высшего уважения!!! Respect! ( Кстати, Apple_rom, туда в топик я добавил мамку и вопрос)
Root, совершенно с тобой согласен по части того, что доки неполные. Это большая проблема и бороться с ней нужно сообща. Кто что откопал в BIOS, кто в похожей дате, кто в схеме. Типа базы знаний.
Пример - есть даташит на 694X, так вот там нету обозначения регистров 50-51 половины, которые конфигурируют работу с процом! А в дате 693A есть волшебная табличка. А в дате 693 ещё пара пунктов в других регистрах. Очевидно, что в более новом 694 это никуда не ушло, не убралось и явно не "не используется". Просто пудрят мозг.
А уж Интел - вообще красавцы! Попробуй в дате на i900 чипсеты найти тайминги вроде Trfc, Trd и подобные. Не можешь? И я не могу
Зато качаем Mobile (!) Intel 915 (или 945) chipset family и видим там всё что нам нужно. А по простому сравнению доступных и там и там таймингов и их значений можно убедиться в полном отсутствии разницы во всей линейке 915, 925, 945, 955, 975 и мобильных 915 и 945. 965 переделан и уже другого поколения, потому есть различия. Но и на старуху найдётся 965 Mobile
К чему я ? Грустно всё это. Приходится потом и кровью добывать нужные знания. А заодно убеждаться, что решаемые проблемы являются искусственными и зачастую специальными ограничениями для стимуляции покупки дорогих и "правильных, безглючных" плат. Что и с VIA было - выпускать быстрые платы на дешёвом чипсете было можно, но это было невыгодно. И специальным торможениям сделали рефлекс по Павлову - хочешь скорость - плати деньги.
Вместе мы - www.ROM.by!
Господа-товарищи, хотелось бы снова поднять эту тему.
Один специалист утверждает, что Bios должен отображаться на область около 4Гб без изменений.
Вроде как новая флеш-память для хранения BIOS так устроена (по SPI, кажется, и одна из 5ти областей там под BIOS и этот BIOS отображается как раз на область около 4Гб).
В принципе, возможно, это так. Я считывал по несколько мегабайт оттуда и при неизменности параметров BIOS в основном ничего не меняется. За исключением одного НО!!!!
Есть платы, на которых меняются несколько (до 100) байт, причём это какие-то счётчики, так как их значения увеличиваются от загрузки к загрузке. Так же существует некоторая датавременная группа, которая меняется, если даже просто зайти в BIOS и выйти, ничего не сохраняя.
Скажите, как сейчас обстоят дела с образом BIOS около 4Гб? И можно ли мне доказать ему (специалисту), что BIOS там не есть точная копия реального bIOS?
И попутный вопрос - так как реально-то меняется от загрузки к загрузке только ничтожно малая от всего BIOS часть байт, то как же всё-таки там (около 4Гб) настроена область памяти на чтение/запись? Ведь не во флеш-память он постоянно заносит изменения после перезагрузок, иначе он совершит небезопасные действия, да и ресурс у флеш-памяти ограничен...
По этому поводу в утилите FoxConn LiveUpdate есть ini файл - в котором много интересного.
[COMMON]
OpCOdeCount=1
[SouthBridgeID]
0x2410 = ICH
0x2420 = ICH0
0x2440 = ICH2
0x244C = ICH2
0x24C0 = ICH4
0x24CC = ICH4
0x24D0 = ICH5
0x2640 = ICH6
0x2642 = ICH6
0x27B8 = ICH7
0x27B9 = ICH7
0x27BD = ICH7
0x27B0 = ICH7
0x2810 = ICH8
0x2811 = ICH8
0x2812 = ICH8
0x2814 = ICH8
0x2815 = ICH8
0x2910 = ICH9
0x2911 = ICH9
0x2912 = ICH9
0x2914 = ICH9
0x2916 = ICH9
0x2918 = ICH9
0x3A14 = ICH10
0x3A1A = ICH10
[ICH]
BCRegister=0x4e
SupportSPI=N
[ICH0]
BCRregister=0x4e
SupportSPI=N
[ICH2]
BCRregister=0x4e
SupportSPI=N
[ICH4]
BCRregister=0x4e
SupportSPI=N
[ICH5]
BCRregister=0x4e
SupportSPI=N
[ICH6]
BCRregister=0xdc
SupportSPI=N
[ICH7]
;In LPC PCI configuration space
BCRregister=0xdc
RCBARegister=0xf0
GPIOBaseAddressRegister=0x48
GPIOControlRegister=0x4c
;SPIBARAddress=0x3020
GCSRegister=0x3410
SupportSPI=Y
ProgramData=0x02
ReadData=0x03
ReadStatus=0x05
WriteStatus=0x01
WriteDisable=0x04
WriteEnable=0x06
JEDECID=0x9f
[ICH8]
;In LPC PCI configuration space
BCRregister=0xdc
RCBARegister=0xf0
GPIOBaseAddressRegister=0x48
GPIOControlRegister=0x4c
;
SPIBARAddress=0x3020
GCSRegister=0x3410
SupportSPI=Y
ProgramData=0x02
ReadData=0x03
ReadStatus=0x05
WriteStatus=0x01
WriteDisable=0x04
WriteEnable=0x06
EnableWriteStatus=0x50
JEDECID=0x9f
[ICH9]
BCRregister=0xdc
RCBARegister=0xf0
SPIBARAddress=0x3800
GCSRegister=0x3410
SupportSPI=Y
ProgramData=0x02
ReadData=0x03
ReadStatus=0x05
WriteStatus=0x01
WriteDisable=0x04
WriteEnable=0x06
EnableWriteStatus=0x50
JEDECID=0x9f
нарезка оттуда
вот сам ini
rapidshare.com/files/375775076/FoxConn_LiveUpdate_Config.ini.zip
Дрессируем коров
А поконкретнее... Что это мне даёт...
Что-то я не силён... И если не привязываться к FoxConn...
По поводу отображения содержимого флешки на область в конце 4 Гб - это в самом начале, потом по этим адресам может быть доступно все, что угодно. IMHO стоит почитать документацию на те же Intel'овские чипсеты (как наиболее доступную и полную).
Дело в том, что человек этот (спец мой) прочитал кучу этих интеловских документов. И он говорит, что область возле 4 Гб резервируется под флеш память на всё время работы. Другой вопрос, что Bios занимает не всю флеш, а только часть. Другие части могут быть отведены под изменяющиеся вещи. Но BIOS не должен изменяться....
Скажите, а чипсет определяет отображение памяти побайтно или областями. я к тому , что может один байт определён на чтение (отображение байта BIOS), следующий нет, а потом опять байт на чтение...
Откройте ему (специалисту вашему) дамп BIOS и область памяти в верхних адресах каким-нибудь RW Everything или HWDirect - пусть сравнит сам.
WinHex тоже можно вроде.
Или Norton diskeditor под DOS наложите скопированный из верхних адресов оперативки дамп на тот же BIOS в файле - изменения подсветятся..
Дрессируем коров
Отправить комментарий