OpenWrt support for STM32MP updated and STM32MP2 added

Bootlin is happy to announce a new release of our OpenWrt feed openwrt-feed-st, which  provides integration of ST’s STM32MP platforms with the OpenWrt build system. This new release openstlinux-6.1-openwrt-master-mpu-v24.06.26 updates the BSP software components and adds support for the new STM32MP2 platform.

ST BSP Update

The components of the ST BSP were updated as follows:

STM32MP2 support

A few months ago STMicroelectronics released its new STM32MP25 processor family. It is composed of ARM64 processors based on single or dual Arm Cortex-A35 cores, combined with one Cortex-M33 and a wide range of peripherals.

A first evaluation board is already available, the STM32MP257F-EV1.

Our feed openwrt-feed-st provides 2 configurations for this STM32MP257F-EV1 evaluation board:

  • STM32MP257F-EV1: minimal configuration for the STM32MP257F-EV1
  • STM32MP257F-EV1-DEMO: more complete configuration for the STM32MP257F-EV1 which mainly includes the OpenWrt Web configuration interface.

The documentation in the openwrt-feed-st feed describes all steps to fetch the OpenWrt code, build it, flash the image and boot the board, with details for both STM32MP1 and STM32MP2 platforms.

Getting support

The issue tracker can be used to report bugs or get support.

Do not hesitate to contact us if you need embedded Linux support on ST platforms and/or on OpenWrt related topics!

Upgrading Snagboot to a fully-fledged factory flashing tool

Snagboot is a fully open-source and vendor-agnostic recovery and flashing tool released by Bootlin in 2023. It is composed of snagrecover and snagflash, which respectively run U-Boot on a target platform using USB recovery mode and flash non-volatile storage devices using USB gadgets exposed by U-Boot.

While the combination of snagrecover and snagflash allows to reflash a board during development, it doesn’t fully address the needs of factory flashing: fast processing of multiple boards in parallel, monitoring of individual board statuses during the flashing process, and compatibility with Windows, which is the most often used operating system on factory floors.

Back in March 2024, Texas Instruments contacted Bootlin with a project request: to grow Snagboot into an efficient factory flashing tool. The goal was for factory operators to have a way of efficiently flashing groups of devices using a single user-friendly interface.

While this project could have been executed internally by engineers at Texas Instruments, the team at TI realized the importance of keeping this work agnostic to TI and driving this truly as an Open Source project. We thank TI for partnering with us and sponsoring us to deliver this tool that will cater to the flash writing needs of a variety of small and medium sized manufacturing houses & industry in general.

Consequently, Bootlin is proud to release the 2.0 version of Snagboot, which includes a factory flashing tool that runs on both Windows and Linux!

This tool supports a wide range of platforms from different vendors. All boards using supported SoCs are themselves supported without any extra effort, provided proper U-Boot support exists and USB recovery ports are routed in hardware.

For example, the TI AM62 and AM64 SoCs are fully supported by Snagboot. Thus, all boards using those platforms are supported, including the TI evaluation boards for those processors as well as the popular open-hardware BeaglePlay platform.

Groups of devices can be recovered and flashed in parallel, and the flashing process can be monitored from  a convenient GUI:

This tool is called Snagfactory. It is fully integrated into the Snagboot package. As an added bonus, the snagrecover and snagflash commands now work on Windows as well!

An efficient and standardized factory flashing procedure is a valuable asset for device manufacturers. Not only does it affect unit production rates, it also increases reliability by removing variability from the flashing process.

A tool like Snagboot also provides better accountability, by storing detailed logs of each and every factory flashing operation. This facilitates auditing of these operations, as well as post-incident analysis. Snagfactory configuration files lend themselves well to versioning, which means that each flashing operation can be tied back to a specific configuration.

Moreover, the open-source and vendor-agnostic nature of Snagfactory will make it possible for bug fixes and new features to travel across company boundaries, thereby lending a competitive advantage to those companies who chose to participate in its development.

Features supported by Snagfactory include:

  • Ordered pipelines of factory flashing tasks.
  • GPT partitioning.
  • Flashing huge image files (larger than the Fastboot RAM buffer).
  • Flashing bmap sparse images.
  • eMMC hardware partitioning.
  • Prompting for operator action at a specific step in the factory flashing process.
  • Storing factory flashing results as detailed log files for accountability and troubleshooting purposes.

Installation instructions are available for Linux and Windows in the Snagboot documentation, which also includes a user manual for Snagfactory.

The configuration file format allows users to design pipelines of flashing tasks, to be applied in order to each device.

