Обновление CPU microcode в AMI BIOS, или пример работы с MMTool
Решил вспомнить былое — модификацию БИОС. <br> <em>В далёком студенческом прошлом это были подмены модуля raid на линейке мат. плат Epox под сокет A утилиткой cbrom, и кое какие манипуляции утилиткой modbin с пунктами меню.<br> </em><br> Ныне появилось желание (плавно перетекающее в необходимость апгрейда) добавить поддержку новых CPU AMD поколения K10.5 (что под сокет AМ2+\AM3) для материнской платы BIOSTAR TA770 A2+ (с сокетом AM2+ и на Award BIOS).<br> Процесс поиска подходящего БИОСа с необмодимым CPU_list в линейке мат. плат Biostar под сокет AM2+ не дал качественных результатов. Т.к. лишь несколько мат. плат под сокете AM2+ (и лишь на чипсетах NForce) оказались снабжены Award БИОСом. А большинство таких мат.плат Biostar снабжены AMI БИОСом. Как раз последняя условность и позволила мне найти пример для «поиграться» с AMI БИОСами данных мат. плат и поделиться скромным опытом в данной статье прежде, чем разбираться с Award БИОСами (о чем я расскажу уже в отдельной статье).<br> <br> Представляю донора BioStar A740G M2L+ (AMD 740G / SB710) и реципиента BioStar A740G M2+ (AMD 740G / SB700). Мат.плата, что с литерой «L», более свежая и поддерживает процессоры AM3 официально, в отличие от другой, что ограничена лишь поддержкой процессоров AM2+. Напрашиваются на сравнительный анализ БИОСы их.<br> С оф. сайта загружаем лишь последнее обновление прошивки БИОСа для каждой их этих мат.плат:<br> — для A740G M2+ последняя бэта <a href="http://www.biostar.com.tw/app/ru/mb/introduction.php?S_ID=350#dl" rel="nofollow">A74GM916.BSS</a> за сентябрь 2009г.<br> — для A740G M2L+ — файл <a href="http://www.biostar.com.tw/app/ru/mb/introduction.php?S_ID=489#dl" rel="nofollow">74GCU511.BSS</a> — за май 2010г.<br> <br> Далее вооружаемся утилитой MMTOOL<em>(я использовал версии 3.22, 3.23 и 3.26 — различий в работе не обнаружил)</em>. Для работы с MMTOOL расширения файлов прошивок БИОС необходимо переименовывать на *.rom.<br> <br> Теперь запускаем две MMTOOL и в них подгружаем файлы прошивок от двух мат. плат. Обращаем внимание на разные размеры в столбце «Source size» ( да и в «Size in Rom» тоже разумеется) модуля 11 «P6 Micro Code» в каждой из прошивок.<br> <br> Переходим в раздел CPU PATCH для детального сравнения:<br> <br> — файл донора 74GCU511.rom — cpu_list содержит 14 строк с поддержкой CPURev.ID + 1 пустая (рис.1).<br> <br> — бэта-версия реципиента A74GM916.rom — cpu_list содержит 13 строк с поддержкой CPURev.ID + 1 пустая (рис.2).<br> <br> После анализа списков этих двух БИОСов становится очевидно, что для более новой мат.платы разработчики использовали более свежие патчи для процессоров AMD, где подправлен микрокод двух строк с CPURev.ID 1043 и 1062 (датируются 2009/07/31) и одна строка с CPURev.ID 10A0 добавлена (датируется 2010/02/17).<br> <br> <h6>Способ №1 — модификация отличительных строк.</h6> <br> Производится извлечение этих трёх отличительных строк из донора 74GCU511.rom — действия «Extract a Patch Data» + «Apply» + 1 последнюю пустую строку и сохранение их в отдельные файлы.<br> <br> Предварительно в в разделе CPU PATCH файла реципиента A74GM916.rom удаляются две строк с номерами CPURev.ID 1043 и 1062 (чей микрокод более старый чем мы будем далее вставлять) и последняя пустая строка — действия «Delete a Patch Data» + «Apply» (рис.3).<br> <br> После этого поочерёдно вставляется более новый микрокод из четырёх уже ранее полученных файликов-патчей для CPURev.ID 1043, 1062, 10A0 и пустая строка (рис.4).<br> <br> Обращаем внимание на размеры («Source size» и «Size in Rom») модуля 11 «P6 Micro Code» до и после применения данных изменений в файле реципиента. <br> После применения эти размеры у реципиента (рис.6) станут идентичны размерам такого же модуля в файле-доноре 74GCU511.rom (рис.5). <br> <em>Стоит заметить, что несложно понять, как формируется размер модуля (каждая строка, что в разделе CPU PATCH, занимает по 2048 байт).</em><br> <br> Сохранять изменения лучше под новым именем файла. <br> Далее этот файл проверяется, чтобы по новой без ошибок открывался MMTOOL.<br> <br> <h6>Способ №2 — модификация заменой модуля целиком.</h6> <br> <em>Собственно именно он и описан на просторах интернета (например частично <a href="http://ideafix.name/?p=2513" rel="nofollow">здесь</a>).</em><br> <br> В MMTOOL подкружаем файл донора 74GCU511.rom, переходим во вкладку «Extract» и ищем строку «P6 Micro Code». Затем выделяем её, в поле «module file» задаем ему имя ncpucode.bin и выполняем Extract module «in uncompressed form».<br> <br> Теперь в MMTOOL подгружаем файл реципиента A74GM916.rom, переходим во вкладку «Replace» и снова ищем строку «P6 Micro Code». Выделяем её, ждём Browse и выбираем наш донорский модуль ncpucode.bin. Жмём Replase и далее соглашаемся на замену данного модуля. <br> <br> Снова обращаем внимание на размеры («Source size» и «Size in Rom») модуля 11 «P6 Micro Code» до и после замены данного модуля в файле реципиента. <br> После применения эти размеры у реципиента (рис.7) станут идентичны размерам такого же модуля в файле-доноре 74GCU511.rom (рис.5).<br> <br> <em>Если сравнить результаты обоих способов (рис.6 и рис.7), то заметна разница в 10байт в адресе RomLoc модуля «User Defined or Reserved», следующего за обновляемым модулем «P6 Micro Code» — возможно, это особенности работы MMTOOL...</em><br> <br> <h6>Заключение и послесловие.</h6> <br> Таким вот образом из разных прошивок БИОС различных мат. плат на сокете АМ2+ (и даже АМ3 для сравнения) можно найти самые свежие микрокоды для каждого типа CPURev.ID, как в Award так и AMI биосах, затем скомбинировать в единый ncpucode.bin.<br> В последтсвии он получился у меня размером 32768 байт из 16 строк (микрокодов) с самыми свежими датами из числа изученных прошивок различных БИОСов: с 15ю различными типами ревизий процессоров для сокета АМ2+ (040A, 0413, 0414, 041B, 0433, 0680, 0C1B, 1000, 1020, 1022, 1040, 1041, 1043, 1062, 10A0) и 16-ой строкой для RevID 0000 (видимо некий универсальный микрокод для ревизий процессоров, не описанных в других строках — имхо, например будущих). <br> <br> При комбинировании собственного ncpucode.bin импортированием необходимых патчей(микрокодов) для каждой необходимой ревизии процессоров в качестве лабораторного можно использовать абсолютно любую прошивку AMI биос с модулем «P6 Micro Code».<br> <br> Однако при сохранении файла прошивки была замечена неприятная особенность MMTOOL — утилита почему-то прибавляла 8 нулевых байт в конец модуля «P6 Micro Code» — он получался размером 32776 байт. При извлечении тем же MMTOOL из лабораторной прошивки файл ncpucode.bin также становился на выходе размером 32776 байт.<br> Можно сие отредактировать простыми доступными всем редакторами. Но я также (случайно) обнаружил альтернативный способ: при извлечении универсальной утилитой BIOS_EXT.EXE всех модулей из лабораторной прошивки файл ncpucode.bin уже получался правильного размера 32768 байт — утилита BIOS_EXT.EXE сама правильно определила конец модуля «P6 Micro Code» при сохранении его в файл.

