All‑in‑One Docker Image for NXP MCUXpresso, VS Code and CI/CD Pipeline

Working with different toolchains, different versions and targets can be very challenging. To simplify the setup and distribution of the development environment I’m using the concept of containers.

I’m using different Docker images and containers for development and automated CI/CD integration. In the past weeks I have extended, simplified and consolidated my work flows. For example I have now an image with the MCUXpresso tools, with everything running in a container: both locally on my machine with Docker, with VS Code, and the same integrated in the CI/CD pipeline:

Running MCUXpresso Tools in Container
Running MCUXpresso Tools in Container

It not only simplifies my development flow: the same way I can easily deploy the installation and setup for a class room lab environment: basically everything is only one click away.

Continue reading →

Debug Probe Identification with a Blinky

The latest NXP MCUXpresso VS Code extension and LinkServer software included a small but very helpful feature for me: the ability to identify a connected probe with a blinky:

Probe identification with a LED
Debug Probe identification with a Blinky

Continue reading →

Explore Freedom of Choice with Debug Extensions for NXP and Cortex-Debug

I’m using different MCUS from NXP with VS Code, and for this I’m mostly using the NXP MCUXpresso extension for VS Code.

At the same time, I’m using the cortex-debug extension for other ARM Cortex-M based MCUs, for example the Raspberry Pi Pico series.

Does it makes sense to use cortex-debug for NXP devices, and what would be the benefit? More precise: can I use the NXP MCU-Link (LinkServer based) debug probes with cortex-debug, to debug another NXP MCU?

MCU-Link (right) debugging a MCU-Link Pro (LPC55S69, right) with cortex-debug
NXP MCU-Link (right) debugging a NXP MCU-Link Pro (LPC55S69, right)
Continue reading →

Using Tracealyzer for Embedded Systems Analysis

In my latest research project I’m using the NXP FRDM-MCXN947 board. As part of that project I have to collect and export application trace data for later analysis. In that project I’m using the the Tracealyzer product from Percepio.

Trace Data in Percepio Tracealyzer
Trace Data in Percepio Tracealyzer

In this article I describe different ways to export trace data from the embedded target: using generic GDB commands or with an trace exporter in VS Code.

Continue reading →

Semihosting with LinkServer in VS Code

For an university research project, I need to write some console output and the same time write a file with data from the embedded board to the host. A logical choice for this is using semihosting.

Semihosting with LinkServer in VS Code
Semihosting with LinkServer in VS Code
Continue reading →

Build and Debug QEMU in Docker

For an university research project we are implementing a software simulator for the EZH (or SmartDMA) co-prozessor present on some NXP MCUs.

Debugging QEMU in container using VS Code
Debugging QEMU in container using VS Code

This article describes how to setup and build QEMU in a docker container, including debugging QEMU with VS Code.

Continue reading →

Debug C/C++ Apps in Docker with VS Code: A Step-by-Step Guide

Debugging a C/C++ application inside a Docker Container using VS Code is surprisingly easy.

This article shows the needed steps.

Continue reading →

Debugging Linux Apps with VS Code: A Step-by-Step Guide

Recently I have been asked “How can I debug a Linux application with VS Code?”. I’m covering that topic in my ‘Embedded Application Development Course on Linux”.

Debugging Linux Application with VS Code over SSH
Debugging Linux Application with VS Code over SSH

I realized, that I have never covered that topic in any of my blog articles. So here we go: I show how easy it is to use VS Code to debug a Linux application. You can use this for example with an Raspberry Pi. Or for example the NXP i.MX93 which I’m using in this article.

Continue reading →

NXP LinkServer Now Supports ARM 64-bit for Enhanced Development

The latest release of the NXP LinkServer supports ARM 64bit (Debian) besides Windows, Linux and MacOS. With this, I can now develop on an NXP i.MX board. Plus, this enables an inexpensive way for automated on-target tests and CI/CD.

LinkServer running on Raspberry Pi
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 →