Marcus Folkesson

Embedded Linux Artist

TIL - Buildroot & BR_NO_CHECK_HASH_FOR

TIL - Buildroot & BR_NO_CHECK_HASH_FOR TIL, Today I Learned, is more of a "I just figured this out: here are my notes, you may find them useful too" rather than a full blog post In Buildroot [1], the integrity of (allmost) all downloaded packages is verified against a hash. Even packages that are fetched from a git repository is verified this way. This is a good thing that no one really should work around.

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

TIL - Git jump

TIL - Git jump TIL, Today I Learned, is more of a "I just figured this out: here are my notes, you may find them useful too" rather than a full blog post The Git v2.40.0 was released [1] yesterday (2023-03-13) and one of the release notes that caught my eyes was this one: * "git jump" (in contrib/) learned to present the "quickfix list" to its standard output (instead of letting it consumed by the editor it invokes), and learned to also drive emacs/emacsclient. I'm familiar with the "quickfix list" in Vim as I have been using it for many years, I even wrote a small post [2] about it looong time ago. cover

Service of a pocket watch

Service of a pocket watch Mechanical watches is fascinating. A mechanical timepiece that gets its energy from unwinding a tightly coiled flat spring. All this energy does feed another spring-driven balance wheel that oscillates back and forth in a given frequency. All without any batteries. Isn't that cool? Mechanical watches is quite expensive and need regular services, so I bought a no-name brand pocket watch that suddenly could stop tick and didn't keep time very well. A perfect restoration project for me. cover

Razor leather case

Razor Leather Case My safety razor broke during usage last week, so I sadly had to order a new one. I'm not really into shaving at all, but I want something that works and safety razors does both work and is cheap in the long run. For those interested, I bought a AL13 razor from Henson Shaving [1]. This time I used my Laser cutting machine to cut out the leather. cover

Route traffic with NAT

Route traffic with NAT Long time ago I wrota a blog post [1] about how to use NAT to route traffic to your embedded device via your host computer. Back then we were using iptables to achieve it, nowadays nftables is the preferred successor, so it's time for an update. What is NAT anyway? Network Address Translation, or NAT, does map an address space into another by modifying the network address infromation in the IP header for each packet. This is how your router is able to route your local network out to internet. cover

Leather watch strap keeper

Leather watch strap keeper My watch was missing the strap keeper, so I had to make one. To be honest, I did not put my soul into this project, I had an urge to fix it while the food was getting ready in the oven. Anyway, here is my steps to make one. The steps Cut out a leather strap. My final size was about 14mm wide. Bevel the edges: cover

Contiguous Memory Allocator

Contiguous Memory Allocator Introduction I do find memory management as one of the most fascinating subsystem in the Linux kernel, and I take every chance I see to talk about it. This post is inspired by a project I'm currently working on; an embedded Linux platform with a camera connected to the CSI-2 bus. Before we dig into which problems we could trip over, lets talk briefly about how the kernel handles memory. cover

TIL - U-Boot support for HTTP

TIL - U-Boot support for HTTP TIL, Today I Learned, is more of a "I just figured this out: here are my notes, you may find them useful too" rather than a full blog post Until now, U-Boot did only support UDP and were limited to protocols that are based on that. In practice it meant that you were only able to use TFTP and NFS for network file transfer. cover