-
Notifications
You must be signed in to change notification settings - Fork 3
Description
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.