image_pdfimage_print
Running U-Boot x86_64 Directly from ROM Without SPL

Running U-Boot x86_64 Directly from ROM Without SPL

Introduction U-Boot on x86_64 has traditionally relied on a Secondary Program Loader (SPL) to bootstrap into 64-bit mode. SPL starts in 16-bit real mode (as required by the x86 reset vector), transitions through 32-bit protected mode, sets up page tables, and finally jumps into the 64-bit U-Boot proper. A recent series adds support for running…

Streamlining U-Boot Workflows: Build and Summarize in One Shot

Streamlining U-Boot Workflows: Build and Summarize in One Shot

If you use U-Boot’s buildman tool frequently, you are likely familiar with the standard two-step dance. First, you run the build. Then, to really understand what happened—checking for code bloat, size changes, or new warnings—you run buildman -s to generate the summary. While buildman effectively has two modes (building and summarising), treating them as mutually…

U-Boot CLI Gets a Power-Up: Multi-level Undo/Redo and More

Have you ever found yourself wishing for a bit more “modernity” while editing environment variables or command strings at the U-Boot prompt? Our latest patch series brings a suite of enhanced editing features to U-Boot, designed to make the command-line experience much more forgiving and efficient. While these features improve the standard CLI, they were…

Cleaning Up ext4l: Organizing the Compatibility Layer

Cleaning Up ext4l: Organizing the Compatibility Layer

We’ve been working to improve the structure of the ext4l filesystem implementation in U-Boot, specifically targeting the large compatibility layer that allows us to reuse Linux kernel code. We’ve just posted a new 33-patch series that reorganises the compatibility stubs, moving them out of the monolithic ext4_uboot.h and into their proper locations within include/linux/. The…

Improving Text Editing in U-Boot’s Expo: Multiline Support and Cursor Independence

Improving Text Editing in U-Boot’s Expo: Multiline Support and Cursor Independence

As the “Expo” menu system in U-Boot continues to mature, we are moving beyond simple menu selections and into more complex user interaction. One area needing significant attention is text input—specifically, how we handle multi-line text editing and the underlying video console cursor. In a new 16-patch series, we overhaul the textedit object to support…

Multiple Vidconsole Contexts for Expo

Multiple Vidconsole Contexts for Expo

U-Boot’s expo subsystem provides a way to create graphical menus and forms for user interaction. One key component is the textline object, which allows users to enter text, for example when typing a password or a filename. This post describes recent work to support multiple vidconsole contexts, making it easier for expo to handle multiple…

Codman Gets Categories: Analyze Your U-Boot Build by Functional Area

Codman Gets Categories: Analyze Your U-Boot Build by Functional Area

U-Boot’s codman tool helps developers understand which source files and lines of code are actually compiled into a build. With the latest update, codman gains a powerful new capability: categorising source files by functional area and exporting analysis results to CSV for spreadsheet analysis. The Challenge U-Boot is a massive codebase with over 45,000 source files. When…

A Three-Phase PXE: Cleaning Up the Boot Process

A Three-Phase PXE: Cleaning Up the Boot Process

The PXE/extlinux boot mechanism is a cornerstone of U-Boot’s standard boot flow. It parses a configuration file (like extlinux.conf), presents a menu, and loads the kernel, initrd, and device tree for the chosen option. A typical configuration file looks like this: While functional, the traditional implementation relied heavily on callbacks: as the parser encountered a…

Taming the Beast: Refactoring Buildman for Maintainability

Taming the Beast: Refactoring Buildman for Maintainability

Buildman is the Swiss Army knife of U-Boot development. It handles the heavy lifting of building hundreds of boards in parallel, fetching the correct toolchains, and—perhaps most importantly—analysing the impact of your patches across git history. Whether you are checking for code bloat or verifying that a refactor doesn’t break a board you don’t own,…