Change Note 2025-01-28

Library Modules

See library modules.

RuntimeErrors

  • Stack traces in Errors and Faults when using kernel threads are now working.
  • See example/test program Stacktrace.
  • The handler to log, print, or otherwise take the exception data for further processing is simplified to PROCEDURE(excRec: ExceptionRecord), since the core id is now contained in the exception data.
  • The exception data now contains info whether the Error or Fault exception occurred in handler or thread mode. The error message printed by RuntimeErrorsOut has been extended accordingly.

RuntimeErrorsOut

  • Adjust PrintException and PrintStacktrace for TYPE changes in RuntimeErrors.

Errors

  • Extend GetExceptionType for the extended exception data (see module RuntimeErrors).

Memory

  • All stacks are now sealed in module Memory. Before, the main stacks were sealed in RuntimeErrors and the thread stacks in Coroutines.
  • ResetMainStack resets main stack pointer (MSP) to the top of the stack.
  • New procedure SetMainStackSize.

ProgData

  • Module interface now uses the resource addresses and related procedures in lieu of TYPE Entry.
  • Finding the program data resource block is done during initialisation and cached, in lieu of looking it up again and again when searching for an entry.

MemoryExt

  • Adjust for changes in ProgData.

MCU2

  • Add assembly instruction to set MSP.

New Module FPUctrl (RP2350)

  • Factor out out the code to initialise the FPU (and possibly other control functionality going ahead).
  • Used in module Main, which always runs on core 0, and has no access to the FPU config registers of core 1, so the core 1 code can use this module to init its FPU as well.

Main (RP2350)

  • Use FPUctrl to enable FPU.

Example/Test Programs

  • Stacktrace:
    • explore stack traces;
    • three basic test cases, with and without kernel threads, running on two cores.

Website

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.