[ ] для раздела Блоги
Начислено вознаграждение
Этот материал написан посетителем сайта, и за него начислено вознаграждение.
Решил вспомнить былое — модификацию БИОС.
В далёком студенческом прошлом это были подмены модуля raid на линейке мат. плат Epox под сокет A утилиткой cbrom, и кое какие манипуляции утилиткой modbin с пунктами меню.

Ныне появилось желание (плавно перетекающее в необходимость апгрейда) добавить поддержку новых CPU AMD поколения K10.5 (что под сокет AМ2+\AM3) для материнской платы BIOSTAR TA770 A2+ (с сокетом AM2+ и на Award BIOS).
Процесс поиска подходящего БИОСа с необмодимым CPU_list в линейке мат. плат Biostar под сокет AM2+ не дал качественных результатов. Т.к. лишь несколько мат. плат под сокете AM2+ (и лишь на чипсетах NForce) оказались снабжены Award БИОСом. А большинство таких мат.плат Biostar снабжены AMI БИОСом. Как раз последняя условность и позволила мне найти пример для «поиграться» с AMI БИОСами данных мат. плат и поделиться скромным опытом в данной статье прежде, чем разбираться с Award БИОСами (о чем я расскажу уже в отдельной статье).

Представляю донора BioStar A740G M2L+ (AMD 740G / SB710) и реципиента BioStar A740G M2+ (AMD 740G / SB700). Мат.плата, что с литерой «L», более свежая и поддерживает процессоры AM3 официально, в отличие от другой, что ограничена лишь поддержкой процессоров AM2+. Напрашиваются на сравнительный анализ БИОСы их.
С оф. сайта загружаем лишь последнее обновление прошивки БИОСа для каждой их этих мат.плат:
— для A740G M2+ последняя бэта A74GM916.BSS за сентябрь 2009г.
— для A740G M2L+ — файл 74GCU511.BSS — за май 2010г.

Далее вооружаемся утилитой MMTOOL (я использовал версии 3.22, 3.23 и 3.26 — различий в работе не обнаружил). Для работы с MMTOOL расширения файлов прошивок БИОС необходимо переименовывать на *.rom.

Теперь запускаем две MMTOOL и в них подгружаем файлы прошивок от двух мат. плат. Обращаем внимание на разные размеры в столбце «Source size» ( да и в «Size in Rom» тоже разумеется) модуля 11 «P6 Micro Code» в каждой из прошивок.

Переходим в раздел CPU PATCH для детального сравнения:

— файл донора 74GCU511.rom — cpu_list содержит 14 строк с поддержкой CPURev.ID + 1 пустая (рис.1).

— бэта-версия реципиента A74GM916.rom — cpu_list содержит 13 строк с поддержкой CPURev.ID + 1 пустая (рис.2).

После анализа списков этих двух БИОСов становится очевидно, что для более новой мат.платы разработчики использовали более свежие патчи для процессоров AMD, где подправлен микрокод двух строк с CPURev.ID 1043 и 1062 (датируются 2009/07/31) и одна строка с CPURev.ID 10A0 добавлена (датируется 2010/02/17).

Способ №1 — модификация отличительных строк.

Производится извлечение этих трёх отличительных строк из донора 74GCU511.rom — действия «Extract a Patch Data» + «Apply» + 1 последнюю пустую строку и сохранение их в отдельные файлы.

Предварительно в в разделе CPU PATCH файла реципиента A74GM916.rom удаляются две строк с номерами CPURev.ID 1043 и 1062 (чей микрокод более старый чем мы будем далее вставлять) и последняя пустая строка — действия «Delete a Patch Data» + «Apply» (рис.3).

