Skip to content

RP2350 - PICOBOOT EXIT_XIP is NOT a no-op on A2 silicon #495

@piersfinlayson

Description

@piersfinlayson

The RP2350 datasheet says this:

5.6.4.6. EXIT_XIP (0x06)
A no-op provided for compatibility with RP2040. An XIP exit sequence (flash_exit_xip()) is issued once before entering
the USB bootloader, which returns the external QSPI device from whatever XIP state it was in to a serial command state,
and the external QSPI device then remains in this state until reboot.

This doesn’t seem to be true on A2 silicon.

Specifically, if I issue a FLASH_ERASE to an RP2350A2 (datecode 29 24) 1in BOOTSEL mode without issuing EXIT_XIP first, the command completes “instantly", with no error reported, but has no effect.

If I perform the same action on RP2350A4 (no EXIT_XIP followed by a FLASH_ERASE), the command takes time to complete (expected), and actually erases the flash.

I assume this is due to a bug in the A2 bootrom vs the datasheet, but I couldn’t find an issue for that in the bootrom repo. I also assume (but haven’t checked) that this is worked around in picotool, by explicitly issuing EXIT_XIP before a flash erase.

It would be useful to correct the datasheet, clarifying the different behaviour between steppings/bootroms and noting that an EXIT_XIP is required on A2 silicon and is not a no-op there.

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationpdfrp2350Concerning the RP2350 chip

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions