Change Note 2025-02-16

Library Modules

See library modules.

MultiCore

  • New procedure StartCoreOne, taking a procedure to initialise core 1 for parameters that must be set from code running on core 1, ie. cannot be done from core 0.

New: InitCoreOne

  • Example module to initialise core 1 via MultiCore.StartCoreOne.
  • As of now (RP23050 only): enable FPU, enable MCU faults.

RuntimeErrors

  • Export Error and Fault handlers. This allows to (re-) assign the handlers from other modules (see example program SysCall, below).
  • New procedure EnableFaults to enable the MCU faults from code executing on both cores (RP2350 only, there are no MCU faults to enable on the RP2040).

Main

  • Use RuntimeErrors.EnableFaults to enable MCU faults on core 0.

Exceptions

  • Add memory barriers for procedures making changes for the System Control Space, mainly the NVIC, but also the registers controlling the system exceptions.

FPUctrl

  • Add memory barriers.

MCU2

  • Add DSB and SVC assembly instruction codes.

Errors

  • Renumber run-time Error codes to fit into the interval 0 to 63.

Example/Test Programs

  • SysCall:
    • get precisely synchronous exceptions from software using the SVC instruction and handler;
    • two test cases, with and without kernel threads, running on two cores;
    • extends and re-uses Stacktrace
  • Stacktrace:
    • update the programs to use MultiCore.StartCoreOne;
    • update the description to cover memory barriers.

Repo Updates

  • The repository may get updated between change notes, if there’s a fixed defect.
  • However, changes to a module’s API or behaviour are only pushed together with a corresponding change note.