Platform firmware development faces a fundamental challenge: every silicon vendor brings its own initialization model, configuration scheme, and implementation approach, placing the burden of integration on platform developers. The Open Compute Project (OCP) has launched a community initiative to address this fragmentation: Open Platform Firmware (OPF) . This effort aims to make boot firmware more…
Slim Bootloader (SBL) is an open-source boot firmware built from the ground up for Intel x86 systems. Designed to be small, fast, and secure, SBL offers a modular approach that's particularly appealing for embedded developers working on Intel platforms. ( hey, no snickering, yes, "Intel-based embedded platforms" is a thing 😀) It initializes hardware components upon power-on and then launches a…
For something lighter, I wanted to mention a package of "UEFI games" called, appropriately enough, UEFIGame . The story is actually pretty hilarious— Mr. Alejandro Armas created UEFIGame ( on GitHub ) to get some experience building with EDK2 . He decided to make a set of games, or "challenges", where if you get them correct, the system will proceed to boot; otherwise the system shuts off! There…
On June 11, 2025, PCI-SIG launched PCIe Version 7.0! The specification is available for download by PCI-SIG members . PCI-SIG has taken a "tick-tock" approach as of late: a cycle of major electrical change followed by a refinement of that change. For example, PCIe Gen4 was a major electrical change, refined in PCIe Gen5; PCIe Gen6 was a major change, for example switching from 128b/130b encoding…
Introduction PlantUML is an open-source tool that allows users to create diagrams using plain text. Although its name includes the acronym "UML", it is hardly restricted to solely making UML diagrams. PlantUML supports the following diagram types: Sequence diagram , Use case diagram , Class diagram , Object diagram , Activity diagram , Component diagram , Deployment diagram , State diagram ,…
Some exciting news from the firmware conference scene. In a first, the Open Source Firmware Conference (OSFC) approached the UEFI Forum about holding a back-to-back joint conference. Both parties have agreed, and the mega-conference is on for October 7-10, 2025. From the UEFI Forum: Hello UEFI Forum Members, We are pleased to announce early bird registration for the UEFI 2025 Developers Conference…
Sometimes you'd like to do some work in the UEFI Shell, but you don't have one installed on a USB flash drive that's handy. Or , you're switching between machines of different Instruction Set Architecture (ISA) types, and the shell you have isn't built for the current machine. Or , you wouldn't mind building the shell for an ISA different from what you have, but you don't have the build tools…
The UEFI Forum updated all three of its specifications in December, 2024: ACPI, UEFI, and PI. As a refresher: Advanced Configuration and Power Interface (ACPI) - defines an interface between firmware and an Operating System for purposes of platform configuration and power control; replaced earlier specifications like the Plug and Play (PnP) specification, and Advanced Power Management (APM)…
AMD 's Open Silicon Initialization Library ( openSIL ) is a new initiative, currently underway, that has the following goals: replace the remaining closed-source components of the BIOS firmware stack with open-source alternatives serve as a hardware abstraction layer for any boot loader, not just UEFI Move Closed-Source to Open-Source Traditionally, AMD has supported silicon initialization with…
Previously, I wrote an article on an Introduction to Zephyr , a popular RTOS ( the most popular RTOS?) in the embedded systems space today, and how industry leaders like Intel and Google see Zephyr as a future standard for PC Embedded Controllers (ECs). In the spirit of diving deeper, this article continues the thread on Zephyr, this time building a "hello, world"-style application and testing it…
After my previous article on the keyboard controller interface , there was a global public outcry (well, OK, there was Rothman ) absolutely begging for a follow-up on the A20 gate. And so here we are. Anyway, how can you call yourself a BIOS blog and not have an article on the A20 gate??? First, an anecdote. The year was 1999. Dell Technologies hosted a regular technology forum for the engineering…
The original IBM PC (1981), and its immediate successor, the IBM PC/XT (1983), had keyboards limited to unidirectional communication: data flowed one-way from the keyboard to the motherboard. With the launch of the IBM PC/AT (1984), IBM added a keyboard controller, the venerable Intel 8042. The Intel 8042 implemented a bidirectional keyboard controller interface based on I/O ports 0x60 and 0x64 ,…
The Guide to the Software Engineering Body of Knowledge (SWEBOK) v4.0 was released on October 15, 2024. The Guide is a publication of the IEEE Computer Society ( IEEE CS ), and attempts to codify the collective knowledge, skills, techniques, methodologies, best practices, and experiences accumulated within the field of software engineering. Its goal is to bridge the divide between software…
This article describes how the EDK2 build reporting system works. I think it's a little known topic; most people just run a build and see some status output at the end. However, the reporting can be customized in powerful ways, mainly as described in §13 of the EDK2 Build Specification . Let's dive in. First, we need to define terminology. EDK2 distinguishes between a build log and build report :…
There is a long and complex series of steps that turn your EFI source code into bits sitting on a SPI part. Ever wonder how that works? I couldn't find one place that described the process from start to finish, so this post tries to do that. I am going to coalesce information from the following sources: UEFI Platform Initialization Specification EDK II Build Specification EDK II Flash Description…
One of the challenges of EDK2 development is its domain specificity. By that, I mean that EDK2 is laser-focused on one, and only one, thing: booting a computer to an OS target. As such, EDK2 is made up of many domain-specific programming languages, such as .VFR, .INF, .DSC, .FDF, and .DEC. Each of these technologies has its own BNF grammar , meaning its own set of keywords, tokens, and parse…
One of the most overloaded terms in the computer industry is interrupt . As in: IRQ5, NMI, APIC, LINT[1:0] , INT 13h , INTR , INT and INTA# —to what do all these terms refer? How are they related? That is going to be the subject of this article, where we will survey the history of interrupts on Intel architecture. This is not intended to be a deep-dive or an attempt to replace datasheets and…
I think a common stereotype of a software engineer is a guy, usually in a hoodie, furiously pounding away at a keyboard. As if the best software engineers are those who type really fast . Or, a top-notch software engineer is someone committing 1000+ lines-of-code per day. Maybe there is some truth to that in high-level problem domains, like web development, where it is easier to generate large…
In what has accidentally turned into a three-part series, I'm going to share one final article on decoding the wide variety of SD Cards—what do all the markings on an SD Card mean? I first wrote an article on the New SD Express Speed Classes , which discussed the concept of speed classes in general, and the new speed classes created for SD Express cards, in particular. Second, I wrote an article…
The complexity of the variety of Secure Digital ( SD ) Cards continues to confuse me, in particular the various card standards: SD, SDHC, SDXC, and SDUC. SD Cards are so important nowadays. They've become primary storage for many applications, like embedded applications and single-board computers ( SBC ), e.g., Raspberry Pi. They've replaced floppy disks, Zip disks , etc. as " sneaker net " media.…
Secure Digital (SD) Cards have become a most critical component to all of modern technology. They have supplanted all competitive technologies ( Sony Memory Stick , CompactFlash , MultiMedia Card , etc.) to be found in every type of portable, and even non-portable, computing device today. A recurring challenge has been how to make sure that the performance capability of a particular SD card…
The UEFI Fall 2023 Developers Conference & Plugfest was held October 9-12, 2023 in Hillsboro, Oregon. This was the first in-person UEFI Forum event since 2019, and therefore the first since before the COVID-19 pandemic. It was nice to get back to an in-person event, including all the benefits such an event provides, like networking and watercooler conversations. If you're not familiar with this…
The Vendor ID . Seems like a pretty prosaic topic. What's to say? Every vendor has a numeric identifier that is globally unique so that we can distinguish between all the vendors in the industry. This is not rocket science. What could go wrong? The PCI-SIG has done a fine job. From their Member Companies web page, you can search a list of all the vendors who make PCI devices and retrieve their…
Ghidra is a free and open-source tool for software reverse engineering. It is extensible, and allows for application-specific capabilities with small software bundles called extensions. It can be thought of as an open-source alternative to IDA Pro . Ghidra is written in Java, and uses the Swing framework for its GUI. Being Java-based, it is cross-platform, and therefore runs on Windows, Linux, and…
NASM, or the Netwide Assembler , is an open-source assembler for x86 CPUs. Why is this important? NASM is a prerequisite for building with EDKII , and also popular in many other contexts. NASM has an amazing legacy, dating back to 1996. Having started off as a modest hobbyist project, today it is arguably the most important x86 assembler. In bygone days of yore, BIOS engineers used either the…