image_pdfimage_print
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,…

Modernizing Buildman: A Case Study in AI-Assisted Refactoring

Modernizing Buildman: A Case Study in AI-Assisted Refactoring

U-Boot’s suite of Python tools—including buildman, patman, and binman—are critical parts of our development workflow. However, like any long-lived software project, technical debt accumulates. Buildman in particular was written a while ago, without much use of pylint and has grown significantly over the years. The accumulated pylint warnings, inconsistent naming conventions, and a monolithic structure…

Faster Tests and Better Debugging: Improvements to Malloc and test/py

Faster Tests and Better Debugging: Improvements to Malloc and test/py

Developing for U-Boot often involves chasing down elusive memory leaks and waiting for long test suites to finish. A recent series of 29 patches is aimed squarely at improving the developer experience in these areas. This series introduces powerful new malloc debugging tools, optimises the video subsystem, and significantly improves the performance of the test/py…

Ext4l: Bringing Full Write Support to the Linux-Ported Filesystem

Ext4l: Bringing Full Write Support to the Linux-Ported Filesystem

The effort to modernise U-Boot’s filesystem support continues with a major update to ext4l—the new ext4 driver ported directly from Linux. A recent series series of 30 patches that brings full write capabilities to the driver. So far ext4l has only supported reading. With this series, the driver now supports the full lifecycle of file…

uman: A New Developer Companion for U-Boot

uman: A New Developer Companion for U-Boot

Developing for U-Boot often involves juggling a variety of tools: buildman for compilation, patman for patch submission, test.py for integration testing, and git for version control. While these tools are powerful individually, orchestrating them—especially when dealing with complex CI pipelines and dependencies—can be tedious. To bridge these gaps, we are introducing uman (U-Boot Manager), a…