Оновлення cpu microcode в ami bios, або приклад роботи з mmtool

Оновлення CPU microcode в AMI BIOS, або приклад роботи з MMTool

Вирішив згадати минуле - модифікацію БІОС.
У далекому студентському минулому це були підміни модуля 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 Біосил (про що я розповім вже в окремій статті).

Далі озброюємось утилітою 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).

Спосіб №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).

Висновок і післямова.


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

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

Оновлення cpu microcode в ami bios, або приклад роботи з mmtool
Оновлення cpu microcode в ami bios, або приклад роботи з mmtool
Оновлення cpu microcode в ami bios, або приклад роботи з mmtool
Оновлення cpu microcode в ami bios, або приклад роботи з mmtool
Оновлення cpu microcode в ami bios, або приклад роботи з mmtool
Оновлення cpu microcode в ami bios, або приклад роботи з mmtool
Оновлення cpu microcode в ami bios, або приклад роботи з mmtool