The following flashing tasks are currently supported:

  • gpt: write a GPT partition table to an eMMC or SD card
  • flash: write a binary image to a storage device or partition; supports specifying an offset, flashing bmap sparse files, and flashing huge images (larger than RAM buffer size)
  • mtd-parts: write an MTD logical partition scheme to the U-Boot environment; this allows targeting MTD partitions by name in the « flash » command
  • emmc-hwpart: burn an MMC hardware partition configuration; this is an irreversible operation; General Purpose partitions and EUDA are supported
  • prompt-operator: pause the factory flashing process for the board and prompt the operator to complete an action before resuming the pipeline
  • reset: runs a soft reset on the target and recovers the board
  • run: runs a Fastboot command on the target; arbitrary U-Boot commands can also be executed using oem_run

A special thanks goes out to Texas Instruments for funding and supporting this awesome project! We plan to continue growing Snagfactory alongside the original Snagboot tools, so don’t hesitate to contribute if you are so inclined.

Welcome to Thomas Bonnefille

Thomas BonnefilleWe’re happy to announce that Thomas Bonnefille has just joined the Bootlin engineering team!

Thomas Bonnefille recently graduated from ENSEEIHT, an engineering school based in Toulouse, France. During his studies, he actively participated to 7Robot, the ENSEEIHT robotics club, thanks to which he got involved in his first embedded Linux project: building a robot that ranked 9 out of a hundred participating teams at the French Robotic Cup.

Following this success, Thomas did his final internship at Bootlin, during which he worked on Buildroot, U-Boot and Linux kernel support and drivers for several RISC-V platforms. During his internship, he also got the chance to following many of the training courses offered by Bootlin.

Thomas is now joining our team as a full-time engineer, to work with our growing team based in Toulouse, to help our customers on numerous embedded Linux projects.

Thomas Bonnefille is also the fourth Thomas to work at Bootlin, after Thomas Petazzoni, Thomas Perrot and Thomas Richard! 🙂

Please see Thomas’s Bootlin page and LinkedIn profile.

Welcome to Antonin Godard

After Mathieu Dubois-Briand and Olivier Benjamin, a third engineer joined this September our team at our Lyon office in France: we’re happy to welcome Antonin Godard.

After graduating from the french Telecom Paris engineering school in 2020, Antonin spent 4 years at Witekio, exclusively dedicated to embedded Linux system development. He has primarily been involved in Yocto-based projects, designing and architecturing BSPs for various customers and maintaining them. He also has experience with secure boot, CI/CD , CVE analysis, OTA updates and automated testing. Antonin also worked for a year in Witekio’s Seattle office, where he pursued his work on Yocto-based projects for American customers.

Over the years, Antonin got to work with Xilinx Zynq Ultrascale and NXP Layerscape SoCs as well as some experience with i.MX and x86 based-SoCs – for which he got bootloaders (U-boot / Grub), the Linux kernel and various open-source software up and running.

As part of his work at Bootlin, Antonin has already been involved in contributing to the Yocto Project documentation, and he will bring his expertise to help our customers on all embedded Linux topics. See Antonin’s profile on our website for more details.

Once again, welcome Antonin!

Bootlin Live #0, live video podcast on embedded Linux

We’re happy to announce that we’re starting Bootlin Live, a (hopefully) regular live video podcast that will cover embedded Linux topics in the broadest sense, as we aim at also covering open-source RTOS, hardware, and other related topics relevant to embedded open-source developers. Save the date of Sep 30 at 6 PM UTC+2 for the first episode and read on for more details on this new initiative.

Continue reading “Bootlin Live #0, live video podcast on embedded Linux”

Snagboot 1.3 release overview

Snagboot, Bootlin’s vendor-agnostic recovery tool for embedded platforms, has been under continued development since its first release in May 2023. Let’s take a look at the main changes brought by version 1.3, published just a few days ago.

Passing USB device paths

Both snagrecover and snagflash previously relied on USB vendor ID:product ID addresses to find recovery devices exposed by boards. This was problematic in the case where two boards with the same vendor and product IDs had to be recovered or reflashed simultaneously. To solve this issue, we added the ability for snagrecover and snagflash to use USB paths of the form bus:port1-port2-... instead.

The main challenge we faced while implementing this feature was integration into the NXP i.MX recovery process. In Snagboot 1.2, i.MX recovery relied on the Python ctypes bindings to the hidapi library. These bindings did not allow searching for an HID device using bus/port paths. This, and other issues we encountered with hidapi bindings led us to drop them entirely and reimplement a partial HID library inside the Snagboot codebase.

i.MX53 support

Martin Fuzzey contributed a set of changes to snagrecover that added support for the i.MX53 family of SoCs. A few changes to the protocol layer of Snagboot were necessary since these SoCs used a raw USB device instead of an HID device.

Improvements to the AM335x setup script

