https://habr.com/ru/post/338264/
«OVMF – портированная Интелом виртуалка qemu для отладки UEFI Firmware»
«UEFI Shell. Как в нем работать – написана куча руководств»
https://www.bootdev.ru/2018/05/EFI-Shell.html
> - Исходящее перенаправление вывода.
< - Входящее перенаправление вывода.
пробел - Используется для отделения аргументов выполняемой команды.
Кавычки (") предназначены для объединение нескольких слов в единую строку.
^ - Предназначен для экранирования специальных символов.
https://www.happyassassin.net/posts/201 … work-then/
USEFI Forum = http://uefi.org/
«when booting permanent installed OSes, the firmware doesn't care if the bootloader is on an 'ESP' or not; it just reads the boot manager entry and tries to access the specified partition and run the specified executable (see here). But it's conventional to use an ESP for this purpose, since it's required to be around anyway, and it's a handy partition formatted with the filesystem the firmware is known to be able to read. Technically speaking, an 'ESP' is only an 'ESP' when the firmware is doing a removable media/fallback path boot.»
«В теории Вы сами можете собрать себе coreboot»
«и залить через аппаратный программатор, если микросхема BIOS у Вас в «кроватке»,
либо через flashrom напрямую в микросхему.
Только в начале сдёрните свою работающую прошивку и держите как референсную на всякий пожарный, если что пойдёт совсем не так. Сдёргивать надо прошивку в любом случае, что с внешним программатором, что с софтом.»
см. также UEFI и его требования к загрузочному устройству
«Никаких процессов, никаких объектов синхронизации, общая память системы/драйверов/приложений которую может попортить кто угодно.»
«Отладка только по печати на экран.»
https://stackoverflow.com/questions/529 … deprecated
«use UEFI's Graphics Output Protocol to switch video modes»
пример такого кода:
http://git.savannah.gnu.org/cgit/grub.g … /efi_gop.c
https://edk2-docs.gitbook.io/edk-ii-uef … ementation
EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE
Содержит параметры текущего установленного видео режима
EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE
Обеспечивает получение списка поддерживаемых видео режимов
EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE
Позволяет установить заданный видео режим
EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT
Выполняет копирование блока графических данных из системной памяти в видео память и обратно
«Продвинутая функция BLT или Block Transfer, реализованная в рамках GOP, потенциально дает возможность использовать видео акселератор. Блок данных, находящийся в системной памяти и предназначенный для переноса в видео память может быть обработан графическим процессором, взаимодействующим с оперативной памятью в режиме Bus Master. Чтобы это стало возможным, поддержка протокола GOP должна быть адаптирована к архитектуре заданного графического процессора и интегрирована в firmware видео адаптера.»
https://wiki.osdev.org/GOP
«Reading from the video memory is slooow! Use double buffering instead. »
https://wiki.osdev.org/Drawing_In_Protected_Mode
Утилита для замера скорости работы графики:
https://habr.com/ru/post/212363/
Пример графического приложения:
https://habr.com/ru/company/ruvds/blog/571624/
«Видел на гитхабе Doom для UEFI»
Ещё там можно найти сетевые карты:
What you need is EFI_PCI_IO_PROTOCOL.
Refer to UEFI spec 2.6 "13.4 EFI PCI I/O Protocol".
Get all PCI devices handles by calling gBS->LocateHandleBuffer().
Get EFI_PCI_IO_PROTOCOL attached on PCI device handle. (gBS->HandleProtocol)
Call EFI_PCI_IO_PROTOCOL.Pci() to load the PCI configuration space. Everything you need (Device id, Vendor id, Subsystem, Revision) can be found in PCI configuration space.
«Version 2.5 of the UEFI specification introduces the UEFI HTTP Boot feature.»
https://stackoverflow.com/questions/659 … k-packages
Simple Network Protocol gives you raw access to a packet interface if you want to handle things yourself.
«The EFI_SIMPLE_NETWORK_PROTOCOL provides services to initialize a network interface, transmit packets, receive packets, and close a network interface.»
Managed Network Protocol has the firmware trying to autoconfigure your network and download files as appropriate via TFTP/PXE or HTTPS.
Отредактировано Лис (2022-06-27 22:04:28)