PEI
PEI (Pre-EFI Initialization) — вторая стадия работы прошивки UEFI: минимальная инициализация железа, главное в которой — запустить оперативную память.
До PEI прошивка работает на кэше вместо памяти (см. SEC); после PEI у неё есть настоящая DRAM, и можно запускать драйверы и сервисы.
Из чего состоит PEI
- PEI Core — маленький диспетчер: он по очереди запускает модули PEI и следит за порядком.
- PEIM (PEI Module) — модули инициализации: чипсет, контроллер памяти, отдельные блоки платформы.
- PPI (PEIM-to-PEIM Interface) — способ, которым PEIM-модули передают друг другу данные и «услуги».
- HOB (Hand-Off Blocks) — структуры, в которых накопленное описание платформы передаётся следующей стадии, DXE.
Что происходит по шагам
- Инициализация чипсета — минимально достаточная, чтобы заработал доступ к памяти и устройствам.
- Инициализация DRAM — самая длинная часть всей загрузки: читаются параметры модулей (SPD), подбираются тайминги и напряжения, проверяется стабильность. У Intel этот код называют MRC (Memory Reference Code), у AMD — AGESA.
- Переключение на настоящую память — прошивка переселяется из кэша в DRAM; дальше кэш работает как кэш.
- Продолжение инициализации — отдельные блоки платформы, которые нужны до драйверов.
- Сборка HOB — итог: сколько памяти, где она, какие устройства найдены, какие настройки применены.
- Передача управления в DXE.
Почему PEI такой маленький
Задача PEI — как можно быстрее получить рабочую память и передать управление. Всё остальное делается в DXE, где есть память, драйверы и можно писать нормальный код. Поэтому PEI — компактный и «низкоуровневый»: часто на ассемблере и очень осторожном C.
Если компьютер «висит» на обучении памяти (например, светодиод DRAM на плате горит дольше обычного или вообще не гаснет), проблема обычно именно здесь.
Итог стадии
К концу PEI: работает оперативная память, прошивка выполняется из неё, собраны HOB с описанием платформы. Дальше — DXE, где запускаются драйверы и поднимаются сервисы UEFI.
Комментарии
Пока комментариев нет.