Первый минус в том, что UEFI - это просто спецификация, то, что вы используете на платформе, это EDK2 или другая реализация спецификации UEFI. Таким образом, ваш поставщик предоставит, вероятно, некоторую модификацию EDK2.
Я думаю, что вы учли много факторов:
- Доступность реализации - как отметил Том в другом ответе. Это ключевой аргумент, поскольку, скорее всего, перенос UEFI на новую платформу потребует значительных усилий при программировании.
- Целевая операционная система - для современной Windows у вас нет выбора, и вы должны использовать EDK2
- Тип безопасности - обратите внимание, что новая платформа ARMv8 предоставляет определенную поддержку безопасности (OP TEE, ATF), которую вы, возможно, должны использовать.
- Набор функций - чтобы максимизировать рентабельность инвестиций, вы должны выбрать реализацию, в которой реализовано большинство функций.
- Вклад - U-Boot четко понимает условия вклада, и весь код, который объединяется, находится под GPLv2, в случае любого проекта Tianocore (частью которого является EDK2), вы должны ознакомиться и подписать Соглашение о вкладе TianoCore 1.0. EDK2 имеет лицензию BSD.
Я работал с обеими реализациями EDK2 и U-Boot, и если у меня будет выбор, я пойду с U-Boot. Зачем ?
- Дружелюбное, широкое и разнообразное сообщество - EDK2 полагается в основном на Intel, Apple и пару коммерческих провайдеров. У U-Boot есть люди для различных отраслей промышленности с различным опытом, поэтому очень вероятно, что у кого-то были подобные проблемы.
- Сложность - кривая обучения для UEFI/EDK2 является крутой, поскольку они используют различные концепции, которые не типичны для встроенной разработки (т.е. HOBs, все типы файлов), для U-Boot любого, кто знаком с ядром Linux, мы быстро разрабатываем дизайн.
- Сертификация - AFAIK U-Boot не имеет формального процесса. Для реализации UEFI у вас есть набор тестов, чтобы заявить, что вы - жалоба UEFI.
Наверное, есть еще много чего, но я думаю, что этого достаточно, чтобы провести собственное исследование и понять, каким должен быть ваш выбор.