Read the shared embedded contract and keep source/build, device and physical evidence separate.
Read native SDK workflow. Confirm RP2040 versus RP2350, exact board, flash population, SDK revision, compiler and CMake cache. Arduino-Pico is a different framework; its core version is not the Pico SDK version. Preserve a requested CPU architecture and board profile.
Use an out-of-source build with the repository's PICO_BOARD, PICO_PLATFORM,
SDK path and toolchain. Avoid changing a populated build directory to another
chip or SDK; create a fresh build directory. Build the ELF before producing or
copying a UF2. Keep map/ELF and SDK revision together.
For PIO inspect instruction count, wrap points, clock divider, FIFO direction,
DREQ, pin mapping and DMA ownership; a legal instruction program can still wait
forever on the wrong pin/IRQ. For multicore code identify shared-data ownership,
locks and flash/XIP assumptions. SDK multicore is not automatically FreeRTOS.
Route runtime scheduling to memory-timing-debugging and SWD to
probe-debugging. USB CDC and UART stdio are distinct transports.
BOOTSEL/UF2 copying, picotool load, probe program and flash write hardware.
Build-only work ends at artifacts. Deliver the exact CMake configuration,
resolved SDK/compiler, compile result and target checks still required.
See platform coverage for the exact tested combination. A source procedure is not a claim that every target was tested.