Skip to content

Add m33mu emulator CI for MCX W71, RW612, nRF54L, nRF5340, MCXN947 and LPC55S69 - #986

Draft
aidangarske wants to merge 16 commits into
wolfSSL:masterfrom
aidangarske:m33mu-emu-device-ci
Draft

aidangarske wants to merge 16 commits into
wolfSSL:masterfrom
aidangarske:m33mu-emu-device-ci

Conversation

@aidangarske

Copy link
Copy Markdown
Member
  • Adds boot, update and rollback emulator tests on m33mu for MCX W71, RW612, nRF54L15, nRF54LM20 and nRF5340. Each runs a
    plain, TrustZone and ML-DSA config where the target has them.
  • Adds the MCXN947 plain, TrustZone and ML-DSA configs and the LPC55S69 ML-DSA config to their existing emulator workflows.
  • One commit per device, each with its own workflow file. The first two commits are shared test.sh fixes.
  • The MCX W71 test app drives FMU0 and uses the LPUART1 console the HAL uses.
  • The RW612 test app programs through the boot ROM FlexSPI NOR driver.
  • The nRF54L test app writes through the RRAMC.
  • The MCXN947 test app now builds for non-secure and plain configs, not only the secure payload.
  • New ML-DSA example configs for MCX W71, RW612, nRF54L15, nRF54LM20, nRF5340, MCXN947 and LPC55S69, each with a build job.
  • The MCXN example partitions are now 64 KB and aligned to the 8 KB flash sector. The old 0xB000 layout put the update
    partition off a sector boundary.
  • test.sh stops early with a clear message when the m33mu binary lacks the target's CPU model.
  • Tested with test.sh scenarios A, B and C on all 22 configs inside the wolfboot-ci-m33mu container, against an m33mu build
    with the matching models.
  • Depends on danielinux/m33mu wolfboot-targets. This stays a draft until the wolfboot-ci image is rebuilt with it.

@aidangarske aidangarske self-assigned this Nov 12, 2026
Copilot AI balanced review requested due to automatic review settings November 12, 2026 22:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The Makefile omits NVM_FLASH_WRITEONCE when compiling libwolfboot.c, creating a trailer-protocol mismatch with the bootloader that can cause update triggers to be lost.

1 open issue
What changed in this PR

Expands wolfBoot’s m33mu emulator coverage for boot, update, and rollback across NXP and Nordic targets, including plain, TrustZone, and ML-DSA configurations where supported. The new workflows depend on a CI image containing the matching m33mu models.

Changes:

  • Adds device-specific workflows and extends existing emulator and configuration-build matrices.
  • Adds RW612 and nRF54L test apps, flash support, and UART and memory-layout adjustments.
  • Adds ML-DSA example configurations, aligns MCXN partitions, and improves emulator compatibility checks.
File Description
test-app/​emu-test-apps/​test.sh Adds target mappings, CPU checks, and header-size detection.
test-app/​emu-test-apps/​rw612/​uart.c Adds RW612 console support.
test-app/​emu-test-apps/​rw612/​target.ld.in Defines RW612 app flash and SRAM layout.
test-app/​emu-test-apps/​rw612/​Makefile Builds the RW612 emulator app.
test-app/​emu-test-apps/​nrf54l/​uart.c Adds nRF54L DMA UART support.
test-app/​emu-test-apps/​nrf54l/​target.ld.in Defines the nRF54L app memory layout.
test-app/​emu-test-apps/​nrf54l/​Makefile Builds apps for both nRF54L variants.
test-app/​emu-test-apps/​nrf5340/​uart.c Avoids reopening the emulator UART connection.
test-app/​emu-test-apps/​mcxw71/​uart.c Switches the console to LPUART1.
test-app/​emu-test-apps/​mcxw71/​target.ld.in Supports configurable RAM and RAM-resident flash routines.
test-app/​emu-test-apps/​mcxw71/​Makefile Removes SDK dependence and selects app RAM regions.
test-app/​emu-test-apps/​mcxn947/​uart.c Selects the appropriate UART security alias.
test-app/​emu-test-apps/​mcxn947/​target.ld.in Makes the app RAM layout configurable.
test-app/​emu-test-apps/​mcxn947/​Makefile Supports plain, non-secure, and secure-payload apps.
test-app/​emu-test-apps/​Makefile Adds RW612 and nRF54L target selection.
test-app/​emu-test-apps/​common/​emu_hal.c Adds target flash drivers and Nordic write controls.
hal/​nrf5340.c Includes HAL declarations.
docs/​Targets.md Updates MCXN flashing examples for the new layout.
config/​examples/​rw612-mldsa.config Adds an RW612 ML-DSA configuration.
config/​examples/​nrf54lm20-mldsa.config Adds an nRF54LM20 ML-DSA configuration.
config/​examples/​nrf54l15-mldsa.config Adds an nRF54L15 ML-DSA configuration.
config/​examples/​nrf5340-mldsa.config Adds an nRF5340 ML-DSA configuration.
config/​examples/​nrf5340-emu.config Adds an internal-flash emulator configuration.
config/​examples/​mcxw-mldsa.config Adds an MCX W71 ML-DSA configuration.
config/​examples/​mcxn.config Aligns 64 KB partitions to flash sectors.
config/​examples/​mcxn-mldsa.config Adds an MCXN947 ML-DSA configuration.
config/​examples/​lpc55s69-mldsa.config Adds an LPC55S69 ML-DSA configuration.
.gitignore Ignores generated app linker scripts.
.github/​workflows/​test-configs.yml Adds build jobs for the new configurations.
.github/​workflows/​rw612-emulator-tests.yml Adds RW612 emulator tests.
.github/​workflows/​nrf54l-emulator-tests.yml Adds emulator tests for both nRF54L variants.
.github/​workflows/​nrf5340-emulator-tests.yml Adds nRF5340 emulator tests.
.github/​workflows/​mcxw-emulator-tests.yml Adds MCX W71 emulator tests.
.github/​workflows/​mcxn-emulator-tests.yml Extends MCXN947 configuration coverage.
.github/​workflows/​lpc55s69-emulator-tests.yml Adds LPC55S69 ML-DSA emulator coverage.

Review effort: Balanced

Comment thread test-app/emu-test-apps/rw612/Makefile Resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants