Автор: Pavel , 16 сентября 2007
На форуме часто встречаются просьбы помочь с добалением/удалением модулей в прошивку. Собственно мне надоело писать по сто раз одно и то же и решил я накатать маленькую статейку в Вики по этому поводу. По мере поступления новых вопросов на форуме, статья будет редактироваться, дополняться конкретными примерами. Это только черновик. Пока рассмотрена работа только с обычным Award BIOS. Примеры работы с ASUS Award BIOS и другими "брендовыми" прошивками будут добавлены по мере поступления вопросов.

Вот еще покопаюсь с AMIBCP и добавлю описание работы с ним.


Итак для добавления/удаления/замены модулей в Award BIOS существует утилита cbrom. На данное время актуальна версия 1.82
Здесь я коротко опишу примеры работы с Award BIOS для добавления новых модулей в прошивку. Это может пригодиться при установке в материнскую плату дополнительных контроллеров, допустим распространенного RAID-контроллера на чипе VIA-6421.

Типы модулей:
1. /isa - (уже не актуально, но скоро добавлю точное описание процедуры) 2. /vga - модуль встроенной видеокарты 3. /logo - тот самый логотип, который мы видим при включении материнской платы 4. /pci - модуль какого либо PCI-устройства. Это может быть BIOS RAID-контроллера, bootrom сетевой карты, etc. 5. /awdflash - интегрированный в BIOS прошивальшик. С его помощью производится обновление прошивки. 6. /cpucode - модуль микрокодов CPU. Иногда для запуска материнки с новым процессором требуется его обновление 7. /epa - логотипчик, который мы видим в правом-верхнем углу экрана при запуске матери. 8. /fnt0 - 5 Шрифты для многоязычных BIOS-ов
Есть еще достаточно много типов модулей, но в данном случае их знание нам не нужно.

Рассмотрим добавление модуля RAID-контроллера VIA-6421 в прошивку матплаты EPOX EP-8K3AP

Для начала получим список модулей уже имеющихся в прошивке
D:\Bios\BP>cbrom182 8k3ap.bin /d cbrom182 V1.82 [04/11/07] (C)Phoenix Technologies 2001-2007 ******** 8k3ap.bin BIOS component ******** No. Item-Name Original-Size Compressed-Size Original-File-Name ================================================================================ 0. System BIOS 20000h(128.00K) 13C01h(79.00K) 6a6lvpaj.BIN 1. XGROUP CODE 0B9C0h(46.44K) 0826Ch(32.61K) awardext.rom 2. ACPI table 035FEh(13.50K) 015B3h(5.42K) ACPITBL.BIN 3. YGROUP ROM 06390h(24.89K) 0384Ah(14.07K) awardeyt.rom 4. GROUP ROM[ 0] 039C0h(14.44K) 01B0Ch(6.76K) _EN_CODE.BIN 5. PCI ROM[A] 0C000h(48.00K) 06FFCh(28.00K) 372232b.rom 6. Flash ROM 09D8Eh(39.39K) 05638h(21.55K) AWDFLASH.EXE Total compress code space = 34000h(208.00K) Total compressed code size = 2EDAAh(187.42K) Remain compress code space = 05256h(20.58K) ** Micro Code Information ** Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID ------------------+--------------------+--------------------+-------------------

При простой попытке добавить модуль 6421.rom cbrom ругнется на недостаток места в прошивке
D:\Bios\BP>cbrom182 8k3ap.bin /pci 6421.rom cbrom182 V1.82 [04/11/07] (C)Phoenix Technologies 2001-2007 Adding 6421.rom ....... 48.8% 8k3ap.bin have not enough space for adding ROM. (Over 2694h bytes)

Значит нужно удалить что нибудь нам ненужное. В данном случае это интегрированный в прошивку флешер AWDFLASH.EXE
D:\Bios\BP>cbrom182 8k3ap.bin /awdflash release cbrom182 V1.82 [04/11/07] (C)Phoenix Technologies 2001-2007 [Flash ROM] ROM is release

Ну и собственно теперь добавляем модуль RAID-контроллера
D:\Bios\BP>cbrom182 8k3ap.bin /pci 6421.rom cbrom182 V1.82 [04/11/07] (C)Phoenix Technologies 2001-2007 Adding 6421.rom ....... 48.8%

Смотрим, что получилось
D:\Bios\BP>cbrom182 8k3ap.bin /d cbrom182 V1.82 [04/11/07] (C)Phoenix Technologies 2001-2007 ******** 8k3ap.bin BIOS component ******** No. Item-Name Original-Size Compressed-Size Original-File-Name ================================================================================ 0. System BIOS 20000h(128.00K) 13C01h(79.00K) 6a6lvpaj.BIN 1. XGROUP CODE 0B9C0h(46.44K) 0826Ch(32.61K) awardext.rom 2. ACPI table 035FEh(13.50K) 015B3h(5.42K) ACPITBL.BIN 3. YGROUP ROM 06390h(24.89K) 0384Ah(14.07K) awardeyt.rom 4. GROUP ROM[ 0] 039C0h(14.44K) 01B0Ch(6.76K) _EN_CODE.BIN 5. PCI ROM[A] 0C000h(48.00K) 06FFCh(28.00K) 372232b.rom 6. PCI ROM[B] 0F800h(62.00K) 0792Ah(30.29K) 6421.rom Total compress code space = 34000h(208.00K) Total compressed code size = 3109Ch(196.15K) Remain compress code space = 02F64h(11.85K) ** Micro Code Information ** Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID ------------------+--------------------+--------------------+-------------------

