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.
-
Without debugging, the native file format is UF2. ELF binaries without DWARF debug data are an option as well.
-
The RP2350 can be set up to use partition tables. Please refer to the corresponding data sheet.
-
Other guides:
- debugging: Build, Load & Debug: RP2350
- Secure/Non-secure without debugging: Build & Load: RP2350 (S/NS)
- Secure/Non-secure with debugging: Build, Load & Debug: RP2350 (S/NS)
See also Practical Notes.
Steps
1. Compile and Link the Program
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 => Uploadmenu 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