64-bit Tiano Core UEFI for the Raspberry Pi 3 (with devices, Linux, FreeBSD and Windows on Arm!)
Last updated Jul 8th, 2018.
This is a port of 64-bit Tiano Core UEFI firmware for the RPi3/RPi3B+ platforms, based on Ard Bisheuvel’s 64-bit and Microsoft’s 32-bit implementations.
Initially, this was supposed to be an easy walk in the park, where the Microsoft drivers just sorta slide into Ard’s UEFI implementation, and I call it a day. It turned out to be a bit more frustrating of an experience than that :-).
This is meant as a generally useful 64-bit UEFI implementation for the Pi3, good enough for most kinds of UEFI development and good enough for running real operating systems. It has been validated to install and boot Linux (SUSE, Ubuntu) and FreeBSD, and there is experimental Windows on Arm support as well.
Andrej Warkentin
Master student at Bernstein Center for Computational Neuroscience Berlin.
Andrej Warkentin on Twitter
Here is a comparison table between different available EFI firmware implementations for the RPi3.
Feature |
This Implementation |
Ard’s |
Microsoft’s |
U-Boot |
Minoca |
Bitness |
64-bit |
64-bit |
32-bit |
Either |
32-bit |
PSCI CPU_ON |
Yes |
No |
No |
No |
No |
PSCI SYSTEM_RESET |
Yes |
Yes |
No |
No |
No |
PSCI SYSTEM_OFF |
Yes |
No |
No |
No |
No |
DT |
Yes |
Yes |
No |
Yes |
No |
Pass-through DT |
Yes |
No |
N/A |
Yes |
No |
NVRAM |
Limited |
No |
No |
No |
No |
RTC |
Limited |
No |
No |
No |
No |
ACPI |
Yes |
No |
Yes |
No |
Yes |
Serial |
Yes |
Yes |
Yes |
Yes |
Yes |
HDMI GOP |
Yes |
No |
No |
Yes |
No |
SMBIOS |
Yes |
No |
Yes |
No |
Yes |
uSD |
Yes |
No |
Yes |
Yes |
Yes |
uSD SdHost and Arasan |
Yes |
No |
Yes |
? |
No |
USB1 |
Limited |
No |
No |
Yes |
No |
USB2/3 |
Yes |
No |
No |
Yes |
No |
USB Mass Storage |
Yes |
No |
No |
Yes |
No |
USB Keyboard |
Yes |
No |
No |
Yes |
No |
USB Ax88772b PXE/Network |
Yes |
No |
No |
Yes |
No |
USB SMSC95xx PXE/Network |
No |
No |
No |
Yes |
No |
Tiano |
Yes |
Yes |
Yes |
No |
No |
AArch32 Windows IoT |
No |
No |
Yes |
No |
No |
AArch64 Windows on Arm |
Limited |
No |
No |
No |
No |
AArch64 Linux |
Yes |
Limited |
No |
Yes |
No |
AArch32 Linux |
No |
No |
No |
Yes |
No |
AArch64 FreeBSD |
Yes |
No |
No |
Yes |
No |
AArch32 Minoca |
No |
No |
No |
No |
Yes |