Datasheet

Table Of Contents
Table 167. PICOBOOT
Interface Descriptor
Field Value
bLength 9
bDescriptorType 4
bInterfaceNumber varies
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 0xff (vendor specific)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
2.7.5.3. Identifying The Endpoints
The PICOBOOT interface provides a single BULK OUT and a single BULK IN endpoint. These can be identified by their
direction and type. You should not rely on endpoint numbers.
2.7.5.4. PICOBOOT Commands
The two bulk endpoints are used for sending commands and retrieved successful command results. All commands are
exactly 32 bytes (see Table 168) and sent to the BULK OUT endpoint.
Table 168. PICOBOOT
Command Definition
Offset Name Description
0x00 dMagic
The value 0x431fd10b
0x04 dToken A user provided token to identify this request by
0x08 bCmdId The ID of the command. Note that the top bit indicates data transfer direction
(0x80 = IN)
0x09 bCmdSize Number of bytes of valid data in the args field
0x0a reserved 0x0000
0x0c dTransferLength The number of bytes the host expects to send or receive over the bulk channel
0x10 args 16 bytes of command specific data padded with zeros
If a command sent is invalid or not recognized, the bulk endpoints will be stalled. Further information will be available via
the GET_COMMAND_STATUS request (see Section 2.7.5.5.2).
Following the initial 32 byte packet, if dTranferLength is non-zero, then that many bytes are transferred over the bulk pipe
and the command is completed with an empty packet in the opposite direction. If dTransferLength is zero then command
success is indicated by an empty IN packet.
The following commands are supported (note common fields dMagic, dToken, reserved are omitted for clarity)
2.7.5.4.1. EXCLUSIVE_ACCESS (0x01)
Claim or release exclusive access for writing to the RP2040 over USB (versus the Mass Storage Interface)
RP2040 Datasheet
2.7. Bootrom 130