+1 for the copy_to_ram build (which isn't supported by arduino-pico, but sounds like you've moved beyond it anyway) because of this:
The XIP and AHB both have performance counters defined in the datasheet. You could sample those, too, to get an idea of the differences with and without cross CPU contention.
We ran into this on the ESP8266 Arduino core where the STL templates ended up making new template-generated functions which were stored in flash and not taggable as "copy to RAM" by the core. (On the 8266 we ended up manually hacking the LD file to make that happen since we knew exactly what we needed.) If you're running something like a std::iterator over that std::vector, that bit of code will most likely be stored in flash (you can look at the generated .map file and use any C++ demangler to get real names). So your RAM routines very well could be calling to flash to proceed thru each element or dereference a smart pointer.[your use of]... smart pointers or through std::vectors [...]
The XIP and AHB both have performance counters defined in the datasheet. You could sample those, too, to get an idea of the differences with and without cross CPU contention.
Statistics: Posted by earlephilhower — Thu Sep 04, 2025 11:38 pm