Recovering AM335x platforms with Snagboot requires setting up a recovery shell using a special helper script. We’ve cleaned up the syntax and some of the logic of this script to bring it closer to POSIX compatibility and allow non-Bash shells such as Fish shell to run it successfully.

These are the main changes brought by v1.3. If you’re curious to see more, you can view the full changelog here. Thank you to all the people who contributed to this release!

Welcome to Thomas Richard

Welcome on board!Bootlin is really happy to welcome another engineer in its team: Thomas Richard, who joined us on July 3, 2023 (missing a participation to the Embedded Linux Conference Europe by just one week!).

Thomas graduated from INSA Toulouse in 2015, and then started his embedded software engineer career at Kontron, where he worked on numerous aspects of embedded Linux system development:

  • Thomas developed an OpenWRT based embedded Linux OS for railway systems, including virtualization support and security features such as TPM-based secret sealing, Host Intrusion Detection System (HIDS), and Linux Security Modules (LSM)
  • Thomas used both Yocto and Buildroot as build systems to create custom embedded Linux systems, in particular to support VME/VPX boards.
  • Thomas has developed several Linux kernel drivers, for GPIOs, HDLC, UART, watchdog, and more, to address the needs of several Kontron products
  • Thomas has also worked on cyber-security challenges, by creating a streamlined process to merge results from different vulnerability scanners and generate comprehensive reports for customers, to allow them to keep their embedded Linux systems updated in terms of security fixes.

Thomas is joining our team located in Lyon, France, where he will work at our office with Alexandre Belloni, Grégory Clement, Théo Lebrun and Kamel Bouhara, and of course with the rest of our team in Toulouse and remote.

For more details, see Thomas’ page on Bootlin.com or his LinkedIn profile.

Releasing Snagboot: a cross-vendor recovery tool for embedded platforms

Recovering and reflashing a bricked board can be a tedious process. It often involves flashing an SD card to bring your device back up, and it gets worse if the board does not have an SD card slot to begin with. Thankfully, most embedded platforms almost always include some form of recovery via USB or UART, which usually involves sending a boot image to the platform’s ROM code. A few tools exist that leverage this functionality to offer quick recovery and reflashing via USB, such as STM32CubeProgrammer, SAM-BA or UUU. However, these tools are all vendor-specific, which means that developers working on various kinds of platforms have to switch between different tools and learn how to use each one.

To address this issue, Bootlin is happy to release today a new recovery and reflashing tool, called Snagboot, which intends to be a generic and open-source replacement to the vendor-specific tools mentioned earlier. It is composed of two parts:

  • snagrecover, which uses vendor-specific ROM code mechanisms to initialize external RAM and run your bootloader (typically U-Boot), without modifying any non-volatile memories.
  • snagflash, which communicates with your bootloader over USB to flash system images to non-volatile memories, using either DFU, USB Mass Storage or fastboot.

Snagboot currently supports about 50 different SoC models, from six different SoC families:

  • STMicroelectronics STM32MP1
  • Microchip SAMA5
  • NXP i.MX6/7/8
  • Texas Instruments AM335x
  • Allwinner Sunxi
  • Texas Instruments AM62x

You can get it from PyPI or browse the sources on github. Our extensive user guide gives all the details on how to setup and use Snagboot on supported platforms. We hope that this tool will be useful to embedded software engineers and that it will continue to grow as support for more SoCs/platforms is added! If you’re familiar with a certain SoC family’s boot process, don’t hesitate to contribute to the project by adding support for your platform!

Updated Yocto support for SiFive RISC-V platforms

SiFive logoA few months ago, we started supporting SiFive in their effort to maintain and improve the Yocto support for their RISC-V processors and platforms. The Yocto support for SiFive platforms is divided into two layers:

These layers allow to build ready-to-use Yocto images for the Qemu RISC-V 64-bit emulation, the HiFive Unleashed and HiFive Unmatched development boards.

As part of our work on the Yocto support for SiFive platofrms, we have already published three new releases of these layers: 2022.06, 2022.08 and 2022.10. In this blog post, we review the main highlights of those releases.

Continue reading “Updated Yocto support for SiFive RISC-V platforms”

Welcome to Théo Lebrun!

Welcome on board!We are happy to announce that Théo Lebrun has joined our engineering team, as of September 9, 2022, just in time to attend the Embedded Linux Conference Europe with the rest of the Bootlin engineering team.

Théo has just graduated from the Université de Technologie de Belfort Montbéliard, and did his final 6-month internship at Bootlin, where he worked on PipeWire and support for the A2B Audio Bus in the Linux kernel.

Théo is joining our team based in Lyon, where Alexandre Belloni, Grégory Clement and Kamel Bouhara are based.

Welcome on board Théo!