---?image=assets/images/gitpitch-audience.jpg @title[Title-UEFI Overview]
Using class=slide-title
tianocore.org Note: PITCHME.md for UEFI / EDK II Training
Copyright (c) 2018, Intel Corporation. All rights reserved.
Redistribution and use in source (original document form) and 'compiled' forms (converted to PDF, epub, HTML and other formats) with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code (original document form) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.
-
Redistributions in compiled form (transformed to other DTDs, converted to PDF, epub, HTML and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY TIANOCORE PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TIANOCORE PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@title[Lesson Objective]
@fa[certificate gp-bullet-green] Review PI and UEFI Boot Process
@fa[certificate gp-bullet-cyan] Answer web-based training related questions
@fa[certificate gp-bullet-yellow] Answer: Where does Intel® FSP Fit?
@fa[certificate gp-bullet-magenta] What’s new in UEFI.org
---?image=assets/images/binary-strings-black2.jpg @title[UEFI Boot Flow Section]
@title[UEFI Boot Flow]
Press "S" to see Speaker notes. Speaker notes are added using key word "Note:" at the ende of the slide and before the next slide
UEFI and Platform Initialziation (PI) Boot Execution Flow
UEFI and Platform Initialziation (PI) Boot Execution Flow
Note: The next set of slides will detail the phases of the boot execution flow for UEFI
@title[UEFI Boot Flow Sec]

Note:
SEC Function
Consumes the Reset vector on IA
Serving as the root of trust in the system
Initial code that takes control of the system
May choose to authenticate the PEI Foundation
+++ @title[SEC - characteristics ]
- SEC Consumes the Reset vector
- Serving as the root of trust
- May choose to authenticate the PEI Foundation
- Init the APs waking stub
- Early microcode update
- Collect BIST (Built-in Self Test)
- Other charactistics of SEC
- Executed in place from flash
- Written in assembly (16-bit & 32-bit) on Intel Architecuture -
Note:
SEC Function
Consumes the Reset vector on IA Serving as the root of trust in the system Initial code that takes control of the system May choose to authenticate the PEI Foundation
Switch to 32-bit flat mode Initialize the Boot strap processor BSP Initialize PEI temporary memory NEM / CAR Transfer control to PEI Core
SEC will have Platform specific functions
- AP waking stub
- Early microcode update
- Collect BIST (Built-in Self Test)
- Other charactistics of SEC
- Executed in place from flash
- Written in assembly (16-bit & 32-bit) +++ @title[SEC - Firmware Terms ]
- Firmware Volume (FV)
- The basic storage with a firmware device
- Firmware File System (FFS)
- Describes the organization of files within a FV
Note:
-A Firmware Volume (FV) is a logical firmware device. The basic storage
repository for data and/or code is the firmware volume. Each firmware volume is organized into a
file system. As such, the file is the base unit of storage for firmware
-Firmware Volume (FV)
A firmware file system (FFS) describes the organization of files and (optionally) free space within
the firmware volume. Each firmware file system has a unique GUID, which is used by the firmware
to associate a driver with a newly exposed firmware volume
@title[UEFI Boot Flow PEI]

Note:
PEI Function
-
PEI Primary goals:
- Discover boot mode (Normal, S3, Recovery)
- Discover and initialize some RAM that won’t be reconfigured
- Discover location of FV(s) containing DXE Core & Architecture Protocols and Launch DXE core
-
PEI Phases –
- Pre – memory Init
- Memory reference code (MRC)
- Post Memory Init
Components:
- Binaries: PEI Core and PEI Modules (PEIMs) PEIMs are modules scheduled by the PEI core in the early phase of platform initialization. PEIMs are typically executed in place before system memory is available.
- On IA running in No Eviction mode (NEM) aka. Cache as RAM
Interfaces: Methods of Inter-PEIM communication Core set of services (PeiServices), PEIM to PEIM Interfaces (PPIs), and simple Notifies (no timer in PEI)
@title[UEFI Boot Flow PEI-DXEIPL & Hobs ]

Note:
PEI - Hobs
Transition to DXE :
- HOBS – a series of data structures in memory, created during PEI, that describe platform features, configuration, or data. HOBs are produced during PEI, and read-only during DXE (consumer). +++ @title[UEFI Boot Flow PEI-DXEIPL ]
- No hard coded addresses allowed
- Find Largest Physical Memory HOB
- Ideally this should be near Top Of Memory (TOM)
- Allocate DXE Stack from Top of Memory
- Build HOB that describes DXE Stack
- Search FVs from HOB List for DXE Core
- Load DXE Core into Memory (PE/COFF)
- Build HOB that describes DXE Core
- Switch Stacks and Handoff to DXE Core
@title[UEFI Boot Flow DXE]

Note:
DXE
Works after system memory has been discovered and initialized DXE drivers are typically stored in flash in compressed form and must be decompressed into memory before execution +++ @title[DXE Characteristics]
- Consumes HOB List from PEI
- Builds UEFI and DXE Service Tables
- EFI System Table
- UEFI Boot Services Table & UEFI Runtime Services Table
- Hands off control to the DXE Dispatcher
- and more . . .
Note: DXE Characteristics
-
Consumes HOB List from PEI
-
Builds UEFI and DXE Service Tables
-
EFI System Table
-
UEFI Boot Services Table & UEFI Runtime Services Table
-
DXE Services Table
-
Makes Memory-Only Boot Services Available that will be in memory until ExitBootServices()
-
Hands off control to the DXE Dispatcher
-
Requires access to Firmware Volumes
-
Requires LoadImage(), StartImage(), Exit()
-
DXE Drivers will build the Architectural Protocols
-
May require decompression service
-
DXE FOUNDATION Theory of Operation
-
The First goal is to Initialize the Platform – Initialize the Chipset and the platform
-
We want to Load Drivers to construct an environment that can support boot manager and boot the OS
@fa[arrows gp-tip](Press F to go Fullscreen)
@fa[microphone gp-tip](Press S for Speaker Notes)
- Code Presenting |
- Repo Source, Static Blocks, GIST |
- Custom CSS Styling |
- Slideshow Background Image |
- Slide-specific Background Images |
- Custom Logo, TOC, and Footnotes |
---?code=sample/SampleApp/SampleApp.c&lang=c++&title=C File
@[30,32-36](Present code found within any repo source file.) @[38-48](Without ever leaving your slideshow.) @[53-60](Using GitPitch code-presenting with (optional) annotations.)
Note: example of a UEFI application in C
---?code=sample/go/server.go&lang=golang&title=Golang File
@[1,3-6](Present code found within any repo source file.) @[8-18](Without ever leaving your slideshow.) @[19-28](Using GitPitch code-presenting with (optional) annotations.)
@title[JavaScript Block]
JavaScript Block
// Include http module.
var http = require("http");
// Create the server. Function passed as parameter
// is called on every request made.
http.createServer(function (request, response) {
// Attach listener on end event. This event is
// called when client sent, awaiting response.
request.on("end", function () {
// Write headers to the response.
// HTTP 200 status, Content-Type text/plain.
response.writeHead(200, {
'Content-Type': 'text/plain'
});
// Send data and end response.
response.end('Hello HTTP!');
});
// Listen on the 8080 port.
}).listen(8080);
@[1,2](You can present code inlined within your slide markdown too.) @[9-17](Displayed using code-syntax highlighting just like your IDE.) @[19-20](Again, all of this without ever leaving your slideshow.)
---?gist=onetapbeyond/494e0fecaf0d6a2aa2acadfb8eb9d6e8&lang=scala&title=Scala GIST
@[23](You can even present code found within any GitHub GIST.) @[41-53](GIST source code is beautifully rendered on any slide.) @[57-62](And code-presenting works seamlessly for GIST too, both online and offline.)
- Code Presenting
- Custom CSS Styling
- Slideshow Background Image
- Slide-specific Background Images
- Custom Logo TOC Footnotes
- Private Repos
- Private URLs
- Password-Protection
- Image Opacity
- SVG Image Support
---?image=assets/images/gitpitch-audience.jpg&opacity=100
@title[Download this Template!]
@title[lastslide]
- Summary
- Q & A
- Tianocore Logo
- Acknowledgements
@title[Summary]
@fa[certificate gp-bullet-green] Review PI and UEFI Boot Process
@fa[certificate gp-bullet-cyan] Answer web-based training related questions
@fa[certificate gp-bullet-yellow] Answer: Where does Intel® FSP Fit?
@fa[certificate gp-bullet-magenta] What’s new in UEFI.org
---?image=assets/images/gitpitch-audience.jpg @title[Questions] 
---?image=assets/images/gitpitch-audience.jpg @title[Logo Slide]

@title[Backup]
@title[Acknowledgements]
/**
Redistribution and use in source (original document form) and 'compiled' forms (converted
to PDF, epub, HTML and other formats) with or without modification, are permitted provided
that the following conditions are met:
Redistributions of source code (original document form) must retain the above copyright
notice, this list of conditions and the following disclaimer as the first lines of this
file unmodified.
Redistributions in compiled form (transformed to other DTDs, converted to PDF, epub, HTML
and other formats) must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the
distribution.
THIS DOCUMENTATION IS PROVIDED BY TIANOCORE PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TIANOCORE PROJECT BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
Copyright (c) 2018, Intel Corporation. All rights reserved.
**/