Oberon RTK

Astrobe IDE & Tools

CFB Software's cross-compiling Oberon IDE

Overview

The Astrobe development environment consists of

  • tools for compiling, linking, as well as for disassembling modules and programs;

  • a set of library modules for the target platform.

It is quick and easy to install, with an installer taking care of everything.

Tools

  • On Windows use:

    • the IDE, or
    • the command line tools
  • On macOS, use:

    • the command line tools

The command line tools have always been part of the Professional Edition of Astrobe only, but as from version 10.x are now included with each edition.

For running the command line tools on macOS, refer to Astrobe on macOS.

Astrobe's Framework/Library

Oberon RTK relies an a set of basic modules of the Astrobe library: LinkOptions, MAU, Error, FPU (RP2040) and boot2.bin (RP2040) but is otherwise self-contained.

The directories containing these Astrobe modules must be on the library search path, together with the entries for Oberon RTK (see below).

For how to install Oberon RTK alongside Astrobe, see Framework Installation.

When using Astrobe's own library modules (apart from the ones listed above), be aware that quite a few are not safe to be used from two cores concurrently, unless they are compiled and linked into two images (ie. separate programs).

Targets and Tools

Astrobe for RP2040 can generate code for the RP2350/Pico2. Look for config files with RP2040-pico2 in their name. The .uf2 binary created by Astrobe for RP2040 cannot be used in this case. Use make-uf2 rp2350 to create a .uf2 file for RP2350/Pico2 from the .bin file.

Astrobe for RP2350 can generate code for the STM32 – despite its name, at its core it is a compiler and linker for processors based on Cortex-M33, which work well for the STM32U585 and STM32H573. Obviously, different .ini config files are needed with the correct address ranges, and the framework must provide the STM32-specific modules.

Memory Allocation

For the RP2040 and RP2350, running code on two cores requires the segmentation of the memory space. At a bare minimum, each core requires its own stack memory, with shared heap and vector table, but memory management is easier if we also dedicate specific memory areas for heap and vector table to each core.

Astrobe does not have (yet) direct support for dual-core programs. The configuration dialogue allows to specify the data and code address parameters for core 0. The Astrobe linker uses the specified addresses to build an executable image, where the code is allocated in the flash memory code range, and the variables in the SRAM data range. The data memory space is sub-divided into vector table, heap, stack, and module variables (globals).

Oberon RTK provides a start-up module MemMap to extend the specifications via Astrobe's configuration dialogue for core 1. Please refer to Memory Management.

Configuration Files

The memory allocation and the library search path are defined in Astrobe configuration files.

See Astrobe Configuration Files.

Astrobe Versions

For Oberon RTK, the most current versions of Astrobe for RPx are used, currently v10. Version v9.3 should work as well, but this backward compatibility has not been fully tested starting from lib/v2.1. There are only so many hours per evening and weekend. :)

Known Limitations

If you use several Astrobe IDEs, and have modules that are shared between targets and maybe open in different IDEs, be aware that the Astrobe editor does not detect any changes made in a different tool. It's easy to overwrite and lose changes if not careful. Same in case you use a different editor, eg. for a side-by-side display of modules, such as Sublime Text. I certainly have lost work this way, which, yes, is a layer eight problem, or less euphemistically, my stupidity. Just be aware.

Update: Version v10 of Astrobe now detects changes by other programs upon saving. It does not automatically update its file buffers, though, so any changes by other programs are not visible in Astrobe's editor.

Last updated: 11 May 2026