Modbin — это утилита, предназначенная для настройки и модификации BIOS на материнских платах с чипсетами aWard. С помощью этой программы пользователи могут изменять различные параметры BIOS, такие как настройки производительности, управление питанием и другие функции, что позволяет более гибко настраивать систему под свои нужды.
Использование Modbin требует некоторой осторожности, так как неправильные изменения в BIOS могут привести к неработоспособности системы. Тем не менее, для опытных пользователей эта утилита открывает возможности для оптимизации и увеличения производительности компьютера.
Редактируем BIOS (Award Modular v.4.51)
Многие люди воспринимают BIOS (здесь речь идет именно о программе) как нечто таинственное и недоступное, понятное лишь узкому кругу специалистов, что не позволяет вносить в него собственные изменения. Однако на самом деле всё далеко не так сложно, я бы даже сказал – вполне доступно, нужно лишь четко понимать свои действия. Тогда вы сможете насладиться уникальным дизайном вашего BIOS и развеселиться, увидев при загрузке надпись «Pentium 12 — 33.33GHz». Или, если смотреть серьезно, расширить функциональность вашей материнской платы – например, добавить поддержку «больших жестких дисков» или новых, не знакомых вашей старой системе устройств (если, конечно, вы обладаете навыками программирования).
Давайте разберемся. Чтобы избежать ошибок, необходимо знать две важные вещи: как устроен BIOS и что необходимо делать и с помощью каких инструментов.
Во-первых, рассмотрим – «чем» – используемые инструменты:
CBROM (например, версия 2.15 — http://yusoft.kulichki.com/russian/doc/biosedit/award/cbrom_2_15.rar) — это инструмент для просмотра и распаковки различных модулей BIOS. (Официальная утилита от компании Award).
В начале кратко, но достаточно точно рассмотрим основные части биоса. Он состоит из двух главных частей:
1. Загрузочный блок.
В его функцию входят самые первые шаги по инициализации регистров чипсета и распаковка главной части в память для последующего исполнения. При несовпадении подсчитанной контрольной суммы биоса он же (bootblock) запускает программу аварийного восстановления биоса (с дисковода).
2. Основная часть.
Ключевой исполняемый код. Он состоит из нескольких «модулей» и хранится в сжатом виде в архиве LHA с незначительно изменёнными заголовками (это не критично для нашего обсуждения). Обычно используются следующие наименования для элементов этого «архива» (подробности можно изучить с помощью утилиты cbrom):
— original.tmp – ключевая часть, всегда размером 128k, именно она представляет интерес. В ней осуществляется вся инициализация компьютера, а также содержится подпрограмма BIOS Setup.
— awardext.rom – «дополнение» ключевой части, включая подпрограмму вывода конфигурации системы — таблицу, отображающуюся непосредственно перед «Starting Windows (DOS, linux и т.д.) …»
— awardepa.bin – «картинка» Energy Star
Другие встречающиеся элементы:
— cpucode.bin – это таблица микрокодов для процессоров Intel (PPro, P2/P3/P4, Celeron)
— acpitbl.bin – подпрограмма поддержки ACPI
Иногда встречаются различные VGA.rom
(при интегрированном видео), logo.bin и др., что есть либо не принципиально, либо банально-понятно. Названия могут меняться производителем, но по смыслу-размеру-названию всегда можно догадаться.
Теперь очевидно, что «просто» редактировать BIOS невозможно, поскольку это архивный файл. Таким образом, чтобы внести изменения, сначала необходимо извлечь нужный фрагмент, внести правки, а затем снова упаковать его. Как уже упоминалось, ключевой компонент – это original.tmp. Именно его мы и будем редактировать.
Рецепт 1 (описание найдено в интернете).
Берём modbin, открываем в нём нужный файл биоса (прошивки, которую будем править). modbin создаёт два временных файла – bios.rom и original.tmp. bios.rom
– это всего лишь дубликат файла, тогда как original.tmp представляет собой распакованный наш основной модуль (как уже упоминалось). То есть, процесс распаковки очень прост.
Если мы выберем в modbin верхний пункт «Update File», то «временный» файл original.tmp запаковывается назад в файл биоса. Напрашивается простое решение: если это сделать (открыть файл биоса в modbin) из-под винды, а потом просто переключиться по Alt-Tab в любой другой файлменеджер (VC, Explorer, Far и т.п.) – то у нас появится возможность внести любые изменения в original.tmp. Сделав, что нужно, переключаемся назад в modbin и тискаем “update”. modbin берёт исправленный нами original.tmp и сам запаковывает его в биос.
Мы радуемся! (В особенности, если после перешивки исправленная версия начнёт работать 🙂 )
Тем не менее, указанный метод имеет один значительный недостаток – он ограничивается возможностью иборьбы только первого сегмента, то есть можно модифицировать лишь первую часть объема в 64k – от 00000 до 0FFFFh. Проблема в том, что в диапазоне от 10000 до 1FFFFh находятся изменяемые регистры, которые модифицируются модбином, и в результате изменения в этом диапазоне игнорируются, так как второй сегмент заменяется «своими» значениями. Этот недостаток не присутствует во втором методе. Более того, в отличие от первого, в данном способе все операции выполняются под управлением «голого» ДОС, и существует возможность распаковать и изменить любой «модуль».
Придётся чуть более подробно поговорить о структуре биос. Как было сказано выше, биос представляет собой архив. Но правильнее и точнее – это последовательность заархивированных с помощью LHA
файлы с bootblock в заключительной части. Этот bootblock, естественно, не находится в архиве, поскольку именно он отвечает за распаковку всех этих «модулей» в оперативную память. При использовании в отношении определённых адресов структура выглядит примерно следующим образом:
Таблица 1. Структура и адреса для 1Mbit-ного (128kB) биоса.
* — адреса могут варьироваться, так как существуют прошивки с различными размерами бутблоков.
Теперь перейдем к описанию заголовка LHA-архива. Мы не будем углубляться в детали, а просто выделим моменты, которые помогут четко установить его начало (поскольку все «модули» располагаются друг за другом «без промежутков»). Зная адрес начала каждого модуля, мы сможем определить, соответственно, и его окончание. Начало любого файла, упакованного с использованием LHA, выглядит приблизительно так: "%·-lh5. ".
Главный и постоянный отличительный признак здесь – “lh5”, эти три символа присутствует всегда. Три символа левей “lh5” – и есть начало. Т.е. просто введя несколько раз подряд поиск “lh5” мы запросто вычислим вышеуказанные xxxxx+1 (отнимая тройку от адреса найденного “lh5”), yyyyy, zzzzz… Разберём на конкретном примере — прошивка для платы Zida 5SVA v.1.4:
00000000: 25 E6 2D 6C-68 35 2D B3-4D 01 00 00-00 02 00 00 %ц-lh5-¦MO O
00000010: 00 00 50 20-01 0C 6F 72-69 67 69 6E-61 6C 2E 74 P O+original.t
00000020: 6D 70 07 08-20 00 00 2D-08 8E 1E FD-AC 49 4B DA mp•• -•О^¤мIK-
Ясно, что это начало заархивированного файла original.tmp – 00000. Продолжаем поиски следующего “lh5”:
Следующее найденное “lh5”:
00014DD0: 39 0B F8 01-C1 E8 07 61-FA 50 00B9-25 73 2D 6C 9>°O+ш•a·P ¦%s-l
00014DF0: 01 0C 41 57-41 52 44 45-50 41 2E 42-49 4E 29 49 O+AWARDEPA.BIN)I
Как можно заметить, далее следует файл заархивированного изображения EnergyStar – AWARDEPA.BIN. Его начало находится по адресу 14DDCh. Таким образом, файл заархивированного original.tmp располагается с 0 по 14DDAh. Байт 14DDBh (CRC) в данный момент игнорируем, поскольку модуль modbin самостоятельно пересчитает и установит его позже.
Далее обнаружен следующий "lh5":
00015070: 0F 68 CF 55-8F 4F 88 8C-9B 96 B5 80-0025 B3 2D 0h¦UПOИМЫЦ¦А %¦-
00015080: 6C 68 35 2D-E1 1D 00 00-98 2B 00 00-00 00 00 41 lh5-с- Ш+ A
00015090: 20 01 0C 61-77 61 72 64-65 78 74 2E-72 6F 6D 51 O+awardext.romQ
Обнаружено по адресу 1507Dh начало awardext.rom. Таким образом, AWARDEPA.BIN – 0-14DDCh. Между прочим, как уже заметно, финальный байт LHA-архива всегда равен “00”.
Самое последнее найденное “lh5”:
0001E860: 8E D8 8E C0-66 BE 00 00-0E 0067 66-81 7E 02 2D О+ОLf- d gfБ~O-
0001E870: 6C 68 35 74-07 66 81 CE-00 00 F0 FF-66 BF 00 00 lh5t•fБ+ Ё f¬
0001E880: 01 00 66 B9-00 80 00 00-67 F3 66 A5-0F 20 C0 24 O f¦ А gєfе0 L$
Последнее обнаруженное “lh5” игнорируем, так как уже по адресам видно, что это часть бутблока. Для того чтобы определить конец awardext.rom, просто прокручиваем прошивку после предпоследнего “lh5” до начала пустой зоны (заполненной “00” или “FF”).
00016E70: 11 85 2A F7-D0 82 2D 90-76 0A E6 27-39 FB FC 17 Информация о разделе
BIOS: полный контроль или как разблокировать скрытые функции (документация)
Сегодня каждый рядовой пользователь имеет возможность регулярно обновлять bios, и этим, пожалуй, никого не удивишь. А вот то, что bios можно модифицировать, включая в его установках скрытые дополнительные параметры, — об этом знают лишь немногие опытные пользователи. Эта статья адресована, прежде всего, тем, кто занимается оптимизацией и постоянно ищет пути для повышения производительности своего "железного друга ", кто не боится рисковать и ставит на своем компьютере смелые эксперименты.
Откуда исходит происхождение BIOS (базовой системы ввода/вывода)? Программный код BIOS создается в исследовательских лабораториях. Наиболее известные разработчики включают компании Award и AMI. После этого каждый производитель материнских плат настраивает BIOS под свою модель, при этом по своему усмотрению может отключать (блокировать) определенные функции.
Причем заблокированными могут оказаться многие функции, влияющие на "тонкую" настройку bios, и от которых, в свою очередь, зависит производительность компьютера. Для чего же производители материнских плат блокируют некоторые функции? Прежде всего, это делается в целях упрощения процедуры настройки setup bios.
Деактивируют также функции, которые отсутствуют в конкретной модели материнской платы, но могут быть активированы в будущих версиях. С помощью специализированного программного обеспечения (утилит) можно активировать почти все деактивированные функции и параметры в BIOS. После выполнения модификации результаты следует сохранить в отдельный файл, после чего необходимо обновить BIOS.
Когда вы загрузите setup BIOS, на экране монитора появятся новые дополнительные варианты настройки. Каждому производителю соответствует своя утилита. Пользователям award BIOS потребуется утилита modbin, а тем, кто использует ami BIOS, нужно загрузить программу amibcp. Примечательно, что утилита amibcp создана разработчиками компании ami.
А теперь перейдем к самому главному — к практическим занятиям. Прежде всего, следует подготовить необходимое программное обеспечение. Итак, для модификации потребуются утилита для обновления ("прошивальщик"), файл с действующей версией bios и утилита для модификации.
Программу для обновления BIOS можно загрузить с официального сайта производителя материнской платы или найти на прилагаемом к ней компакт-диске. Далее следует переместить ее на жесткий диск вашего компьютера. Используя эту программу, вы сможете получить файл с актуальной версией BIOS.
Утилиты для модификации bios можно скачать из Интернета:
Рекомендуется хранить файл с bios на жестком диске в одной папке с утилитой для его изменения. Перед проведением модификации обязательно создайте резервную копию файла bios. Теперь, когда всё готово, можно приступать к запуску утилиты. В качестве примера рассмотрим ситуацию с установленным ami bios на компьютере.
Что касается bios от award, то процесс модификации будет аналогичным и поэтому не будет рассмотрен в данной статье. Утилита amibcp представляет собой программу для dos, которая легко запускается под windows без необходимости перезагрузки в режим эмуляции ms-dos. Размер amibcp (файл amibcp75.exe) в распакованном состоянии составляет 542 Кбайт. После запуска утилиты amibcp нужно ввести с клавиатуры название файла, содержащего bios, например, 7vr_f4.bin.
Далее, находясь в главном меню программы, ищем раздел "configure setup data" и просматриваем по порядку все подразделы. Особенно интересны для нас будут подразделы "chipset setup" и "bios features setup". Сама модификация заключается в активации заблокированных опций. В каждом подразделе присутствуют столбцы с заголовками "option name", "active", "rights", "optimal" и "failsafe".
Заблокированные параметры выделены, и в колонке "active" для них стоит значение "no". С помощью клавиш page up и page down можно активировать ту или иную заблокированную настройку. Бывают ситуации, когда в столбце под заголовком "option name" названия опций отсутствуют полностью. В этом случае придется включать все опции по очереди "вслепую".
Закончив изменения, выходят в главное меню программы amibcp и, нажимая на клавишу f10, сохраняют модифицированный bios в файле. После сохранения модифицированного файла применяют "прошивальщик" — утилиту для обновления bios. Ряд производителей материнских плат выпускает свои фирменные программы для обновления bios непосредственно в среде windows.
Среди них можно выделить утилиты от компаний Gigabyte, Asus, Intel и других. Прежде чем приступить к прошивке, важно убедиться, что в настройках BIOS разрешено обновление: в разделе настройки BIOS параметр защиты от прошивки (bios flash protection) должен быть установлен в положение disabled или auto. По завершении "прошивания" необходимо перезагрузить компьютер и войти в настройки BIOS.
В моей практике модификации встречались случаи, когда в BIOS были заблокированы параметры, позволяющие увеличить производительность системы. В частности, это касалось возможности изменения напряжения на шине AGP в диапазоне от 1,5 до 1,8 В с шагом 0,1 В, и на модулях памяти DDR в пределах от 2,5 до 2,8 В с таким же шагом, а также увеличения напряжения на ядре процессора на 5, 7,5 или 10%. Бывали ситуации, когда в BIOS были доступны только ограниченные режимы, такие как S.M.A.R.T. для жестких дисков и режим Bypass для оптимизации работы процессора.
Интересной оказалась и заблокированная опция в подразделе hardware monitor — slow down cpu duty cycle. При переходе системы в режим doze тактовая частота cpu уменьшается. С помощью этой опции можно установить другое значение тактовой частоты cpu в процентах от предыдущего. В заключение хочу напомнить: не стоит из-за полного контроля над bios терять голову. И поэтому к модификации и изменению параметров следует подходить с некоторой долей осторожности и с пониманием того, что вы делаете и на что идете.
Редактируем BIOS
Многие люди воспринимают BIOS (в данном контексте речь идет о программе) как нечто мистическое и недоступное, известное лишь ограниченному числу разработчиков, что совершенно исключает возможность его самостоятельного редактирования. Тем не менее, на самом деле всё не столь сложно, я бы даже отметил, что достаточно легко, если точно понимать, что вы делаете. В таком случае вы сможете насладиться уникальным изображением в BIOS и порадоваться, увидев при загрузке надпись «Pentium 12 — 33.33GHz». А если подойти к вопросу серьёзно, можно добавить новые функции вашей материнской плате – от поддержки «больших жёстких дисков» до интеграции каких-то современных, незнакомых вашей старой системе устройств (при условии, что вы обладаете навыками программирования).
Попробуем разобраться. Чтоб не опростоволоситься, нужно чётко знать две вещи: как устроен биос, что делать и чем.
В первую очередь – «какими» средствами:
CBROM (например, версия 2.15 — http://yusoft.kulichki.com/russian/doc/biosedit/award/cbrom_2_15.rar) – это программа для исследования и извлечения различных BIOS-модулей. (Официальная утилита от компании Award).
Modbin (например, v.4.50.80C — http://yusoft.kulichki.com/russian/doc/biosedit/award/modbin_4_50_80c.rar) — программа, позволяющая редактировать некоторые регистры чипсета, а так же изменять надписи/опции в BIOS Setup. (Стандартная утилита от самого Award-а).
LHA — это архиватор, разработанный в 1988 году Харюасу Ёсизаки, алгоритм которого был использован при создании упаковки модулей Award BIOS. (http://yusoft.kulichki.com/russian/doc/biosedit/award/lha.rar).
В начале кратко, но достаточно точно рассмотрим основные части биоса. Он состоит из двух главных частей:
1. BootBlock.
Данная компонента осуществляет начальную настройку регистров чипсета и загружает основную часть в память для последующего выполнения. В случае обнаружения несоответствия контрольной суммы BIOS, именно он инициирует процесс восстановления BIOS с помощью программы аварийного восстановления (через дисковод).
2. Основная часть.
Основной выполняемый код. Он состоит из ряда «модулей» и сохраняется в сжатом формате, используя архив LHA с незначительно изменёнными заголовками (это не критично для нашего анализа). Обычно применяются такие наименования для элементов (модулей) этого «архива», которые можно детально изучить с помощью утилиты cbrom:
— original.tmp – главная часть, всегда размером 128k, она нас и интересует. Именно в ней происходит вся инициализация компьютера, в ней же подпрограмма BIOS Setup
— awardext.rom – это «дополнение» основной компоненты, которое включает в себя подпрограмму для отображения конфигурации компьютера — таблица, которая появляется сразу перед надписью «Запуск Windows (DOS, linux и т.д.) …»
— awardepa.bin – это «изображение» Energy Star
Другие встречающиеся части:
— cpucode.bin – это файл с микрокодами для процессоров Intel (PPro, P2/P3/P4, Celeron)
— acpitbl.bin – подпрограмма поддержки ACPI
Также иногда встречаются различные файлы, такие как VGA.rom (при наличии интегрированного видеоустройства), logo.bin и другие, которые могут быть несущественными или очевидными. Названия могут варьироваться в зависимости от производителя, но исходя из размера и названия, всегда можно угадать их предназначение.
Как стало ясно, просто редактировать BIOS невозможно, так как это архив. Чтобы внести изменения, необходимо сначала извлечь нужный компонент, внести нужные правки и затем запаковать его обратно. "Основной" частью, как уже упоминалось, является original.tmp. Его мы и будем изменять.
Рецепт 1 (описан в интернете).
Запускаем modbin и загружаем нужный файл BIOS (прошивку, которую собираемся редактировать). При этом modbin создаёт два временных файла: bios.rom и original.tmp. Файл bios.rom является обычной копией открытого документа, а original.tmp – это распакованный «основной» модуль (см. выше). То есть, процесс распаковки весьма прост.
Если мы выберем в modbin верхний пункт «Update File», то «временный» файл original.tmp запаковывается назад в файл биоса. Напрашивается простое решение: если это сделать (открыть файл биоса в modbin) из-под винды, а потом просто переключиться по Alt-Tab в любой другой файлменеджер (VC, Explorer, Far и т.п.) – то у нас появится возможность внести любые изменения в original.tmp. Сделав, что нужно, переключаемся назад в modbin и тискаем "update”. modbin берёт исправленный нами original.tmp и сам запаковывает его в биос. Всё – радуемся. (Особенно, ежели после перешивки исправленная версия заработает:)
Тем не менее, описанный метод обладает существенным недостатком – он не дает возможности корректировать второй сегмент, т.е. можно изменять лишь первые 64k – 00000-0FFFFh. Вторая область памяти (вторые 64k) содержит различные регистры, которые изменяются модбином, и поэтому замещаются «своими» значениями, в результате чего все изменения в диапазоне 10000-1FFFFh игнорируются. Однако этот недостаток отсутствует в альтернативном методе. Более того, в отличие от первого, здесь работа осуществляется под «чистым» ДОСом, и есть возможность распаковать и модифицировать любой «модуль».
Необходимо более детально остановиться на структуре биоса. Как уже упоминалось, биос представляет собой архив. Однако точнее будет сказать, что это последовательность файлов, заархивированных с помощью LHA, с bootblock-ом в конце. Этот bootblock, разумеется, не заархивирован, поскольку именно он отвечает за распаковку всех этих «модулей» в оперативной памяти. Что касается конкретных адресов, структура представлена примерно следующим образом:
Таблица 1. Структура и адреса для 1Mbit-ного (128kB) биоса.
Архивированный файл original.tmp содержит еще один байт (так называемый «дополнительный» CRC)
Cразу же дальше (т.е. без разрыва) идёт файл следующего запакованного модуля, например, awardext.rom (на конце уже никаких «дополнительных» байтов)
После (также без перерыва) – идет следующий модуль. И так далее по всем присутствующим в данном биосе компонентам
Неиспользуемое пространство, как правило, заполняется символами «00» или «FF»
* — адреса могут отличаться, т.к. бывают прошивки с разными по величине бутблоками.
Теперь рассмотрим, что из себя представляет заголовок LHA-архива. Мы не будем углубляться в детали, а лишь выделим ключевые моменты, которые помогут нам точно определить его начало (ведь все «модули» следуют друг за другом «без промежутков»). Узнав адрес начала каждого модуля, мы также сможем определить и его конец. Начальная часть любого файла, заархивированного с использованием LHA, выглядит примерно так: "%•-lh5. ". Главный и постоянный отличительный знак здесь – "lh5”, эти три символа всегда присутствуют. Три символа перед "lh5” – это и есть точка начала. То есть, просто выполнив поиск "lh5” несколько раз подряд, мы легко вычислим вышеуказанные xxxxx+1 (отнимая тройку от адреса найденного "lh5”), yyyyy, zzzzz… Рассмотрим это на конкретном примере — прошивка для платы Zida 5SVA v.1.4:
Начало: 00000000: 25 E6 2D 6C-68 35 2D B3-4D 01 00 00-00 02 00 00 %ц-lh5-│M☺ ☻ 00000010: 00 00 50 20-01 0C 6F 72-69 67 69 6E-61 6C 2E 74 P ☺♀original.t 00000020: 6D 70 07 08-20 00 00 2D-08 8E 1E FD-AC 49 4B DA mp•◘ -◘О▲¤мIK┌
Здесь очевидно, что начало архивного файла original.tmp соответствует 00000. Переходим к поиску следующего "lh5":
Как можно заметить, далее располагается файл с заархивированным изображением EnergyStar – AWARDEPA.BIN. Он стартует с адреса 14DDCh. Следовательно, заархивированный файл original.tmp простирается от 0 до 14DDAh. Не уделяем внимания байту 14DDBh (CRC), так как его позднее пересчитает и установит сам modbin.
Следующее найденное "lh5”: 00015070: 0F 68 CF 55-8F 4F 88 8C-9B 96 B5 80-00 25 B3 2D ☼h╧UПOИМЫЦ╡А %│- 00015080: 6C 68 35 2D-E1 1D 00 00-98 2B 00 00-00 00 00 41 lh5-с↔ Ш+ A 00015090: 20 01 0C 61-77 61 72 64-65 78 74 2E-72 6F 6D 51 ☺♀awardext.romQ
Обнаружили по адресу 1507Dh начало awardext.rom. В результате, AWARDEPA.BIN – 0-14DDCh. К слову, судя по уже заметному, последний байт LHA-архива всегда равен "00”.
Последнее найденное "lh5”: 0001E860: 8E D8 8E C0-66 BE 00 00-0E 00 67 66-81 7E 02 2D О╪О└f╛ ♫ gfБ~☻- 0001E870: 6C 68 35 74-07 66 81 CE-00 00 F0 FF-66 BF 00 00 lh5t•fБ╬ Ё f┐ 0001E880: 01 00 66 B9-00 80 00 00-67 F3 66 A5-0F 20 C0 24 ☺ f╣ А gєfе☼ └$
Исключаем последнее обнаруженное "lh5”, так как по адресам понятно, что это часть бутблока. Для определения конца файла awardext.rom достаточно прокрутить прошивку после предпоследнего "lh5” до момента, когда начнётся пустое пространство (заполненное "00” или "FF").
00016E70: 11 85 2A F7-D0 82 2D 90-76 0A E6 27-39 FB FC 17 ◄Е*ў╨В-Рv◙ц`9√№↨ 00016E80: 5B EC 16 B0-C0 00 FF FF-FF FF FF FF-FF FF FF FF [ь▬░└ 00016E90: FF FF FF FF-FF FF FF FF-FF FF FF FF-FF FF FF FF
Т.е. с 16E86h начинается пустое место, значит awardext.rom – 1507D-16E85h.
Если сохранить обнаруженные фрагменты кода в файлы с расширением "*.lha", мы сможем использовать LHA (или любой другой современный архиватор) для их разархивации и извлечения необходимых нам файлов для просмотра или редактирования.
Теперь, подробно зная «скелет» прошивки нам не составит труда её разобрать и собрать. После наших (ваших;) исправлений, отредактированный файл original.tmp запаковываем с помощью LHA (название архиву можно дать любое). В конец полученному "*.lha”-файлу дописываем предварительно сохранённый кусок кода 14DDB-16E85h, т.е. все остальные «модули» (в т.ч. байт CRC), кроме original.tmp.
Для реализации этого процесса можно воспользоваться любым hex-редактором или, к примеру, выбрать опцию "Append" вместо "Overwrite" в Windows Commander. Это позволит создать новый «слепок» заархивированных «модулей», который затем нужно записать в начало файла прошивки, заменив старый. Конечно, после внесённых изменений контрольная сумма изменится, поэтому для пересчёта и записи CRC обновлённой прошивки просто откройте файл в модбине и, не внося никаких изменений, нажмите "Update File". Если модбин не выдаст ошибок при открытии, значит, всё было выполнено корректно.
Мы обсудили процесс замены для BIOS объемом 1Mbit (128kB). Для BIOS объемом 2Mbit это ещё проще, так как файл original.tmp располагается отдельно от других модулей:
Таблица 2. Структура и адреса для 2Mbit-ного (256kB) биоса.
Документ одного из сжатых «модулей», к примеру, awardext.rom
Cразу же дальше (т.е. без разрыва) идёт файл следующего запакованного модуля, например, cpucode.bin. Дальше (также без разрыва) – следующий. И так все имеющиеся в конкретном биосе "модули” (кроме original.tmp)
Пустое пространство, как правило, заполняется значениями «00» или «FF»
Файл сжатого original.tmp включает в себя еще один байт («дополнительный» CRC)
Свободное место, обычно заполняется «00» или «FF»
* — адреса могут варьироваться, так как существуют прошивки с различными размерами бутблоков.
И значит, не надо дополнительно мучаться с оставшимися «модулями» — заархивированный LHA модуль original.tmpзаписываем по адресу 20000h в нашу прошивку (поверх, конечно) и для пересчёта CRC «пересохраняем» ("Update File”) в модбине.
BootBlock, который находится в глубинах биоса, как уже упоминалось, не подвергается упаковке (все-таки кто-то должен заниматься распаковкой:). Поэтому с его редактированием возникает мало затруднений – используйте любой hex-редактор и вносите изменения. CRC рассчитывается до адреса 17FFFh для 1M-bit и 37FFFh для 2M-bit, поэтому если вы изменили что-то по более высоким адресам, обновление CRC не является необходимым.
Замечание для программистов: помните, что в бутблоке стек не используется (на первой стадии инициализации он запрещен), следовательно, для выполнения своих подпрограмм необходимо обращаться к указателю sp «вручную». Как это сделать? – проще всего изучить любой фрагмент кода оттуда из любой прошивки, и станет ясно.