Linux 6.9 released, Bootlin contributions inside!

Linux 6.9 was released last Sunday, and as usual we refer our readers to the excellent LWN.net coverage of the Linux 6.9 merge window (part 1 and part 2) to get a good overall picture of the improvements and new features brought by this release.

On our side, we contributed a total of 119 commits authored by Bootlin engineers, but we also merged a total of 95 patches from other contributors, as several Bootlin engineers as also maintainers of various drivers/subsystems in the Linux kernel.

Here is the highlight of our contributions:

  • Alexandre Belloni, as the RTC subsystem maintainer, submitted a number of improvements to various RTC drivers, with a particular focus on the rtc-ds1511 driver
  • Alexis Lothoré continued his work on the wilc1000 Wireless driver, for the Microchip ATWILC1000 chip. Alexis is going through a significant backlog of out-of-tree patches, to bring the mainline driver on par with the vendor driver
  • Grégory Clement contributed the initial support for the Mobileye EyeQ5 processor, used in autonomous driving applications
  • Hervé Codina, after submitting in Linux 6.8 a new WAN framer subsystem in Linux 6.8, he contributed drivers/net/wan/fsl_qmc_hdlc.c a new WAN driver to perform HDLC using the PowerPC QMC hardware block, as well as a sound/soc/codecs/framer-codec.c, which is an ASoC codec driver that works on top of the WAN framer subsystem
  • Hervé also contributed some fixes to the devlink mechanism
  • Jérémie Dautheribes contributed some improvements to the TI drivers/net/phy/dp83822.c Ethernet PHY driver
  • Köry Maincent changed the PTP subsystem to use the XArray data structure instead of simple IDA, and contributed a fix to the Linux kernel regulator subsystem, in preparation for his work on PoE
  • Luca Ceresoli contributed new trace events in the ASoC subsystem, fixed a bug in the I2S driver for Rockchip platforms, and fixed some description text in a Device Tree Binding
  • Louis Chauvet fixed an issue in the Xilinx XDMA dmaengine driver
  • Maxime Chevallier contributed documentation fixes in the phylink subsystem
  • Michael Opdenacker marked ext2 as a deprecated driver
  • Miquèl Raynal contributed some fixes to his implementation of continuous read support for parallel NAND, and also some fixes to the same Xilinx XDMA dmaengine driver as Louis Chauvet
  • Richard Genoud arrived at Bootlin, and updated his mailmap entry
  • Thomas Richard continued his work on suspend/resume support on TI K3 platforms
  • Last but not least Théo Lebrun is for this release our biggest contributor, with 46 patches. All his work is centered around enabling support for Mobileye EyeQ processors, with a focusing on pinctrl, I2C, SPI and GPIO. The SPI controller used is from Cadence, the I2C and GPIO blocks are the same as the ones available on Nomadik SoCs, so Théo mostly improved/extended those drivers to support the Mobileye EyeQ case.

Here is the complete details of our contributions:

Yocto 5.0 Scarthgap released, Bootlin contributions inside

Yocto Project SummitThe latest release of the Yocto Project, version 5.0, code named Scarthgap has been published a few days ago. The release notes provide the best summary of what’s new in this release. Being a Long Term Support (LTS) release, it will be maintained during 4 years with bug fixes and security updates, which makes this release particularly important for a large number of embedded Linux projects and products.

At Bootlin, we are using Yocto for a large fraction of the Linux Board Support Packages that we develop, maintain and upgrade for our customers. But we’re not only users of Yocto: we’re also contributors and maintainers. In this blog post, we’ll highlight our contributions to this release, which take various forms.

Continue reading “Yocto 5.0 Scarthgap released, Bootlin contributions inside”

Our talks at Embedded Open Source Summit 2024

The Embedded Open Source Summit 2024 took place on Apr 16-18 in Seattle, with many talks on a wide range of embedded Linux topics. 11 engineers from Bootlin participated to this conference and four of us gave talks, for which we are happy to publish the slides and videos in this blog post.

Bootlin team at Embedded Open Source Summit 2024
Bootlin team at Embedded Open Source Summit 2024

Continue reading “Our talks at Embedded Open Source Summit 2024”

Getting started with Zephyr

Zephyr is an open-source real-time operating system, used mainly in embedded devices, with a focus on small systems, thanks to its very small footprint.

This post is a quick startup guide to show how to run Zephyr on two different boards, from two different vendors:

