Marcus Folkesson

Embedded Linux Artist

Embedded Open Source Summit 2023

Embedded Open Source Summit 2023 This year the Embedded Linux Conference is colocated with Automotive Linux Summit, Embedded IOT summit, Safety-critical software summit, LFEnergy and Zephyr Summit. The event was held in Prague, Czech Republic this time. It's the second time I'm at a Linux conference in Czech Republic, and it clearly is my favorite place for such a event. Not only for the cheap beer but also for the architecture and the culture. cover

Route priorities - metric values

Route priorities - metric values Brief It's not an uncommon scenario that a Linux system has several network interfaces that are all up and routeable. For example, consider a laptop with both Ethernet and WiFi. But how does the system determine which route to use when trying to reach another host? I was up to setup a system with both a 4G modem and a WiFi connection. My use case was that when the WiFi is available, that interface should be prioritized over 4G. cover

Lund Linux Conference 2023

Lund Linux Conference 2023 The conference Lund Linux Conference (LLC) [1] is a "half-open" conference located in Lund. It's a conference with with high quality and I appreciate that the athmosphere is more familiar than at the larger conferences. I've been at the conference a couple of times before and the quality on the talks this year was as good as usual. ( The talks are by the way availalble on Youtube [3]. cover

Write a device driver for Zephyr - Part 1

Write a device driver for Zephyr - Part 1 This is the first post in this series. See also part part2, part3 and part4. Overview The first time I came across Zephyr [1] was on Embedded Linux Conference in 2016. Once back from the conference I tried to install it on a Cortex-M EVK board I had on my desk. It did not go smoothly at all. The documentation was not very good back then and I don't think I ever got system up and running. cover

Write a device driver for Zephyr - Part 2

Write a device driver for Zephyr - Part 2 This is the second post in this series. See also part part1, part3 and part4. Overview In the first part1 of this series, we did setup the hardware and prepared the software environment. In this part we will focus on pretty much everything but writing the actual driver implementation. We will touch multiple areas in order to fully integrate the driver into the Zephyr project, this includes: cover

Write a device driver for Zephyr - Part 3

Write a device driver for Zephyr - Part 3 This is the third post in this series. See also part part1, part2 and part4. Overview In the previous part we prepared Zephyr for our soon to be born driver. Now we have finally come to the fun point - write the actual driver code! Driver API I used to write code for the Linux kernel which is a little bit more complex kernel than Zephyr. cover

Write a device driver for Zephyr - Part 4

Write a device driver for Zephyr - Part 4 This is the forth post in this series. See also part part1, part2 and part3. Overview This is the forth and last part of this series where we will focus on contribute the driver back to the Zephyr project. Zephyr use Github for hosting the project and all contribution is by Pull Requests. The process is all well documented [1], both on how to contribute but also what the project expect from you as a contributor. cover

Encrypted storage on i.MX

Encrypted storage on i.MX Brief Many embedded Linux systems does have some kind of sensitive information on a file storage. It could be private keys, passwords or whatever. It's always a risk that this information could be revealed by an unauthorized person that got their physical hands on the device. The only protection against attackers that who simply bypass the system and access the data storage directly is encryption. cover

Bug in the iMX8MP ECSPI module?

Bug in the iMX8MP ECSPI module? Background I do have a system where I can swap between iMX8M Mini and iMX8M Plus CPU modules on the same carrier board. I did write a a SPI driver for a device on the carrier board. The device is connected to the ECSPI1 (the CPU contains several ECSPI modules) and use the hardware chipselect 0 (SS0). The driver has been used with the iMX8MM CPU module for a while, but as soon I swapped to the iMX8MP it certainly stopped working. cover

Capture an image with V4L2

Capture an image with V4L2 Brief As we has seen before, cameras in Linux could be a complex [1] story and you have to watch every step you take to get it right. libcamera [2] does a great job to simplify this in a platform independent way and should be used whenever it's possible. But not all cameras does have a complex flow-chart. Some cameras (e.g. web cameras) are "self-contained" where the image data goes straight from the camera to the user application, without any detours through different IP blocks for image processing on its way. cover