Решил вынести в отдельную тему, хотя может можно было кинуть в теоретические вопросы. Ну если что , перекинте...
Облазил форум, многие темы посвящены конкретной плате, а у меня вопрос следующий.
Очень хочется просто прочитать BIOS. Не перезаписать, а просто прочитать. Да, уточнение, чтение на этапе загрузки, то есть осуществляется из кода BIOS платы расширения. Прочитав умные книги
, выяснил, что как минимум у AWARD и AMI BIOS отображается на область памяти (FFFFFFFFh - объем чипа BIOS). То есть возникает резонное предположение о возможности просканировать эту область памяти и соответственно быть отправленным южным мостом в чип BIOS (хотя может он уже в этот момент туда и не отправляет). Однако где-то в этой области возникают непонятки, в смысле, то ли что-то там отображается из внутренних регистров чипа, то ли код распакованного BIOS меняется после каждой загрузки, но в этой области памяти некоторые участки изменяются при перезагрузке, хотя остальные совпадают с образом, скачанным с сайта производителя. Кстати, как отображается память BIOS у других производителей, в том числе IBM? Кто дизассемблировал, подскажите!
В общем, вопрос следующий. Как можно просто прочитать BIOS на этапе работы самого BIOS ( то есть при выполнении BIOS платы расширения), можно ли разрешить чтение напрямую из флеш-биос путем программирования его регистров, можно ли как-то универсализировать эту процедуру, хотя бы в рамках одного производителя (используются может одни и те же регистры для разрешения чтения)??? Или это вообще гиблое дело???
Пожалуйста, высказывайте мнения, Все интересно!!!
<font color="#777777" size="1">BIB Остальной системный BIOS уже не виден, там FF ..... <font size="2"> <font color="#000000">Видит! Проверял! и сравнивал (на глазок середину и конец). А вот где-то (и есть подозрение, что во 2-ом 64-Кб сегменте) значения не прошивочные</font></font></font>
Есть 3 непонятные вещи!!!!
1. Что такое вышеупомянутые хуки??? Это биосовские? Где про них читать? (Или это виндовские хуки.... )
2. Strelets привел исходники BIOS... Я порылся и нашел один раздел здесь на форуме и несколько ссылок ( да неработающих) в инете, скачал архив на 6 Мб и еще пару ОЧЕНЬ старых BIOS... А вообще , как дела с исходниками???
3. И из второго вопроса вытекает следующий... ДОКУМЕНТАЦИЯ РАЗРАБОТЧИКА BIOS... Должна поставляться или предоставляться производителем чипсетов, да? Как её найти... Заходил на сайты - не нашёл.... Или опять я, чёрт, не там искал... Откуда она берется? Помогите, совсем я что-то запутался....
<font size="1">> Есть 3 непонятные вещи!!!!
</font>
У меня к Вам два вопроса.
1. Опишите решаемую задачу. Зачем Вам читать биос? Что Вы собираетесь с ним потом делать?
2. Как связаться с Вашим начальником? :)
Strelets,
Вы почти правы, но немного не в том
Задача миролюбивая, отчасти исследовательская, и саморазвивающая :-)
И всё-таки есть ответы на 3 вопроса???
P.S. Постучался бы в аську, но не пользуюсь ею по ненадобности ( и небезопасности), если желательно через нее, то....
Спасибо за эксперимент, возможно Вы правы и моё утверждение слишком абсолютно, т.к. базируется на опыте работы с прошивкой (а не чтением) в первую очередь.
Так (определённо) было раньше, до P4/Athlon-систем. Сейчас же подобная определённость осталась лишь в даташитах - видимо, с одной стороны, чтобы не расстраивать привыкших, с другой, чтобы не перепечатывать кучи изданных букварей, с третьих, чтобы не объяснять, почему же это не так... ;)
+1 :)
Всё-таки ещё раз посоветую автору глянуть вышеприведенную ссылку и основательно разобраться с имеющимися (и простыми для понимания) исходниками uniflash - в них есть большинство интересующих ответов на прозвучавшие вопросы.
Обычно к каждому чипу прилагается:
Datasheet, Application notes, drivers & applications, bios porting guide, Reference Board Schematics & PCB.
ищется гуглом
Документация доступна, но к сожалению не всех производителей. А уж к какой GPIO ноге припаян write protect, вообще нигде не прочитать :(
Кстати есть еще базовая документация разработчика BIOS, вроде "PnP BIOS specification".
apple_rom:
Я конечно могу не знать всех деталей, но логика подсказывает что reset vector может быть прошит только в некую non-volatile memory внутри процессора, т.к. ножек для аппаратного выбора у него нет. Поделитесь, пожалуйста, как реализуется изменение reset-адреса. (Насколько я знаю, этот адрес задается начальными значениями регистров = FFF0 в EIP и FFFF0000 в shadow-регистре для CS.)
Характерный случай последствий от слишком доверчивого чтения а-ля "Аппаратные средства IBM PC" уважаемого М.Гука. Написанное в начале далёких 1990-ых, до сих пор, почему-то, считается набором не стареющих аксиом. Вкратце ответ до неприятности прост - "также, как и задаётся" - чипсетом.
это можно прочитать из схемы мат-платы :)
И насколько я себе представляю программирование железа в этом ключе, то это можно так-же понять раздизасмив код биоса и имея перед носом даташит на чипсет. (тут я могу заблуждаться, так что критика приветствуется :) )
Так-же можно исходить из того, что разработчики люди ленивые и будут использовать те-же GPIO , что и в других моделях.