Автор: apple_rom , 31 октября 2007
Содержимое данного поля является приватным и не предназначено для показа.

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

Memphis

18 лет 2 месяца назад

Если просканировать старший сегмент (F000) BIOS на строчку $@AWDFLASH, лежащую на границе
параграфа, то сразу за ней будут 12 или 13 адресов функций работы с FLASH
Все функции обязательно лежат в F000-сегменте и завершаются командой Ret Far
Зная эти функции, написал маленькую прожку для превращения "писюхи" в программатор:
благодаря этому удалось прошить РППЗУ M27C2001 от GI, 12v рядом в кроватке от Flash !!!
Теперь копия моей БИОС всегда под рукой и в ПЗУ !!!

CMOSYS (не проверено)

15 лет 11 месяцев назад

ИМХО Велика работа.



ТОлько забыл ключи /iu /op/ew



<font size="3">1. История <font size="4" color="#3300ff">AwardBIOS Flash Utility</font>.</font>


Не слишком сложно предположить, что исторические "экзерсисы" волнуют-интересуют крайне "узкий круг ограниченных лиц". Если Вы себя к таковым относите - тут можно найти все подробности, в том числе лично принять участие в архивебологических раскопках с целью нахождения раритетных подверсий (например, v1.0-1.1, v4.x) awdflash.

Ну, а для всех "нормальных" изложу описание работы с awdflash на примере как-то мною разобранной версии с цифрами 8.64. Нонче уже есть более свежие (например, V8.73) потому чуть позже просто внесу поправки-уточнения.


<font size="3">2. Запускать только под DOS.</font>


Программа старенькая (сколько лет - скажу позже и отдельно ;) ), потому писалась, понятно, "чисто" для DOS. При попытке запустить-таки ее из-под Windows - достаточно корректно матернется, что многозадачные ОС ей строго противопоказаны. Не пробовал запускать ее под линуксами сотоварищи, но есть веские основания, что "пошлет туда же".


Касаемо требований уже к самому DOS-у, то как многократно его пережившая, четко отлавливает наличие "зловредных" для нее всяческих менеджеров виртуальной памяти и пр. (в результате шлет все туда же, куда и любителей "пускатьподвинду"). Однако, опять же, "береженого - Бог бережет", потому простое правило - запускаем из-под "голого DOS-a. Который, правда, в последнее время, стремительно уходит в прошлое, однако в критических ситуациях (к которым обязательно относится любая перешивка любого биоса) по-прежнему остается безальтернативным средством. После, как буду еще корректировать все изложенное, выложу какие-нибудь варианты его раздобыть и установить, ежели под руками не найдется.


<font size="3">3. Описание ключей.</font>


При запуске с ключиком /? выдает следущий, достаточно понятный и логичный набор:

<font size="2" color="">
AWDFLASH v8.64 (12/14) (C)Phoenix Technologies Ltd. 2005 All Rights Reserved

Usage: AWDFLASH [FileName1] [FileName2] [/<sw>[/<sw>...]]
FileName1 : New BIOS Name For Flash Programming
FileName2 : BIOS File For Backing-up the Original BIOS
<Swtches> ?: Show Help Messages
py: Program Flash Memory pn: No Flash Programming
sy: Backup Original BIOS To Disk File sn: No Original BIOS Backup
Sb: Skip BootBlock programming Wb: Always Programming BootBlock
cd: Clear DMI Data After Programming cc: Clear CMOS Data After Programming
cp: Clear PnP(ESCD) Data After Programming
LD: Destroy CMOS Checksum And No System Halt For First Reboot
After Programming Tiny: Occupy lesser memory
QI: Qualify flash part number with source file
E: Return to DOS After Programming R: RESET System After Programming
F: Use Flash Routines in Original BIOS For Flash Programming
cks: Show update Binfile checksum cksXXXX: Compare Binfile CheckSum with XXXX

NVMAC:XXXXXXXXXXXX NVGUID:XXXXXXXXXXXXXX
Support nForce Input MAC,GUID Function,with "/wb" to update MAC and GUID.

Example: AWDFLASH 6A69R000.bin /py/sn/nvmac:xxxxxxxxxxxx/wb

</font>

Командная строка запуска стандартная - имя прошивальщика, далее имя файла прошивки, которую хотим зашить в биос. Если желаем сохнанить копию биоса перед прошивкой - также далее указываем имя файла для этого.


В самом конце идут ключи. Наиболее популярные, предназначенные для того, чтобы в процессе прошивки awdflash "не задавал лишних вопросов":


py - (от ProgrammYes) - Да, точно, абсолютно уверен - прошивать!

pn - (от ProgrammNo) - Нет, прошивать не надо!

sy - (от SaveYes) - Да, сохранить копию перед прошивкой.

sn - (от SaveNo) - Нет, сохранять не надо.

e   - Выйти в DOS после окончания процесса прошивки.


Данные ключики, думаю, вполне понятны даже для тех, кто впервые столкнулся с перешивкой биос, потому в особых комментариях не нуждаются. Например, зная их, уже можно написать себе bat-файлик, где будут указаны нужные ключики. Вообще, полезно выработать привычку использовать в хозяйстве подобные вещи - один раз разобрался, сделал "на свежую голову" командный файл со всеми настройками-ключами, записал его на дискету (флэшку и т.д) да забыл как страшный сон. И когда придет время воспользоваться - не придется снова лезть в гугль и снова что-то читать-вспоминать, что там за "хакерские" ключики и кто что обозначает.

Кстати, последний ключик (/e - Выход в DOS) рекомендую использовать - "на всякий пожарный". Дабы если вдруг в самый последний момент вспомнится, что был зашит "не совсем тот" (чаще - "совсем не тот") - можно было еще что-то предпринять. Хотя по секрету могу сказать, что даже если этот ключ не был введен, а в процессе прошивки выяснилось, что зашито не то и на экране лишь пугающая надпись "Нажмите F1 для перезагрузки" - помните об "хакерской" уловке - нажать клавишу F10. Даже несмотря на ее отсутствие в списке возможных, awdflash (при чем любой версии) резко и послушно вернется в DOS. Где будет возможность еще раз прошить (не-)нужный биос.


Итак, по ходу мы уже можем записать для себя две основные комбинации ключиков. Одна для того, чтобы просто сохранить биос:

   awdflash имя_копии /pn/sy/e


Все просто - НЕ перешивать, ДА - сохранить, и ВЫЙТИ в DOS после сей процедуры.


Такую комбинацию используем ПЕРЕД прошивкой для сохранения копии. Не рекомендую "смешивать" прошивку нового биоса и сохранение старого (в одной операции/запуске). Спешка в данном процессе строго противопоказана, а запустить два бат-файла не такое и утомительное дело. Кстати, о второй комбинации, для прошивки нового биоса, с учетом рассмотренных выше ключей, получим:

   awdflash имя_прошивки /py/sn/e


Также просто - Да - перешивать, НЕ сохранять, и ВЫЙТИ в DOS после сей процедуры.


Предыдущей комбинацией мы уже сохранили биос, потому еще раз это дело совершенно ни к чему. А в случае частой перешивки биоса подобный подход (с разделением операций сохранения-прошивки) тоже крайне удобен - нет смысла каждый раз сохранять биос, достаточно одной первой, самой старой копии, и для прошивки можно будет запускать собственно лишь "прошивочную" комбинацию, помня, что "всякий пожарный" случай мы уже учли в начале опасных мероприятий.


Теперь постепенно будем разбирать все "более хакерские" ключики.

сс - (от СlearCMOS) - Очистить CMOS после прошивки.


Даже далекие от "железных" подробностей (компьютера), как правило, обязательно слышали про CMOS. В простом случае это есть "энергонезависимая память". Т.е. то место, куда перед выключением компьютера заносятся настройки биоса (в том числе выбранные Вами в BIOS-Setup). Известная также большинству "батарейка в компьютере" - как раз и питает эту "энергозависимую память". Выняв которую на некоторе время (от 5-30 секунд по техусловиям до получаса-"на ночь" при навсякислучайном подходе) можно не менее успешно очистить CMOS.

В частности, именно поэтому (сброс сохранненых ранее настроек, которых бывает совсем немало) я данный ключик не рекомендую к использованию. Вероятность того, что новая прошивка не заработает по этому поводу - мизерная, плюс у Вас обязательно будет возможность исправить ситуацию после вынув батарейку. Потому в "рекомендуемую" прошивочную комбинацию я его не включаю.


Следущие популярные и еще "более хакерские" ключики:

сp - (от СlearPnP)  - Очистить область ESCD после прошивки.

сd - (от СlearDMI)  - Очистить область DMI  после прошивки.


Что это за хитрые ESCD(PnP)- и DMI-области, думаю, подробно объяснять смысла нет. Вкратце - в них хранится информация о конфигурации компьютера и по сути это также можно считать "энергонезависимой памятью". Просто размер CMOS (выше рассмотренной "энергонезависимой памяти") исчисляется всего лишь байтами (от 128 в старых до 512 в современных системах), а размер ESCD/DMI исчисляется килобайтами.

Однако в отличие от ключика /сс (очистки CMOS), данные два ключа настоятельно рекомендуются к использованию, т.к. по статистике незапуск системы с некорректными записями в ESCD/DMI крайне вероятен. При чем даже строго "правильный" биос (для текущей матплаты), просто более новой версии - запросто может посчитать "некорретными" записи, сделанные его предшественником (от биоса предыдущей версии). Так что с учетом этих ключиков подправляем нашу комбинацию для прошивки:

   awdflash имя_прошивки /cd/cp/py/sn/e


Для подавляющего большинства, кому нужно "просто прошить" вышеописанных ключей хватит и дальше им можно не читать. Даже я бы сказал - нужно (не читать). Ибо совсем не разбираясь в обсуждаемой проблеме - можно лишь испортить, пытаясь применить не до конца понятные способы работы с прошивкой биос. Потому с оными прощаюсь, удачных Вам прошивок! ;)




Итак, если Вы все еще читаете, значит, либо думаете, что Вас можно отнести к хакерам, либо так оно и есть. Ладно, главное - я предупредил.

Самый популярный "хакерский" ключик:

f - (от Force)  - Шить!


В большинстве описаний данный ключ переводят как:




  • /F - Программировать средствами системного BIOS. Большинство современных BIOS содержат процедуры записи FlashROM. Используя ключ /F, программа AwardFlash программирует FlashROM алгоритмами, которые находятся в текущей версии BIOS. Если материнская плата выполнена с такими конструктивными особенностями, что использование алгоритмов Award Flash Writer не приводит к успешному результату, следует воспользоваться ключом /F.




В 99.999% случаев ни читатели, ни те, кто перепечатал это описание у других, ни даже авторы подобных строк - даже близко не понимают смысла написанного. Не пытаясь вдаваться в дискуссию по поводу "так ведь же написано - F: Use Flash Routines in Original BIOS For Flash Programming", просто отвечу - "вам шашечки или ехать?"

Так вот, для нас главное, что данный ключик очень важный и при установке влияет на принципиальные вещи:




  • Не проводятся проверки на совпадение BIOS ID прошиваемого файла и текущей прошивки




  • Не делаются проверки на совпадение BIOS_Lock фичи (для относительно новых систем)




  • Да и, вообще, не проверяется - Award-овский ли это биос.




Что обычно и нужно достаточно разбирающимся пользователям. Ведь тот же пропатченый биос awdflash с "обычными" ключиками запросто может отказаться шить, ругаясь на несоответствие PartNumber и т.п. Мало того, в некоторых случаях даже новые версии (биосов) имеют подобные отличия, что вызывает крайнее недоумение пользователей, когда в комплекте с прошивкой идет awdflash, который при этом яростно отбивается от попыток прошить новую версию биоса (даже если она действительно "та"). Так вот, чтобы реально пользоваться awdflash как прошивальщиком нужно две вещи:

- четко понимать, что Вы делаете.

- использовать ключик /f


Итого, на данный момент получаем следующую комбинацию ключиков для прошивки:

   awdflash имя_прошивки /cd/cp/py/sn/e/f


Именно такую комбинацию я рекомендую в статье (по перешивке). Ее и нужно рассматривать как основную и решающую 99% проблем.




Далее разберем "еще более хакерские" ключики. Хотя правильней их назвать для "тонкой настройки", почему применимость их в реальных ситуациях крайне маловероятна. Почему лучше рассматривать оные как набор для "энтузиастов" (которые при этом хорошо понимают "для чего, собственно").


<font size="2" color="">Операции с бутблоком.</font>


Sb - (от Skip BootBlock programming) - Шить без бутблока.

Wb - (от Write BootBlock) - Шить c бутблоком.


В бутблоке, как известно, находится "игла кощея". Повреждение которого приводит к умиранию компьютера по причине, что после включения именно бутблок получает управление. Потому производители биосов стараются никогда не менять эту часть прошивки (как правило, это последние 16-32кБ биоса, которые в памяти размещаются "в самом верху", в том числе где и находится "стартовый" адрес FFFF:FFF0). (Не менять, конечно же, для одной версии конкретной платы.)

В бутблоке кроме главного загрузчика компьютера располагается также и аварийная программа восстановления. В общем, важность бутблока делает крайне принципиальным вопрос его надежности, для чего и нужен, собственно, этот ключик - шить все, а бутблок не трогать. В результате, если что-то пойдет не так - останется главная часть, которая в аварийном порядке позволит спасти ситуацию (или хотя бы попытаться это сделать).

Алгоритм использования ключа следующий. Если параноидально боимся за бутблок и нужно во что бы ни стало "выжить" - добавляйте к ранееизученной комбинации перешивки еще и ключик /sb.

Если продолжаете себя относить к "продвинутым" - смело добавляйте в набор /wb. (Что я и рекомендую делать. ;) )

Итого, комбинаций наших ключиков становится все больше, потому сейчас и дальше буду выделять лишь именно самый "крутой" наборчик. С бутблоком это:

   awdflash имя_прошивки /wb/cd/cp/py/sn/e

Если ключи /sb и /wb не были указаны, то прошивальщик действует "по-простому" - если бутблок файла прошивки и бутблок в (текущем) биосе одинаковые - принудительно используется "внутренний" /sb. А из-за того, что подавляющее большинство биосов (одной и той же модели платы) имеют абсолютно одинаковые бутблоки - обычно это и выливается в сплошной "Sb по умолчанию".



"Декоративные операции".


R - (от RESET after programming) - Перегрузиться после прошивки.

После прошивки - сразу же перегрузиться. Рекомендуется использовать лишь тем, у кого прошивка биосов - "на потоке" (работники сервисных центров, например). Остальным - лучше "не спешить".


ns - (от No Show messages) - Не показывать сообщения.


Не мусолить глаза и делать свое дело "тихо-мирно". Аналогично предыдущей - рекомендуется больше для работников сервисных центров, когда, например, при клиенте приходится заниматься подобным мероприятием (обычно - в авральном порядке ;) ). И чтобы не последовало лишних вопросов на тему "а что это вы такое злобное делаете с моей бесценной платой" - поможет сэкономить всем присутствующим немного нервов.


LD - (от Low Destroy) - Загрузиться после перезагрузки с "заводскими" значениями СMOS и при этом без остановки по F1.

Ключик с первого взгляда похож на /сс (ClearCMOS). И смысл, в принципе, аналогичен - "поломать" значения в CMOS, чтобы свежепрошитый биос был вынужден загрузить значения по умолчанию и не зависнуть, если в новой версии изменится назначение каких-то ячеек CMOS-памяти.

Однако в реальности он является "комплиментарным" (к /сс) - или чистим весь CMOS или лишь нарушаем ему CRC. В случае чистки (/сс) - забиваются FF-ками все ячейки с 10h по 7Fh. В случае же /LD - изменяются лишь ячейки 10h (записывается DDh), 11h (записывается CCh) и 12h (записывается BBh), что и приводет к нарушению CRC. Кроме того, второй бит ячейки 11h сбрасывается в 0, а он отвечает за то, оставливаться ли, если в процессе POST были ошибки (в том числе полученная неправильная CRC) - предлагая либо нажать DEL и войти в BIOS Setup либо нажать F1 для дальнейшей загрузки с значениями по умолчанию.

