Oberon RTK

Build & Load: RP2350

Build and load programs on RP2350 without debugging

Overview

This document describes how to build, load, and run RTK-based programs for the RP2350 without debugging.

See also Practical Notes.

Steps

Please refer to Compile and Link: RP2350.

Consult IMAGE_DEF as regards the inclusion of the mandatory IMAGE_DEF meta data block into the load file. Below, Path A and Path B are used to differentiate the to possible cases.

2. Make UF2 File

Path A: make-uf2 Embeds IMAGE_DEF

make-uf2 wraps the raw binary into UF2 blocks.

python -m make-uf2 rp2350 <program>.bin

As an aside, using make-elf you can also create a non-debug ELF file, for example to keep a build environment focused on one binary file type.

python -m make-elf --image-def <program>.bin

Path B: Module ImageDef Embeds IMAGE_DEF

Use the UF2 file as created by Astrobe.

To create a corresponding non-debug ELF file:

python -m make-elf <program>.bin

3. Load the Image

Without a Partition Table

3a. Put the RP2350 in BOOTSEL mode, which mounts the virtual volume RP2350

3b. To Load, use one of these options:

  • use Astrobe's Run => Upload menu command
  • copy in the Windows File Explorer or the macOS Finder by drag-and-drop to RP2350
  • copy from the command line using the OS file copy commands to RP2350
  • use picotool:
picotool load <program>.uf2 -v -x
picotool load <program>.elf -v -x

With a Partition Table

3a. Put the RP2350 in BOOTSEL mode, which mounts the virtual volume RP2350

3b. Load the UF2 file using picotool

picotool load -p <partition-no> <program>.uf2 -v -x

If the target partition is of type rp2350-arm-s, you can omit argument -p:

picotool load <program>.uf2 -v -x

With ELF files, argument -p must be used:

picotool load -p <partition-no> <program>.elf -v -x

Note: simply copying the UF2 file to volume RP2350 with a partition table does not appear to work, but this could be a defect that is rectified by the time you read this.

Last updated: 14 May 2026