I did a quick test; building my code which simply reports LED configuration. That's trivial code, a 'main.c' requiring just 'pico_stdlib', but it still compiles numerous Pico SDK files, and takes 27 seconds to build on my PI 4B 1GB, with pre-build 'picotool' and 'pioasm'. For all 130 targets boards of Pico SDK 2.2.0 that would be predicted to take about an hour and use about 1 GB of disk if not cleaning up build directories after each build - I would recommend building to RAM Disk then copying the UF2 to Hard Disk after each build.
More complicated code, and that using C++, would probably take longer but it can be mitigated by using a better Pi or cross-compiling from a PC.
Bottom line - time one build, multiply by 130. And expect that to grow in the future.
And, for now, I am inclined to say that's the only option if you want to guarantee the UF2 for each target board will work as expected on that board.
And I don't believe it's worth appealing to Raspberry Pi to change how the Pico SDK works as they have always rejected that when it has been previously suggested. Which isn't surprising - they designed it to be optimal in their view, tailored per board, and it would be quite a U-turn to do it differently and a huge amount of effort to do that.
Commercial ventures can probably invest in top-end devices to minimise total build times but makers, hobbyists, and FOSS developers, will just have to do the best they can and suck it up.
The only improvement on that I can see is to build everything by poking to a baseline UF2, somehow determine or verify they work, using poking for those which do and explicitly building for the ones which don't.
Thought : You could build for each target board. Then determine which UF2 are exactly the same. You would then end up with a list of builds which must be built, and a list of which ones can be exact clones with a different name.
You will hopefully only have to build everything once, whenever the SDK changes, after that you can use your determined list.
The beauty of this is that it works with the Pico SDK and board definitions 'as is'. No need for poking anything though that would be necessary for tailoring board name when cloning if you need that.
The only problem is there may not be any 'exact same UF2' if building for every board. Time stamps and board names may differ and that would need taking care of.
I think it could be done. But how easily and how much it would ultimately save I have no idea.
More complicated code, and that using C++, would probably take longer but it can be mitigated by using a better Pi or cross-compiling from a PC.
Bottom line - time one build, multiply by 130. And expect that to grow in the future.
And, for now, I am inclined to say that's the only option if you want to guarantee the UF2 for each target board will work as expected on that board.
And I don't believe it's worth appealing to Raspberry Pi to change how the Pico SDK works as they have always rejected that when it has been previously suggested. Which isn't surprising - they designed it to be optimal in their view, tailored per board, and it would be quite a U-turn to do it differently and a huge amount of effort to do that.
Commercial ventures can probably invest in top-end devices to minimise total build times but makers, hobbyists, and FOSS developers, will just have to do the best they can and suck it up.
The only improvement on that I can see is to build everything by poking to a baseline UF2, somehow determine or verify they work, using poking for those which do and explicitly building for the ones which don't.
Thought : You could build for each target board. Then determine which UF2 are exactly the same. You would then end up with a list of builds which must be built, and a list of which ones can be exact clones with a different name.
You will hopefully only have to build everything once, whenever the SDK changes, after that you can use your determined list.
The beauty of this is that it works with the Pico SDK and board definitions 'as is'. No need for poking anything though that would be necessary for tailoring board name when cloning if you need that.
The only problem is there may not be any 'exact same UF2' if building for every board. Time stamps and board names may differ and that would need taking care of.
I think it could be done. But how easily and how much it would ultimately save I have no idea.
Statistics: Posted by hippy — Mon Aug 04, 2025 2:00 pm