Теперь просто для примера рассмотрим случай с удалением одного из PCI-модулей, когда их несколько. Тут все еще проще.
Cbrom сам спрашивает какой именно модуль мы хотим удалить.
Удаляем добавленный нами модуль RAID-контроллера:
D:\Bios\BP>cbrom182 8k3ap.bin /pci release cbrom182 V1.82 [04/11/07] (C)Phoenix Technologies 2001-2007 PCI ROM - - - [A] : 372232b.rom PCI ROM - - - [B] : 6421.rom Enter a choice:b [PCI-B] ROM is release D:\Bios\BP>cbrom182 8k3ap.bin /d cbrom182 V1.82 [04/11/07] (C)Phoenix Technologies 2001-2007 ******** 8k3ap.bin BIOS component ******** No. Item-Name Original-Size Compressed-Size Original-File-Name ================================================================================ 0. System BIOS 20000h(128.00K) 13C01h(79.00K) 6a6lvpaj.BIN 1. XGROUP CODE 0B9C0h(46.44K) 0826Ch(32.61K) awardext.rom 2. ACPI table 035FEh(13.50K) 015B3h(5.42K) ACPITBL.BIN 3. YGROUP ROM 06390h(24.89K) 0384Ah(14.07K) awardeyt.rom 4. GROUP ROM[ 0] 039C0h(14.44K) 01B0Ch(6.76K) _EN_CODE.BIN 5. PCI ROM[A] 0C000h(48.00K) 06FFCh(28.00K) 372232b.rom Total compress code space = 34000h(208.00K) Total compressed code size = 29772h(165.86K) Remain compress code space = 0A88Eh(42.14K) ** Micro Code Information ** Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID ------------------+--------------------+--------------------+-------------------


Жду критики :) Конструктивной ;)
Содержимое данного поля является приватным и не предназначено для показа.

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-адреса преобразовываются в ссылки автоматически.

rumble

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

Все я понял. Нужно что-то удалить из:
 p3bf_noa.bin BIOS component 
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K)12292h(72.64K)original.tmp
1. Other(6000:0000) 06CF3h(27.24K)03B3Ch(14.81K)AWARDEXT.ROM
2. EPA pattern 00642h(1.56K)002A1h(0.66K)awardepa.epa
3. ACPI table 02742h(9.81K)00ECEh(3.70K)ACPITBL.BIN
4. Other(4007:0000) 01F65h(7.85K)012BBh(4.68K)cav_shdw.bin
5. Other(4006:0000) 08000h(32.00K)04FCAh(19.95K)pci32.rom
6. CPU micro code 0C062h(48.10K)064E9h(25.23K)cpucode.exe
Total compress code space = 32292h(200.64K)
Total compressed code size = 236ABh(141.67K)
Remain compress code space = 0EBE7h(58.98K)

Если удалить cav_shdw.bin, то места всё-равно не хватает.

S.A.N.

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

Кстати, по поводу этого пресловутого VT6421: рекомендую поэкспериментировать с биосом из материнской платы Abit AX8. Там биос имеет версию 1.30 и, похоже, писан на заказ для Абита. Отличие в том, что кроме рейдовости добавляет ещё возможность загрузки с CDROM. Просто сидюк будет прикидываться винтом, находясь с ними в одной группе.

Uri

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

Что я делаю не так?
1. Извлекаю BIOS (Award BIOS) в файл old.bin. Пробовал разные версии AWDFLASH, файл получается одинаковым.
2. Извлекаю vga bios командой "cbrom32_198 old.bin /vga extract". Получаю файл SDG_3102.DAT.
3. Редактирую шрифты в этом файле.
4. Копирую old.bin в new.bin и записываю в него новый SDG_3102.DAT командой "cbrom32_198 new.bin /vga SDG_3102.DAT".
5. Прошиваю новый BIOS с помощью AWDFLASH new.bin /py/sn.

В результате имею полное отсутствие изображения. "Вслепую" прошиваю старый BIOS - всё работает. Пробовал исключить 3 пункт и записывать в new.bin неизменный SDG_3102.DAT - нет изображения. Что именно я упускаю из виду? Может необходимо делать "cbrom32_198 new.bin /vga release" перед "cbrom32_198 new.bin /vga SDG_3102.DAT"? Хотя судя по "cbrom32_198 new.bin /D" лишнего vga модуля не образуется.

Compiller

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

