Автор: ROMby Unknown , 27 октября 2010
Очень помогла статейка Структура EFI по разборы EFI капсулы.
У меня такая проблема сейчас, есть плата, которая встает на 0x87. Это EC, понятно, но BIOS нет чтоб наплевать, виснет зараза.
Почему EC - потому что его нету на плате, а референс дизайн платы с ним. Ну посчитали его ненужным и выкинули /images/koloboks/hmr.gif. Плату делали сами, к слову. AtomD510+NM10, не суть... BIOS референсный мать его так, исходников естессно нет.

На LPC при этом последние коды:

W 0x80 0x16
W 0x80 0x36
W 0x80 0x87
R 0x60 --
R 0x64 --
R 0x60 --
R 0x64 --

Видно что выставляет POST 0x87 и пробует читать KBC из EC.

А проблема то в общем в следующем:

Разобрал я BIOS на кусочки (очень благодаря apple_rom и его BIOS Patcher 7.0a), с помощью "такой-то матери" и исходников с tianocore сейчас могу собрать почти любой кусочек воедино с пересчетом всех CRC и т.п. Может и нашел даже это место предположительно инциализация EC, но запакована эта часть слополучным сабжем! /images/koloboks/close_tema.gif

А вот SUBJ господа! Что за тип компрессии? Как apple_rom сделал декомпрессию???
Содержимое данного поля является приватным и не предназначено для показа.

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

awoland

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

#define EFI_CUSTOMIZED_COMPRESSION 0x02

Зарезервированное значение для OEM реализации алгоритма компресии.
Вообщем EDK и IDA Pro тебе в помощь...
Нужные файлы из EDK1:
Foundation\Library\CustomizedDecompress\CustomizedDecompress.(h|c)
Foundation\Protocol\CustomizedDecompress\CustomizedDecompress.(h|c)

Поиск в модулях биоса сигнатуры EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL_GUID
(struct EFI_GUID = {0x9a44198e, 0xa4a2, 0x44e6, 0x8a, 0x1f, 0x39, 0xbe, 0xfd, 0xac, 0x89, 0x6f};)
Затем поиск кода инициализации переменной структуры:
typedef struct _EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL {
EFI_CUSTOMIZED_DECOMPRESS_GET_INFO GetInfo;
EFI_CUSTOMIZED_DECOMPRESS_DECOMPRESS Decompress;
} EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL;
Тебе нужны 2 функции, которыми будут инициализироваться поля GetInfo и Decompress.
Далее дело техники ... Прототипы функций в Foundation\Library\CustomizedDecompress\CustomizedDecompress.h