Datasheet

Table Of Contents
Note that after downloading a regular flash binary, a reset is performed after which the flash binary second stage (at
address 0x10000000 - the start of flash) will be entered (if valid) via the bootrom.
A downloaded RAM Only binary is entered by watchdog reset into the start of the binary, which is calculated as the lowest
address of a downloaded block (with Main RAM considered lower than Flash Cache if both are present).
Finally it is possible for host software to temporarily disable UF2 writes via the PICOBOOT interface to prevent
interference with operations being performed via that interface (see below), in which case any UF2 file write in progress
will be aborted.
2.7.5. USB PICOBOOT Interface
The PICOBOOT interface is a low level USB protocol for interacting with the RP2040 while it is in USB boot mode. This
interface may be used concurrently with the USB Mass Storage Interface.
It provides for flexible reading from and writing to RAM or Flash, rebooting, executing code on the device and a handful of
other management functions.
Constants and structures related to the interface can be found in the Pico SDK header https://github.com/raspberrypi/
pico-sdk/tree/pre_release/src/common/boot_picoboot/include/boot/picoboot.h
2.7.5.1. Identifying The Device
A RP2040 device is recognized by the Vendor ID and Product ID in its device descriptor (shown in Table 166).
Table 166. RP2040
Boot Device
Descriptor
Field Value
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x2e8a
idProduct 0x0003
bcdDevice 1.00
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
2.7.5.2. Identifying The Interface
The PICOBOOT interface is recognized by the "Vendor Specific" Interface Class and the zero Interface Sub Class and
Interface Protocol (shown in Table 167). Note that you should not rely on the interface number, as that is dependent on
whether the device is also exposing the Mass Storage Interface. Note also that the device equally may not be exposing
the PICOBOOT interface at all, so you should not assume it is present.
RP2040 Datasheet
2.7. Bootrom 129