2. Slide 2
Introduction to UEFI?
●What is UEFI?
●What is EDKII?
●Why use UEFI?
●What is the ARM Landing Team's involvement?
3. Slide 3
What is UEFI?
Unified Extensible Firmware Interface
UEFI is an interface spec., not an implementation
"UEFI will be a specification detailing an interface that helps hand
off control of the system for the pre-boot environment [...] to an
operating system[...].
UEFI will provide a clean interface between operating systems and
platform firmware at boot time"
www.uefi.org
4. Slide 4
Community effort
Collaboration of 11 vendors
● AMD
● American Megatrends Inc.
● Apple Computer, Inc.
● Dell
● Hewlett Packard
● IBM
● Insyde
● Intel
● Lenovo
● Microsoft
● Phoenix Technologies
5. Slide 5
UEFI Protocols
UEFI specification defines Protocols
● Protocols are interfaces for drivers and services
● Every protocol has a unique GUID
● GUID is a Universally Unique Identifier (UUID)
defined by the UEFI spec
● A protocol can have multiple implementations
● eg. multiple file formats
● Protocols can depend on other protocols
● e.g. USB depends on PCI
6. Slide 6
What is EDKII?
EDKII is Intel's implementation of the UEFI spec
Open Source BSD License
Multi-platform
● ARM: Versatile Express, BeagleBoard, Samsung
Origen, …
● Intel: Apple Mac, many PC vendors, ...
It's a Boot Loader
● It can perform "Bare Metal" initialisation
● eg. Versatile Express
● Or it can act as a 2nd/3rd stage Boot Loader
7. Slide 7
Support for many OS types
● Linux
● Windows
● MacOS
Supports 64bit and Unicode
Linux image support
● zImage
● initrd
● ATAGS
● Device Tree
EDKII Features
8. Slide 8
EDKII Features (cont.)
Modular Design
● Easy to contribute new drivers without modifying
other code
● You can minimise footprint by removing unneeded
modules
10. Slide 10
EFI Shell
EFI Shell is a small EFI application
● Can be configured to run at boot
● Command Line utility
EFI Shell is defined by the UEFI specification
● Standard commands across all platforms
11. Slide 11
EFI Shell features
What can the EFI Shell do?
•Load drivers and protocol implementations
•Memory inspection and modification
•File editor
•Load OS Boot Loader
i.e. boot and operating system
•Run scripts
•Store variables in persistent storage
12. Slide 12
SCT - Self Certification Test
What is SCT?
● A framework to allow automated testing of UEFI
● A specification for user defined tests
● Compliance test suite
•SCT agent
• Runs on the target
• Allows automated testing
•EMS (UEFI Management Side)
• Runs on the test host
• Allows remote management
13. Slide 13
Why use UEFI on ARM?
UEFI is important for the ARM server effort
Server vendors require a unified approach to hardware
• i.e. vendors want each server to look the same to
the OS
UEFI is fast
•It's faster than U-Boot
UEFI is small
•It's compressed
•Smaller than U-Boot when built with minimal options
14. Slide 14
How does UEFI compare to U-Boot ?
Feature U-Boot UEFI / EDKII
Boot Linux with ATAG / initr / FDT Y / Y / Y Y / Y / Y
Shell / File Editor Y / N Y / Y
Start standalone apps Y Y
Boot from MMC / flash / USB Y / Y / Y Y / Y / Y
Fat32 / ext2 Y / Y Y / in development
TFTP / PXE Y / Y Y / Y
License GPL BSD
GDB support Y in development
Spec available N Y
Toolchains GCC GCC, RVCT, XCode
Number of platforms in repo 20+ 5
15. Slide 15
ARM Landing Team
Hosts GIT trees for EDKII ports
● Based on Intel's Tianocore project
● Stable "History Tree"
http://git.linaro.org/gitweb?p=arm/uefi/uefi.git
● Working Tracking Tree
http://git.linaro.org/gitweb?p=arm/uefi/uefi-next.git
Support for ARM Ltd. Platforms
● Versatile Express A5 & A9 (available now)
● Versatile Express A15 (coming soon)
Hosting of Member ports
16. Slide 16
ARM Landing Team (cont.)
Tools Integration
● We're working with the Infrastructure Team to
integrate UEFI into the Linaro tools
● LT is hosting two sessions at this Connect event to
define and progress the work:
● 9am – Salon 1 - Hardware Pack Extensions
● 11am – Salon 1- Add UEFI Support to Linaro
Tools
LAVA Integration
● We're working with the Validation Team to allow
LAVA to use UEFI to boot platforms
17. Slide 17
Summary
UEFI is a widely adopted specification
● It's important for ARM server
EDKII is a popular implementation of the UEFI spec
● Open Source
● It's a Boot Loader
Linaro are helping ARM support UEFI.
18. Slide 18
Links
Unified EFI Forum
● http://www.uefi.org/home/
Tianocore project on Sourceforge
● http://sourceforge.net/apps/mediawiki/tianocore/
Linaro ARM Landing Team
● https://wiki.linaro.org/ARM/UEFI
● http://git.linaro.org/gitweb?p=arm/uefi/uefi-next.git