ARM UEFI C StdLib BDS

Насколько я понимаю, если я создаю приложение UEFI с StdLib Pkg, оно имеет зависимость от ShellPKg, и приложение должно запускаться через новую оболочку (UEFI Interactive Shell v2.1 EDK II UEFI v2.60). Таким образом, запуск приложения вручную через оболочку 2.1, созданную с помощью ShellPkg, работает, но не с оболочкой EBL или через gBS->StartImage.

На мой вопрос: можно ли запустить приложение UEFI, использующее библиотеку, созданную с помощью StdLib, через BDS (выбор загрузочного устройства), без предварительного запуска оболочки и использовать startup.nsh для запуска нужного вам приложения UEFI?

Например, попытка загрузить приложение UEFI с помощью StdLib со следующей командой в BDS не сработает, поскольку она не запущена через Shell: Status = gBS->StartImage(ImageHandle, NULL, NULL);

Итак, чего я хотел бы добиться, так это вызова функции для выполнения приложения UEFI с пакетом StdLib во время загрузки в BDS. Наиболее предпочтительно не через скрипты запуска.

БР Гигу


person MrGigu    schedule 01.09.2016    source источник
comment
Зачем вам StdLib? Вы не можете удалить зависимость от StdLib?   -  person OlivierM    schedule 30.05.2017


Ответы (1)


Да, вы можете запустить приложение UEFI через BDS.

Чтобы запустить/выполнить приложение UEFI через BDS, нам нужно использовать переменную BOOT#### NV для запуска/выполнения приложения UEFI.

Чтобы загрузить драйвер UEFI через BDS, мы можем использовать переменную DRIVER#### NV для загрузки драйверов DXE, UEFI.

Используя этот способ, нам не нужно использовать способ Starup.nsh или среду Shell для запуска/выполнения приложения UEFI.

person Perry    schedule 18.03.2018