Между этапами 3 и 4 должны поправить CRC полученного VideoBIOS
можно руками, можно утилитками - вот пара комманд лайн утилит
http://rapidshare.com/files/58378722/CRC_BIOS.ZIP
Одна crc просто пишет контрольную сумму на экран (править последний байт файла VideoBIOS надо руками), вторая crcbios имеет два параметра командной строки входной и выходной файл. Выходной получается с исправленной CRC.

Compiller

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

Плюс не забывайте, в некоторых BIOS кроме сжатого VGA есть несжатая версия /BTVGA в понимании CBROM.

Uri

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

Спасибо за подсказку. Я почему-то надеялся, что CBROM сам откорректирует crc. Ну или, на худой конец, ругнётся на "неправильный" модуль. Утилиты не потребовались. 8 bit checksum я и в WinHex'е посчитал и crc в последний байт вбил. Всё заработало. Ну и вопрос вдогонку: а зачем в конце модуля столько нулей? Насколько я теперь знаю, размер модуля должен быть кратен 200h. А в том модуле, что я редактировал, их много больше (A180h) . Можно ли убрать "лишние"?

savely

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

их много больше (A180h)

Ну, видеобиосы - оне типа заточены, что их 64k, со старых времен. Надеюсь, склероз мне не изменяет насчет 64... Я б не трогал размер. А вообще - байт, следующий за сигнатурой 55AA (т.е. третий) - размер распакованного BIOS в блоках по 512 байт. Т.е. типа -
0x10 - 8 килобайт. И правильная CRC, ессно, должна лежать последним байтом заявленного размера.
В общем, документов по этому поводу в гугле 2 - "pnpbios.rtf" и "pci21.pdf".

MSI BIOS (не проверено)

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

Пардон, что пишу не совсем по теме....сил нет исккать нужную ветку... Хоть и сомнения берут верх, что подобная вообще существует!

Есть плата MSI MS-6714 rev. 1(845GEM) и есть два процессора на яндрах Нортвуд. Один 2.26Ггц 533FSB второй 2.4 Ггц 800FSB маркировка SL6WF

В связи с тем, что чипсет мат платы INTEL 845GE легко разгоняется до 800Mhz, я стал размышлять как завести на своей плате именно 800-ый Нортвуд.
На сайте MSI есть нестколько плат с полобной логикойно разных ревизий. пришла идея, а почему бы не попробовать вшить биос от другой платы!? И вот есть плата MS-6714 845GEM, над которой происходит всё издевательство, биос второй платы MS-6714 845GEM (PCB 5.0), (на которой по заявлению производителя есть поддержка моего SL6WF ), и биос платы MS-7057 845GVM-V без поддержки оного процессора.
И соответственно имею три 4-ёх Mbit микросхемы, в которых вшиты разные биосы. На плату MS-6714 845GEM впаяна кроватка для удобства работы!

Все биосы последней ревизии работают( как ни странно) на моей старой плате MS-6714 (845GEM), т.е. она стартует и стабильно работает с любым из вышеперечисленных биосов с процессором Pentium 4 2.26Ghz на 533 шине.

НО! ! ! НО ! ! ! НО ! ! ! Длительные эксперименты привели к следующему. Выяснилось, что мой НОРТВУД Pentium 4 2.4 FSB 800 всё-таки заводится на плате MS-6714 845GEM с биосом от материнки MS-7057 845GVM-V лишь на частоте шины 533, сообветственно частота его составляет всего лишь 1600Мгц, вместо 2400Мгц. Всему виной оказался именно биос!!! В нём просто напросто нет возможности изменить частоту шины до 200Мгц.
Если запустить плату с процессором Pentium 4 2.4 FSB 800 SL6WF, используя биос от MS-7057 845GVM-V войти в биос6 ничего не меняя на горячую вынуть микросхему с биосом, и вставить другую, куда вшит биос от MS-6714 845GEM (PCB 5.0), а затем нажать сохранение настроек и перезагрузить компьютер (тут и о чудо!) Компьютер работает! Входим в биос выставляем частоту системной шины 200Мгц, стандартное напрядение для процессора, сохраняемся. Всё работает. Подключаем жёсткий диск, грузим WIN XP и проходим на УРА! все тысты на выживание....

Всё работет только того момента,пока не выключишь компьютер полностью.
После выключения и включения мат.плата циклично начинает включаться, а потом выключаться(((

Идея такова. Подскажите специалисты БИОСОгении! Как добавить в меню биоса MS-7057 845GVM-V возможность изменять частоту свыше 156Мгц( в частности 200) выставлять вручнуб напрядение на процессоре!!! или Нужно что-то заменить в нем какой-то частью от биоса 845GEM (PCB 5.0)?
Открыл биос 845GEM (PCB 5.0) "modbin.exe" но и там в "Setup structure tree" доступно только лишь 156Мгц ((((

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

9 лет 1 месяц назад

Ребята а как извлечь микрокоды CPU и system bios

maco

9 лет 1 месяц назад

[OFF]Можете руками их извлечь :).
Пример.[/OFF]