Change Note 2025-10-22

lib/v3.0, more MCX-A346

Module Library

lib/v3.0

  • Given the structural changes, and the (nascent) support for other MCUs, the new library version is lib/v3.0.
  • The general approach is to have as many as possible shared modules across all supported architectures, and achieve a certain degree of API compatibility.
  • For now, modules that are cross-architecture-compatible are kept separate nonetheless for greater flexibility, with the goal to “promote” them at a later stage.

Some notable library changes are outlined below.

Kernel-v4

  • Kernel-v4 is now also supported for RP2040, as well as MCX-A346 (partly, no KernelAlarms yet).

Config Directory

  • The memory configuration and clock set-up are potentially project specific. For this reason, modules Config and Clocks are kept in a new separate directory config.
  • This allows to provide project-specific versions directly in the project directory, same as Main.

Module Config

  • Restructured to better fit single and multi-core MCUs.
  • Install basic error and fault handlers to catch problems during the module start/initialisation sequence.

Module MCU2

  • RPx: redefinition of CONSTs related to system exceptions and interrupts, as well as SRAM layout.
  • RPx: add additional definitions for GPIO.
  • MCX-A346: additional definitions needed to build the ported example programs (see below).

GPIO

  • RPx: remove all deprecated definitions and procedures.
  • RPx: synchronise the procedures to operate the GPIO pins from software (SIO) with the corresponding procedures for the MCX-A346. The previous variants are still available as, for example, SetL and SetH.

MCX-A346 Modules

  • Add more modules to support the MCX-A346 to the point where the ported example programs can be built and run (RuntimeErrors, Stacktrace, Out, both kernels, and so on – see the corresponding library directory).

Astrobe Config Files

  • Provide config files for Astrobe for RP2040, RP2350, and MCX-A346 for lib/v3.0.

Debugging and Flashing

  • I got my hands on a SEGGER J-Link Plus debug probe.
  • SEGGER provides their free1 Ozone debugger that uses J-Link.
  • Ozone is of course focused on C development, so it’s a bit rough to use on binary/assembly level, but workable, and I suppose I could improve the .elf converter to include a proper symbol table to improve things.
  • Highly useful is the display of all CPU and memory mapped peripheral registers, in particular to evaluate a new MCU architecture.
  • The .elst module disassembly files created after linking showing the absolute addresses of assembly instructions are pretty useful (examples: SignalSync/rdb ).
  • The debugger simplifies the somewhat cumbersome flashing procedure for the MCX-A346 (see last change note): when a changed .elf file is detected, the debugger can simply re-download it to the target’s flash memory.

Tools

  • Improve (fix?) makeelf-nxp to work with the Ozone debugger.

Example Programs

  • Several example and test programs are ported to lib/v3.0 for
    • RP2040
    • RP2350
    • MCX-A346
  • Focus: testing kernels as well as run-time error trapping and reporting.
  • See examples/v3.0.

This Website

  • Fix and add repo links.
  • The documentation is not updated with any reference to the NXP MCUs.
  • The documentation of kernel-v4 still needs improvement.

  1. “Free” insofar as you need their J-Link probe… ↩︎

Updated: 2025-10-23