From b57c049a6bb4dc21e0ec01741c26e2e6d482d627 Mon Sep 17 00:00:00 2001 From: David Menting Date: Mon, 1 Sep 2025 16:11:55 +0200 Subject: [PATCH] Add RP2350 cross-partition flash access support Use XIP_NOCACHE_NOALLOC_NOTRANSLATE_BASE on RP2350 to enable access to flash regions beyond the currently booted partition. On RP2040, continue using XIP_BASE for optimal cached performance. Fixes #65: RP2350 partitioned flash access restriction --- src/blockdevice/flash.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/blockdevice/flash.c b/src/blockdevice/flash.c index 28de930..ac022a1 100644 --- a/src/blockdevice/flash.c +++ b/src/blockdevice/flash.c @@ -73,7 +73,11 @@ static int read(blockdevice_t *device, const void *buffer, bd_size_t addr, bd_si blockdevice_flash_config_t *config = device->config; mutex_enter_blocking(&config->_mutex); +#ifdef PICO_RP2350 + const uint8_t *flash_contents = (const uint8_t *)(XIP_NOCACHE_NOALLOC_NOTRANSLATE_BASE + flash_target_offset(device) + (size_t)addr); +#else const uint8_t *flash_contents = (const uint8_t *)(XIP_BASE + flash_target_offset(device) + (size_t)addr); +#endif memcpy((uint8_t *)buffer, flash_contents, (size_t)size); mutex_exit(&config->_mutex);