Navigating AI: Critical Thinking in the Age of LLMs

A few days ago, a reader of my blog sent me a message:

“Hi Erich, I am reading you since a lot of years. I think you are a pillar of my professional career. Thanks for this. Let me ask you now: what do you think about LLM and coding with LLM in embedded? My employer thinks it time to stop to hire people, because in 1/2 years everything will be substituted by AI. I am not on the same page. Are you using LLM for coding? What do you think about it? Thanks in advance.”

TL;DR: LLMs are changing and improving, making good engineering and education even more important. Studies show that AI can be useful, but productivity will not always increase. AI coding means more critical thinking and responsibility, not less. Engineering and education needs to adopt and change. This includes assessments and didactic, back to paper and defending the work. Learning how to learn is getting the critical skill in the age of AI.

AI slows down experienced open-source developers
AI slows down experienced open-source developers (from https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/)

In this article I’ll have collected my thoughts and observations.

Continue reading

MCU-Link-MR v0.5: Enhanced Debug Probe for ARM Cortex-M

The MCU-Link-MR debug probe has been updated :-).

MCU-Link MR v0.5
MCU-Link MR v0.5

The MCU-Link-MR is a CMSIS-DAP debug probe for ARM Cortex-M devices with extra features for mobile robot and drone debugging. The project is open source and available on GitHub with KiCAD files and BOM.

Continue reading

3D Printed Rugged Enclosure for NXP MCU-Link Debug Probe

I’m using the NXP MCU-Link CMSIS-DAP debug probe in many of my projects. The debub probe from NXP does not come with an enclosure. I’m traveling to work by train, so I designed a new rugged box and enclosure. The box is small and I can keep all parts inside it.

Rugged boxes and enclosure for NXP MCU-Link debug probes
Rugged boxes and enclosure for NXP MCU-Link debug probes
Continue reading

Debug ELF/Dwarf Binaries in VS Code without a Project or Build

Sometimes, all what I have is a ELF/Dwarf binary, and I need to debug it. I don’t want to build it, only debug it. The NXP VS Code extension makes that possible. I simply import the binary and start debugging.

Debugging Executable
Debugging Executable
Continue reading

Using Windows USB Devices and Debug Probes inside Docker Dev Container

Docker or Development Container are great for isolation. And they work very well with things outside which are TCP/IP based. But most debug probes are USB only. Docker container don’t work well with USB. In Remote Debugging with DevContainer and VS Code, I showed how to use USB based debug probes. I demonstrated using them with an IP connection. In this article I show how Windows USB devices can be used from a container, with the help of usbipd.

usb shared between windows and linux container
USB shared between windows and Linux container
Continue reading

Boost Windows 11 Dev Performance with Docker Volumes

I recently upgraded from Win10 to Win11. Windows 10 was not great for building performance compared to Linux. And I feel that with Windows 11 things got worse too.

Dev Container in VS Code uses docker-based environments. This enables me using a full-featured development environment, with isolated dependencies. This is especially very useful for development in the embedded systems space. There I have to use many different SDKs, toolchains and libraries. Using Dev Containers is super easy. But file I/O operations with building etc/is not that great.

The solution is to use a Docker Volume with VS Code and Dev Container:

Build Performance Comparison
Continue reading

Creating an new Embedded Rust Projects for NXP LPC55S69

In “Getting Started with Rust on NXP LPC55S69-EVK” I demonstrated how easy it is to run a ‘blinky’ with Rust. I used the Embassy framework.

rust on LPC55S69
rust on LPC55S69

In this article, I show how one can create a standalone Rust project for an embedded target.

Continue reading

Getting Started with Rust on NXP LPC55S69-EVK

The Rust Programming Language makes its way into the Linux kernel, and is used for embedded tooling. What about using it for Embedded? In this article, I’ll show how you get started with Rust on the NXP LPC55S69-EVK:

Rust on NXP LPC55S69 (Rust Icon: http://www.vericon.com)
Continue reading

rblhost: Exploring Rust’s Role in Embedded Development Tools

The Rust programming language is making its way into different areas: Rust gets added to the Linux Kernel. I see an increasing interest for using Rust in embedded projects. And Rust is used for embedded tools. I noticed this with the latest LinkServer v25.09 release: there is a new tool included in the package, rblhost.

rblhost on crates.io
rblhost on crates.io

The release note just mentioned:

- Switched to using rapid blhost (rblhost) utility.

This triggered my interest, and actually that utility is implemented in Rust :-).

Continue reading

Using CAN FD for Remote Hardware Debugging of Cortex-M Devices

Today’s projects and systems get more and more complex. Many systems include multiple MCUs, connected with a field bus or network, for example CAN. For example there can be up to 70 CAN nodes in modern cars. Such larger and connected systems are a challenge for debugging.

Traditional hardware debugging requires a hardware debug probe, connected with a dedicated SWD/JTAG debug cable to the target device. This needs dedicated pins on the target device plus physical access to the device itself. In many cases, this is not possible in the final product. The hardware debug probes, cables, pins and high speed signals are costly. And worse they can introduce new problems and are prone to interference.

If there is a field bus like CAN connecting all the MCUs, why not use it for hardware debugging? Hardware debugging meaning programming the FLASH memory, halt the MCU, inspect the memory and registers, and step through the code?

Cortex-M Hardware Debugging over CAN

Yes, we can! With the help of a rather unknown hardware feature on ARM Cortex-M devices. We can use the ARM DebugMonitor Interrupt to control and debug the target system. As we would use a JTAG/SWD connection. Instead, we use the CAN bus :-).

Continue reading