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

Silencing the Sphinx: Cleaner Documentation Builds

Silencing the Sphinx: Cleaner Documentation Builds

If you have ever run make htmldocs in U-Boot, you are likely familiar with the “wall of text” it produces. Between the standard Sphinx output, sub-make messages, and custom progress indicators, the build process has traditionally been very noisy. While verbose output can be useful for debugging the toolchain itself, it is a hindrance when…

Modernising Allocation: U-Boot Upgrades to dlmalloc 2.8.6

Modernising Allocation: U-Boot Upgrades to dlmalloc 2.8.6

For over two decades—since 2002—U-Boot has relied on version 2.6.6 of Doug Lea’s malloc (dlmalloc, old docs) to handle dynamic memory allocation. While reliable, the codebase was showing its age. In a massive 37-patch series, we have finally updated the core allocator to dlmalloc 2.8.6. This update brings modern memory efficiency algorithms, better security checks,…

Cleaning up the Nulls: Introducing ofnode Stubs for Non-DT Builds

Cleaning up the Nulls: Introducing ofnode Stubs for Non-DT Builds

In the world of U-Boot, the Device Model (DM) and Device Tree (DT) are the standard for hardware description. However, U-Boot runs on a massive variety of hardware, including constrained systems where full Device Tree support (OF_REAL) might be disabled. A recent patch cleans up how the core handles these “no-Device-Tree” scenarios, ensuring that code…

Introducing Codman: A Deep Dive into U-Boot Build Analysis

Introducing Codman: A Deep Dive into U-Boot Build Analysis

U-Boot is a massive project. With thousands of files, nearly endless configuration possibilities, and complex Kconfig dependencies, a single board configuration often only compiles a small fraction of the total source tree. For developers and maintainers, this complexity often leads to difficult questions: Simply searching for CONFIG_ macros or header inclusions is rarely enough. The…

Tidying up the FIT: Refactoring, Testing, and Shrinking U-Boot

Tidying up the FIT: Refactoring, Testing, and Shrinking U-Boot

Flattened Image Trees (FIT) are a cornerstone of modern U-Boot booting, offering a flexible way to package kernels, device trees, ramdisks, and firmware. However, the code responsible for printing information about these images—the output you see when running mkimage -l or iminfo—has been around for a long time. As with any legacy code, it had…

New video command and unified embedded image handling

New video command and unified embedded image handling

U-Boot has long supported embedding a graphical image directly into the binary – like the boot logo and the recently added BGRT (Boot Graphics Resource Table) image for EFI systems. But the way these images were handled was a bit of a mixed bag, with different patterns for different images and custom boilerplate for each…

Enhancing EFI Boot and Developer Experience

Enhancing EFI Boot and Developer Experience

We’ve just rolled out a series of updates aimed at improving the U-Boot EFI application, with a special focus on streamlining the testing and debugging process, particularly for ARM platforms. This batch of 24 patches introduces several quality-of-life improvements, from better debugging tools to more robust boot procedures. Let’s dive into the key changes. Streamlining…