First i.MX 8M Patches posted for Mainline
Eight days after NXP announced the immediate availability of the i.MX 8M processor family, Pengutronix developer Lucas Stach today posted a first set of 11 patches to support i.MX 8M in the mainline kernel (linux-gpio, linux-clk, linux-arm-kernel and linux-netdev).
This first patch series (together with five additional patches which are not ready for mainline yet) makes it possible to boot an i.MX 8M into userspace, with support for pinmux, clocks, network and eMMC. With these features in place, it will be possible to continue development on a top-of-tree kernel towards support for more interesting peripherals.
i.MX 8M is the newest (available) member of NXP's (former Freescale's, former Motorola's) i.MX family of application processors, initially introduced back in 2001 and used by many, many Pengutronix customers over all those years. In contrast to many other application processors, the i.MX family always made a good compromise between performance, features and availability, especially when it comes to industrial, medical and automotive applications and their longterm requirements. With first class mainline kernel support, i.MX is also a good choice for device manufacturers who care about IoT security, updates and top-of-tree kernels.
In contrast to the industry-work horse i.MX 6, the kernel support for i.MX 8M in mainline is still in it's early stage of development. The hardware is a moderate evolution of the i.MX 6 peripherals, replacing the Cortex-A9 cores by up to four Cortex-A53 cores (ARM64) and improving the overall memory bandwidth, which has always been a bottleneck for graphic intensive applications.
The most intrusive change between i.MX 6 and i.MX 8M is the replacement of the IPU display unit and the VPU video accelerator by VeriSilicon IP cores, so supporting the graphics subsystem will be high on the list of upcoming challenges.
Later this year, NXP will make more i.MX 8 families available: i.MX 8QM and i.MX 8X will be completely different hardware, with much more power but also much less software synergies with the existing i.MX 6 code in mainline.
Modern software development is commonly accompanied by a version control system like Git in order to have changes to the source code being documented in a traceable manner. Furthermore, any version state should be easily reproducible at any time. However, for work on complex projects such as the BSP ("Board Support Package") of an embedded system with its multiple development aspects, the simple stacking of the individual changes on top of each other does not scale.
2022 has started, and although Corona had a huge impact on our workflow, the Pengutronix team again made quite some contributions to the Linux kernel. The last kernel release in 2020 was 5.10, the last one in 2021 was 5.15, so let's have a look at what happened in between.
Enabling the graphics output pipeline on the i.MX8M Plus (i.MX8MP for short), is the most recent example on how open-source and upstream driver support for GPU and display engines can reduce effort and risk in a new project.
A firmware upgrade is due. A newly implemented feature needs to be rolled out, a security issue patched or new hardware support added. The software, while capable, is complex. Pengutronix' strategy to handle this complexity is working on a version- controlled Board Support Package (BSP) with continuous updates and tests on the latest mainline Linux kernel.
Today it has been 15 years since we mainlined support for Freescale/NXP's i.MX architecture in the Linux kernel! That was one small step for [a] man, one giant leap for (industrial Linux users') mankind :-) Here is some background about why it happened and what you might want to learn from history for your next embedded Linux project.
Every year's end-of-winter highlight starts next Tuesday: Embedded World 2018, and like every year, it is our main trade show and a good opportunity to meet many long-term customers in person. This year's highlight of the highlight: We have Etnaviv and Wayland running on MX8M!