Overview
Running code on two cores requires the segmentation of the memory space. At minimum, each core requires its own stack memory. With the RP2350, further segmentation will be required to run both Secure and Non-Secure code, but that’s a topic for another day. For now, we need configurations for the RP2040, and for the RP2350 in Secure, privileged mode to get off the ground.
As of November 2024, the Astrobe IDEs don’t have support for dual-core programs. Oberon RTK employs a module Config
to complement the Astrobe settings regarding memory partitioning.
The basic concepts are, for both MCUs:
- allocate a part of SRAM to each core
- stack
- heap
- vector table
- share code among the cores in the flash memory
- allocate the module variables at the top of the memory space allocated to core 0
Heap and vector tables could basically be in a space shared by the cores, but this would require certain mutual synchronisation measures.
Memory Configuration
The following modules lists the memory settings for the respective Astrobe IDE in the file header, and provide a memory map:
- for RP2040: Config.mod
- for RP2350: Config.mod
The Astrobe settings are also part of the config .ini
files, see below.
Search Path Configuration
Oberon RTK uses Astrobe’s modules MUA
, LinkOptions
, ResData
, Error
, and FPU
(plus file boot2.bin
for Astrobe for RP2040), so make sure they are on your library search path for the compiler and linker.
Oberon RTK v2
For Oberon RTK v2, please refer to the following Astrobe configuration files in the oberon-rtk repository:
- with Astrobe for RP2040, targeting the RP2040:
/config/v2/rp2040/pico-base.ini
- with Astrobe for RP2040, targeting the RP2350:
/config/v2/rp2040/pico2-base.ini
- with Astrobe for Cortex-M0, targeting the RP2040:
/config/v2/m0/pico-base.ini
- with Astrobe for Cortex-M0, targeting the RP2350:
/config/v2/m0/pico2-base.ini
- with Astrobe for Cortex-M4, targeting the RP2350:
/config/v2/m4/pico2-base.ini
Oberon RTK v1
For Oberon RTK v1, please refer to the following Astrobe configuration files:
- with Astrobe for Cortex-M0, targeting the RP2040, for kernel-v1:
/config/v1/RP2040-k1.ini
- with Astrobe for Cortex-M0, targeting the RP2040, for kernel-v2:
/config/v1/RP2040-k2.ini
The Astrobe Module Libraries
I never put any own code into the Astrobe library installation directory, which I keep pristine and only ever change with new releases of Astrobe. I also keep the Astrobe libraries in a (local) git repository, so any changes are easily “browsable” after upgrading to a new Astrobe release.
Documented Limitations
- Astrobe forums: Bug Reports
- Astrobe release notes, section Known Problems (or similar, if any)
Undocumented Limitations
None known.