Change Note 2025-10-22
lib/v3.0, more MCX-A346Module 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
ConfigandClocksare kept in a new separate directoryconfig. - 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,
SetLandSetH.
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
.elfconverter 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
.elstmodule 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
.elffile is detected, the debugger can simply re-download it to the target’s flash memory.
Tools
- Improve (fix?)
makeelf-nxpto work with the Ozone debugger.
Example Programs
- Several example and test programs are ported to
lib/v3.0for- 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.
-
“Free” insofar as you need their J-Link probe… ↩︎