Как видно, использование данного ключика - строго "по вкусу".


Tiny - Использовать минимум оперативной памяти.

По умолчанию awdflash использует 128kB для основного буфера (равен полному размеру распакованного original.tmp, хотя это буфер "общего" назначения) и активно работает с расширенной памятью (в линейном режиме). При указании флажка /Tiny - ограничивается лишь 4кБ-ным буфером и все операции проходят только в "нижней" памяти (640кБ). Кроме того многие функции изменяются в сторону ограничения проверок, вывода на экран и т.п.

В общем, этот во многом "отладочно-артефактный" ключик сложно назвать востребованным и его применение можно посоветовать лишь для "совсем критических" ситуаций - когда какие-то проблемы с памятью и у Вас нет никаких других вариантов.

Замечание: выбор этого ключика приводит к принудительному установлению и ключика /f ("внутри" awdflash).




m256 - (от Memory buffer 256kB) - Использовать 256кБ-ный основной буфер.

В противовес /Tiny - этот задает 256кБ для основного буфера не "запрещая" пользоваться расширенной памятью и вносить какие-то ограничения. Однако и особых "улучшений" не дает, а при использовании /f практически игнорируется. Потому его использование аналогично случаю с /Tiny - в основном это чисто "отладочный" ключик и им можно больше лишь "баловаться", чем реально использовать.


ncksm - (от No count ChecKSuM) - Не проверять контрольную сумму.


По умолчанию проходит достаточно логичная операция проверки контрольной суммы (прошиваемого файла). Если по каким-то непонятным причинам нужно зашить файл с плохой CRC и при этом политические предубеждения не позволяет использовать ключик /f (с которым, как говорил - минимум проверок, в том числе - CRC не проверяется), то это как раз тот "золотой ключик".

Итого, закончив словоблудие, /ncksm - достаточно "декоративный" ключ, может понадобиться лишь хитрым писателям хитрых бат-файлов в хитрых сервисных центрах.


cks - (от Show ChecKSuM) - Вычислить и отобразить CRC прошивки.


Хотите узнать CRC биоса (файла прошивки)? Тогда это как раз то, что Вам нужно. Длинный список "полезностей" этого ключа на этом и заканчивается.


nobeep - (от No Beep) - Не пищать!


Работаете ночью, проживая в квартире с тещей и маленькими детьми с неотключаемым динамиком в корпусе компьютера? Не расстраивайтесь, Вы не одиноки, в Award Software тоже есть такие (как минимум - были), потому они позаботились и добавили этот чудесный ключик!


QI - (от Qualify ID) - Проверить BIOS ID прошивки и биоса.


Если нужно строго "не промахнуться" и прошить именно "тот" биос - можно использовать этот ключик, который сверяет BIOS ID файла прошивки с текущим в биосе и откажется прошивать при несовпадении.

Однако на практике не раз возникают случаи, когда даже "совершенно официальная" новая версия "почему-то" не проходит успешно подобную проверку, в результате чего полностью "доверять" данному ключу нельзя. Кроме того, как и многие другие ключи, при установке /f - он игнорируется. Потому рекомендовать его можно больше лишь для написания собственных бат-файлов, где будет возможность задать "строгую проверку".


count - (от Сount of Starts) - Считать количество запусков.


Истинные маньяки батфайлов и просто те, кто любит все считать - могут быть довольны. Специально для них есть возможность узнать, сколько же раз был запущен awdflash. При установке данного ключа в текущем каталоге ведется учет количества запусков в файле 'awdflash.txt' (который автоматически создается при первом старте), куда и записывается их число, увеличиваясь на единицу при каждом новом старте (с ключиком /count в строке запуска).


ct:X - (от Сount of Trying) - Количество попыток записи во флэш.


Весьма полезный местами ключик - возможность задать количество попыток записи в микросхему биоса. Формат простой, после /ct: задаем Х-количество попыток. В результате, если в процессе записи произошла ошибка, awdflash еще Х раз повторяет процедуру прошивки. Очень хороший вариант для сбойных/потенциально сбойных микросхем, когда нет возможности найти замену - рекомендую к использованию.