После этого поочерёдно вставляется более новый микрокод из четырёх уже ранее полученных файликов-патчей для CPURev.ID 1043, 1062, 10A0 и пустая строка (рис.4).

Обращаем внимание на размеры («Source size» и «Size in Rom») модуля 11 «P6 Micro Code» до и после применения данных изменений в файле реципиента.
После применения эти размеры у реципиента (рис.6) станут идентичны размерам такого же модуля в файле-доноре 74GCU511.rom (рис.5).
Стоит заметить, что несложно понять, как формируется размер модуля (каждая строка, что в разделе CPU PATCH, занимает по 2048 байт).

Сохранять изменения лучше под новым именем файла.
Далее этот файл проверяется, чтобы по новой без ошибок открывался MMTOOL.

Способ №2 — модификация заменой модуля целиком.

Собственно именно он и описан на просторах интернета (например частично здесь).

В MMTOOL подкружаем файл донора 74GCU511.rom, переходим во вкладку «Extract» и ищем строку «P6 Micro Code». Затем выделяем её, в поле «module file» задаем ему имя ncpucode.bin и выполняем Extract module «in uncompressed form».

Теперь в MMTOOL подгружаем файл реципиента A74GM916.rom, переходим во вкладку «Replace» и снова ищем строку «P6 Micro Code». Выделяем её, ждём Browse и выбираем наш донорский модуль ncpucode.bin. Жмём Replase и далее соглашаемся на замену данного модуля.

Снова обращаем внимание на размеры («Source size» и «Size in Rom») модуля 11 «P6 Micro Code» до и после замены данного модуля в файле реципиента.
После применения эти размеры у реципиента (рис.7) станут идентичны размерам такого же модуля в файле-доноре 74GCU511.rom (рис.5).

Если сравнить результаты обоих способов (рис.6 и рис.7), то заметна разница в 10байт в адресе RomLoc модуля «User Defined or Reserved», следующего за обновляемым модулем «P6 Micro Code» — возможно, это особенности работы MMTOOL...

Заключение и послесловие.

Таким вот образом из разных прошивок БИОС различных мат. плат на сокете АМ2+ (и даже АМ3 для сравнения) можно найти самые свежие микрокоды для каждого типа CPURev.ID, как в Award так и AMI биосах, затем скомбинировать в единый ncpucode.bin.
В последтсвии он получился у меня размером 32768 байт из 16 строк (микрокодов) с самыми свежими датами из числа изученных прошивок различных БИОСов: с 15ю различными типами ревизий процессоров для сокета АМ2+ (040A, 0413, 0414, 041B, 0433, 0680, 0C1B, 1000, 1020, 1022, 1040, 1041, 1043, 1062, 10A0) и 16-ой строкой для RevID 0000 (видимо некий универсальный микрокод для ревизий процессоров, не описанных в других строках — имхо, например будущих).

При комбинировании собственного ncpucode.bin импортированием необходимых патчей(микрокодов) для каждой необходимой ревизии процессоров в качестве лабораторного можно использовать абсолютно любую прошивку AMI биос с модулем «P6 Micro Code».

Однако при сохранении файла прошивки была замечена неприятная особенность MMTOOL — утилита почему-то прибавляла 8 нулевых байт в конец модуля «P6 Micro Code» — он получался размером 32776 байт. При извлечении тем же MMTOOL из лабораторной прошивки файл ncpucode.bin также становился на выходе размером 32776 байт.
Можно сие отредактировать простыми доступными всем редакторами. Но я также (случайно) обнаружил альтернативный способ: при извлечении универсальной утилитой BIOS_EXT.EXE всех модулей из лабораторной прошивки файл ncpucode.bin уже получался правильного размера 32768 байт — утилита BIOS_EXT.EXE сама правильно определила конец модуля «P6 Micro Code» при сохранении его в файл.
Подпишитесь на наш канал в Яндекс.Дзен или telegram-канал @overclockers_news - это удобные способы следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.

Комментарии Правила

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают