Datasheet

Table Of Contents
Processor core 1 low power wait and launch protocol.
USB MSC class-compliant bootloader with UF2 support for downloading code/data to FLASH or RAM.
USB PICOBOOT bootloader interface for advanced management.
Routines for programming and manipulating the external flash.
Fast single-precision floating point library.
Fast bit counting / manipulation functions.
Fast memory fill / copy functions.
2.7.1. Bootrom Source
The bootrom source can be found at https://github.com/raspberrypi/pico-bootrom.
2.7.2. Processor Controlled Boot Sequence
A flow diagram of the boot sequence is given in Figure 13.
NN
N
N
Configure SSI and
connect to pads
Load 256 bytes
from flash
Checksum pass?
Which core am I?
PoR rescue
flag set?
Watchdog
boot-to-SRAM
set?
Increment
CPOL, CPHA and
delay 100us
Longer
than 0.5 s since
boot?
Start crystal
oscillator
100us delay
(pullup on flash CSn)
Read CSn multiple times and
take majority vote, to mitigate
noise due to weak pullup
Start PLLs. Sys,
USB clocked at 48
MHz
Crystal present?Read flash CSn
Enter USB device
mode bootcode
Halt
Enter flash
second stage
Clear flag and halt
Set SP and jump
to entry point
Sleep until given
entry point
Both core enter
bootroom
Y
Y
YY
0
Y
1
High (flash boot)
Low (USB device)
N
Figure 13. RP2040
Boot Sequence
After the hardware controlled boot sequence described in Boot Sequence, the processor controlled boot sequence starts:
Reset to both processors released: both enter ROM at same location
Processors check SIO.CPUID
Processor 1 goes to sleep (WFE with SCR.SLEEPDEEP enabled) and remains asleep until woken by user code,
via the mailbox
Processor 0 continues executing from ROM
If power up event was from Rescue DP, clear this flag and halt immediately
RP2040 Datasheet
2.7. Bootrom 114