NVMAC:XXXXXXXXXXXX - (от Set NVidia MAC-address) - Задать MAC-адрес (интегрированной в чипсет) сетевой карты (только для плат на nVidia).


 


NVGUID:XXXXXXXXXXXXXX - (от Set NVidia GUID) - Задать GUID адрес FireWire (только для плат на nVidia-чипсетах).


Два ключика специально для обладателей материнских плат на чипсетах от nVidia. Прописывая значения в ХХ..Х можно задать/изменить MAC/GUID-адреса для встроенных (в чипсет) Firewire/LAN. Если эти ключи не указаны - остаются текущие.

Замечание: MAC/GUID обычно располагаются в бутблоке (точно узнать можно, глянув базовые адреса оных, которые располагаются за 32/28 байтов до конца прошивки), потому при желании их задать/изменить нужно шить с бутблоком.


device:XXXX - (от Force xxxx-device FlashType) - Принудительно шить как хххх-тип флэшки.


Ключ, позволяющий принудительно задать тип флэшки (хххх = Flash ID). Несмотря на кажущуюся "крутость" данного ключа, вариантов его применения не слишком много. Т.к. если имеются проблемы с детектом FlashID стандартным способом, то с бОльшей вероятностью можно предположить проблемы в системе нежели просто проблемы самой микросхемы, которая остается рабочей, "не признаваясь", кто она такая и как ее зовут.

Т.е. данный ключ имеет право на использование - когда все работает и нужно прошить исправную микросхему, которая по каким-то при причинам не выдает свой FlashID (почему ее и не может продетектировать прошивальщик и без чего после, соответственно, не может перешить). Однако в подавляющем большинстве случаев "недетекта" виновата не микросхема и принудительная попытка в таких случаях как правило приводит к печальным результатам. Потому для использования данного, иногда действительно, крайне полезного ключа - нужно очень четко понимать "кто виноват".

<font size="-2" color="">Чуть позже список поддерживаемых FLASH ID выложу отдельной страничкой.

</font>


nab - (от Not AwardBIOS) - Не AwardBIOS.


Ключик, четко дающий понять прошивальщику - работаем не с AwardBIOS. В результате, понятно, пропускаются всяческие проверки, характерные только для AwardBIOS-файлов.

Практической ценности данный ключик в свете намного более "правильного" /f - не представляет. Потому сфера применения - хитрые бат-файлы для энтузиастов-любителей.


unm - (от Use Not Match size images for flash) - Не учитывать несовпадения объемов биоса и прошивки.


Данный ключ заставляет прошивальщик не учитывать факт несовпадения размера файла прошивки и прошиваемого биоса. Может оказаться крайне полезным в случаях, когда под рукой окажется микросхема большей мегабитности (объема), чем "родная". Потому рекомендуется помнить и применять в таких (например, нужно прошить 2Мбит-ную, а есть только 4Мбит-ные аналоги) ситуациях.


sdp - (от Show Default Parameter) - Вывести значение по умолчанию.


 


smi - (от Use SMI subroutiness for flash) - Прошивать с использованием SMI-процедур.


 


nbl - (от No check BIOS Lock) - Не проверять BIOS Lock.


 


hide - (от Use Hide option for ARF35LV020) - Использовать hide-опцию для прошивки ARF35LV020.


 


bb - (от BIOS + BIOS ) - Поддержка дуал-биосных систем.


При использовании этого ключика - автоматически "включается" и /f.


ssd - (от Solid State Disk ) - Поддержка твердотельных дисков.


 


swt - .


 


obu - .




новые...


 


mac1:XXXXXXXXXXXX - (от Set MAC-address) - Задать MAC-адрес (интегрированной в чипсет) сетевой карты.


 


guid1:XXXXXXXXXXXXXX - (от Set GUID) - Задать GUID адрес FireWire .


vga - .


 


prot - .


 


ch - .


 


h - .


 


custid - .




Севко Роман aka apple_rom.

Продолжение и изменения следуют...