uefi porting techniques on arm socs · 01/06/2011 · •introduction •power-on process •boot...
TRANSCRIPT
![Page 1: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/1.jpg)
presented by
UEFI Porting Techniques on ARM SoCs
UEFI PlugFest– March 18-22, 2013 Presented by Prax Fang
(American Megatrends)
UEFI Spring PlugFest – March 2013 www.uefi.org 1
Updated 2011-06-01
![Page 2: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/2.jpg)
Agenda
• Introduction
• Power-on Process
• Boot to OS
• Porting Guidelines
• Summary
UEFI Spring Summit – March 2013 www.uefi.org 2
![Page 3: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/3.jpg)
Introduction
UEFI Spring PlugFest – March 2013 www.uefi.org 3
![Page 4: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/4.jpg)
U-Boot vs UEFI
UEFI Spring PlugFest – March 2013 www.uefi.org 4
1. Performs platform
initialization
2. Sets the boot
arguments
3. Passes control to
the kernel image
U-Boot
1. Contains U-Boot
base features
2. Cross-platform build
environment
3. Modular design
4. Compatible with
existing x86 module
UEFI/Aptio
![Page 5: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/5.jpg)
Build Environment Requirements
UEFI Spring PlugFest – March 2013 www.uefi.org 5
Python
![Page 6: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/6.jpg)
Supported Framework
• Code Name – CortexA8 – CortexA9 – CortexA15 …
• Instruction Set – Arm V7 – Arm 9 …
UEFI Spring PlugFest – March 2013 www.uefi.org 6
![Page 7: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/7.jpg)
Power-on Process
UEFI Spring PlugFest – March 2013 www.uefi.org 7
![Page 8: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/8.jpg)
Power-on Process
• There are two cases of booting UEFI on ARM: – UEFI as the final stage
• Some vendor supplied firmware does initialization and then gives control to a process that provides a basic UEFI layer to provide UEFI boot.
– UEFI from power-on • UEFI is the only firmware image does the entire
boot process from the first instruction executed after power-on to the start of the operating system on your platform
UEFI Spring PlugFest – March 2013 www.uefi.org 8
![Page 9: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/9.jpg)
Power-on Process
• Example : TI OMAP Series
UEFI Spring PlugFest – March 2013 www.uefi.org 9
Power-On
1. Performs minimal clocks, memories 2. Loads the x-loader into SRAM and executes it
HW Vendor ROM Firmware
1. Sets up the pin muxing 2. Initializes clocks and memory 3. Loads the U-Boot into SRAM and executes it
X-loader
1. Performs some additional platform initialization 2. Sets the boot arguments 3. Passes control to the kernel image
U-Boot OS
Kernel
![Page 10: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/10.jpg)
Power-on Process
• UEFI as the final stage power-on flow: • Example : TI OMAP Series
UEFI Spring PlugFest – March 2013 www.uefi.org 10
Power-On
SEC PEI DXE BDS OS
Kernel
HW Vendor ROM Firmware
X-loader
Power-On HW Vendor
ROM Firmware X-loader U-Boot
OS
Kernel
Traditional:
UEFI:
![Page 11: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/11.jpg)
Power-on Process
• UEFI power-on flow: – Follows traditional UEFI boot sequence
through SEC through BDS • for more info please visit the website.
www.uefi.org
– Does same initialization of the platform throughout the phases • Such as: clock, memory and cpu initialization
UEFI Spring PlugFest – March 2013 www.uefi.org 11
Power-On SEC PEI DXE BDS OS
Kernel
![Page 12: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/12.jpg)
Simplified UEFI Boot
– Not all UEFI phases are essential:
• PEI phase can be skipped altogether if DRAM initialization is done in the SEC phase
UEFI Summer Summit – July 2012 www.uefi.org 12
Power-On SEC PEI DXE BDS OS
Kernel
Power-On SEC DXE BDS OS
Kernel
![Page 13: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/13.jpg)
Boot to OS
UEFI Spring PlugFest – March 2013 www.uefi.org 13
![Page 14: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/14.jpg)
Boot to OS
• Follow the UEFI Framework – Look for supported boot devices
• There is a FAT32 partition with an EFI directory • Inside it there is the BOOT folder that contains a
file BootArm.efi(UEFI Boot Loader) • You can obtain UEFI Boot Loader by your OS.
– Load image into memory and executes it • Image is verified if the Secure Boot is enabled
– Pass control to the UEFI Boot Loader • The loader does the rest of the OS boot process
UEFI Spring PlugFest – March 2013 www.uefi.org 14
![Page 15: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/15.jpg)
Porting Guidelines
UEFI Spring PlugFest – March 2013 www.uefi.org 15
![Page 16: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/16.jpg)
Porting Guidelines
• Follow the porting guide released by SoC vendor to do the SoC initialization.
– Using the porting guide you can create the required UEFI libraries
– Very similar to x86 porting
• If U-Boot is available, use it as a reference to create the UEFI drivers and interfaces
UEFI Spring PlugFest – March 2013 www.uefi.org 16
![Page 17: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/17.jpg)
Follow the steps to set the chip
• Example : Trigger software cold reset
– Source : TI porting guide
UEFI Spring PlugFest – March 2013 www.uefi.org 17
![Page 18: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/18.jpg)
Follow the steps to set the chip
• Example : Trigger software cold reset
– Target : UEFI ResetSystem Library
UEFI Spring PlugFest – March 2013 www.uefi.org 18
EFI_STATUS
LibResetSystem (
IN EFI_RESET_TYPE ResetType,
IN EFI_STATUS ResetStatus,
IN UINTN DataSize,
IN CHAR16 *ResetData OPTIONAL
)
{
:
MmioOr32 (PRM_RSTCTRL, BIT1);
:
}
![Page 19: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/19.jpg)
Porting Guidelines
• Use the U-boot code
– Most ARM vendors provide U-Boot code that initializes the following components:
• cpu, board, serial, dram…etc
– Using this U-Boot code as a reference, you can develop UEFI code to use these peripherals
UEFI Spring PlugFest – March 2013 www.uefi.org 19
![Page 20: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/20.jpg)
Debugging Tips for UEFI on ARM
• Example : Write Debug Messages to Serial
– Source : U-Boot Serial Code
UEFI Spring PlugFest – March 2013 www.uefi.org 20
static void do_boot_linux ()
{
:
debug (“## Transferring control to Linux … \n”);
:
}
![Page 21: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/21.jpg)
Debugging Tips for UEFI on ARM
• Example : Write Debug Messages to Serial
– Target : UEFI Code
UEFI Spring PlugFest – March 2013 www.uefi.org 21
EFI_STATUS
SomeFunction (
…
)
{
:
DEBUG ((EFI_D_INFO, “This is a debug message\n”));
:
}
• The serial debug messages for UEFI should be very familiar to x86 developers
![Page 22: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/22.jpg)
Summary
UEFI Spring PlugFest – March 2013 www.uefi.org 22
![Page 23: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/23.jpg)
Summary
• UEFI is a neutral boot firmware capable of booting both EFI and non-EFI compliant Operating Systems – Certain OSes like Windows already require UEFI for
SecureBoot
• Porting on an ARM chipset is similar to porting an x86 platform – There are porting guides and reference code provided by the
chip vendors
• ARM platforms can also use common debugging techniques like serial debug messages and JTAG debuggers
• UEFI also allows re-use of all features developed for x86 if it is hardware independent
UEFI Spring PlugFest – March 2013 www.uefi.org 23
![Page 24: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/24.jpg)
Questions?
UEFI Spring PlugFest – March 2013 www.uefi.org 24
![Page 25: UEFI Porting Techniques on ARM SoCs · 01/06/2011 · •Introduction •Power-on Process •Boot to OS •Porting Guidelines •Summary UEFI Spring Summit – March 2013 2 . Introduction](https://reader036.vdocuments.net/reader036/viewer/2022071609/61487eaa2918e2056c22b9e3/html5/thumbnails/25.jpg)
Thanks for attending the UEFI Spring PlugFest 2013
For more information on the Unified EFI Forum and UEFI Specifications, visit http://www.uefi.org
presented by
UEFI Spring PlugFest – March 2013 www.uefi.org 25