Oberon Real-Time Kernel for Raspberry Pi's RP-series of microcontrollers.
Oberon RTK is a framework for writing dual-core, multi-threaded embedded control programs in Oberon for the RP-series of micro-controllers of Raspberry Pi, using Astrobe’s cross-compiling IDEs.
Oberon RTK provides an embedded multi-threading kernel to allow to divide, and program, the controller program as set of separate control processes.
The use of the kernel is not mandatory for the Oberon RTK library/framework in general, which can be used to program any kind of application using one or two cores.
This site is targeted at programmers with a good understanding of the RP microcontrollers, as well as writing control software in general. Oh, and some sense of exploring. At least for now, there are no Getting Started instructions, and no tutorials.
There are examples, though. Also, some example program descriptions contain a good amount of conceptual material and design considerations, which are explored in the corresponding program itself, complemented by the descriptions section. And of course there’s the source code in the repository.
The modules in the GitHub repository are provided “as is”, with the assumption that the reader knows how to build and upload the software using the tools as outlined below.
This site may not be completely up-to-date, or complete, with respect to the modules in the repository. Refer to the latter for the actual details and specifics. As the saying goes: “Debug only code, don’t get suckered in by the comments.” Or by websites.
The Oberon RTK framework is being developed using the Astrobe series of compilers/linkers.
Oberon RTK programs can be built using the following current versions of Astrobe (v9.3):
Since the Cortex-M family of MCUs are upwards-compatible on instruction level, code generated with compilers/linkers for the RP2040 can basically run on the RP2350. The RP2350 has a different address map layout, though, and a few conceptual and implementation changes here and there compared to the RP2040, so the programs need to be recompiled using the library modules written for the RP2350. Of course, code generated with a compiler/linker for the RP2040 cannot take advantage of the full instruction set of the RP2350.
Here’s how to configure Astrobe.
.bin
files, which can be transmogrified to UF2 and uploaded via USB using the tools described here.pioasm
assembler and made accessible from Oberon using pio2o
.The RTK modules depend on a few modules in the Astrobe library. Hence, you need to have a registered copy of one of the above IDEs. There may be free Starter Editions available.
CFB Software has kindly granted permission to ask and answer questions related to this framework on the Astrobe forum. You can also e-mail me, or use the GitHub issue functionality.
Status as of mid December 2024:
The current stage of the migration focuses on running RP2350 software in the Secure domain in privileged mode, with the extensions for also using the Non-secure realm possibly coming later. This also depends on the corresponding forthcoming features by the Astrobe compiler for the RP2350. As far as the capabilities of the two MCUs overlap, running in Secure privileged mode on the RP2350 corresponds to running on the RP2040.
Latest updates and changes: 2024-12-15.
Check out the Change Notes for all updates and changes.
+ changes: change notes
+ config: configuration files for Astrobe [a]
+ v1: Oberon RTK version 1, for Astrobe for Cortex-M0
+ v2: Oberon RTK version 2, for Astrobe for RP2040, Cortex-M0, and Cortex-M4
+ examples
+ pico: example programs for Oberon RTK v1, for Pico
+ rpi: example programs for Oberon RTK v2, for Pico and Pico2
+ any
+ pico
+ pico2
+ libv2: Oberon RTK framework library version 2
+ any: MCU/board-independent modules
+ board
+ rpi
+ any: any Raspberry Pico x board
+ pico: Pico or compatible board
+ pico2: Pico2 or compatible board
+ mcu
+ rpi
+ any: any Raspberry RPx MCU
+ rp2040: RP2040-specific modules
+ rp2350: RP2350-specific modules
+ tools: the tools [b]
+ lib: Oberon RTK framework library version 1
+ any: MCU/board-independent modules
+ board
+ rp2040: modules for RP2040-based boards
+ any: any board
+ pico: Pico or compatible
+ mcu
+ m0
+ rp2040: RP2040-specific modules
+ kernel-v1
+ kernel-v2
The menus at the top are drop-downs, where applicable, but you can also click on the menu name item itself to get an overview page. The item on the top left-hand side is the home link.
On narrow mobile phone screens, the main menu itself is a drop-down, with no secondary drop-down from there. This would be awkward. Navigate via the overview pages in this case.
Please refer to section Licences.