Background
Current CI builds and runs the test suite on Linux (x86-64) and macOS. This
catches logic bugs but misses issues that only surface on the actual target
architecture: unaligned memory access, stack size violations at configured
limits, ABI differences, and anything that depends on ARM's 32-bit integer
width or endianness behavior.
m33emu (github.com/danielinux/m33mu) is a Cortex-M33 / ARMv8-M emulator with
TrustZone awareness. The STM32H5 is a Cortex-M33, so this is a direct match.
Running the existing make test suite under m33emu would give meaningful
embedded target coverage in CI without requiring physical hardware.
What this validates that x86 CI misses
- Stack usage at the limits set by
WOLFCOSE_MAX_SCRATCH_SZ and friends
- Behavior under the ARM Cortex-M calling convention (AAPCS)
- Unaligned access patterns in the CBOR decoder (zero-copy pointer arithmetic)
- 32-bit
int / size_t behavior vs x86-64 64-bit widths
- TrustZone separation if the secure/non-secure split is exercised
Tasks
Notes
This is only a testing target, not a port — no wolfCOSE source changes are
needed. The H5 hardware build is already documented in the README
cross-compilation section; this just adds an automated check for it.
Background
Current CI builds and runs the test suite on Linux (x86-64) and macOS. This
catches logic bugs but misses issues that only surface on the actual target
architecture: unaligned memory access, stack size violations at configured
limits, ABI differences, and anything that depends on ARM's 32-bit integer
width or endianness behavior.
m33emu (github.com/danielinux/m33mu) is a Cortex-M33 / ARMv8-M emulator with
TrustZone awareness. The STM32H5 is a Cortex-M33, so this is a direct match.
Running the existing
make testsuite under m33emu would give meaningfulembedded target coverage in CI without requiring physical hardware.
What this validates that x86 CI misses
WOLFCOSE_MAX_SCRATCH_SZand friendsint/size_tbehavior vs x86-64 64-bit widthsTasks
arm-none-eabi-gcctargeting Cortex-M33tests/test_mainunder m33emu, assert zero failures.github/workflows/alongside existing Linux/macOS jobsNotes
This is only a testing target, not a port — no wolfCOSE source changes are
needed. The H5 hardware build is already documented in the README
cross-compilation section; this just adds an automated check for it.