In this post, we will show how to install all the tools needed to build and run Zephyr, then run some samples, until we get access to the Zephyr shell over USB.

Continue reading “Getting started with Zephyr”

Welcome to Richard Genoud!

Welcome on board!We are very happy to welcome in our team Richard Genoud, who joined us at the beginning of April, and already participated to his first conference with Bootlin by attending the Embedded Linux Conference this week.

Richard started using Linux in 1998, and his journey working with embedded Linux started in 2001, so Richard brings to our team over 20 years of experience working on embedded Linux systems. In his previous positions, Richard has worked on all aspects of embedded Linux, from porting and improving bootloaders, porting the Linux kernel to various hardware platforms, using build systems such as Buildroot, developing user-space applications. Richard helped ship and maintain products in the field for many years.

Richard is also an open-source contributor: he contributed support for the NAND ECC controller on Microchip platforms, contributed improvements to the UART driver for Microchip platforms, for which he is the official Linux kernel maintainer, but Richard also made contributions to U-Boot, dnsmasq, msmtp, Buildroot, connman, Busybox or mtd-utils.

For more details, see Richard’s profile on our site.

Linux 6.8 released, Bootlin contributions

The Linux 6.8 kernel has been released on March 10 by Linus Torvalds. As usual, we definitely recommend the coverage by LWN of the merge window for this release cycle to get a good grasp on the most important new features: first half and second half. Some work from Bootlin is briefly mentioned in those articles, such as the support for Lantiq PEF2256 (FALC56) framers, Lantiq PEF2256 (FALC56) pin controllers, and Techwell TW9900 video decoders.

With a total of 135 commits contributed by Bootlin engineers during this release cycle, we have been much more active than for the previous 6.7 release. This allows Bootlin to show in the recently published Development statistics for 6.8, as the 17th contributing company by number of commits, and 13th contributing company by number of changed lines.

Continue reading “Linux 6.8 released, Bootlin contributions”

ext2 filesystem driver now marked as deprecated

31 years after the start of its career in 1993, it’s time for ext2 to retire. Here we are talking about the driver for this filesystem, not exactly the filesystem itself. Continue reading to understand the subtle difference.

It’s the ext2 filesystem driver that will be marked as deprecated in the upcoming 6.9 Linux kernel. The main issue is that even if the filesystem is created with 256 byte inodes (mkfs.ext2 -I 256), the filesystem driver will stick to 32 bit dates. Because of this, the driver does not support inode timestamps beyond 03:14:07 UTC on 19 January 2038.

Continue reading “ext2 filesystem driver now marked as deprecated”

Updated Buildroot support for STM32MP1 platforms, ST BSP v5.0

We continue the support of the buildroot-external-st project as presented in our first announce, which is an extension of the Buildroot build system with ready-to-use configurations for the STMicroelectronics STM32MP1 platforms. We already published several updates of this support, with the LTS 2022.02 and version 4.0 of ST BSP version update and the LTS 2022.02.7 and version 4.1 of ST BSP version update.

More specifically, this project is a BR2_EXTERNAL repository for Buildroot, with a number of defconfigs that allow to quickly build embedded Linux systems for the STM32MP1 Discovery Kit platforms. It’s a great way to get started with Buildroot on those platforms.

Today, we are happy to announce an updated version of this project, published under the branch st/2023.02.10 at https://github.com/bootlin/buildroot-external-st. This new version brings a number of additional features:

Continue reading “Updated Buildroot support for STM32MP1 platforms, ST BSP v5.0”

Bootlin toolchains 2024.02 released

2024.02 Bootlin toolchainsWe just released version 2024.02 of the Bootlin toolchains a large set of freely available pre-compiled cross-compilation toolchains targeting a wide range of CPU architectures and configurations.

Compared to the previous 2023.11 toolchains, the main changes are:

  • The stable toolchains are now built with Binutils 2.41, and the bleeding-edge toolchains are built with Binutils 2.42
  • The stable toolchains are now using Linux kernel headers 4.19, and the bleeding-edge toolchains are using Linux kernel headers 5.15
  • The glibc toolchains are now using glibc 2.39
  • The musl toolchains are now using musl 1.2.5
  • Thanks to the musl update, the RISC-V 32-bit toolchains are now also offered in a musl variant

As usual, all toolchains are available for download from https://toolchains.bootlin.com/.

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!