Skip to content

Use the Pico SDK's board definitions in Debug Probe firmware - #209

Open
carlwhamilton wants to merge 8 commits into
raspberrypi:masterfrom
carlwhamilton:pico_board
Open

carlwhamilton wants to merge 8 commits into
raspberrypi:masterfrom
carlwhamilton:pico_board

Conversation

@carlwhamilton

@carlwhamilton carlwhamilton commented Sep 11, 2026

Copy link
Copy Markdown

Use the Pico SDK's board definitions (which includes the debug_probe as of version 2.3.0) to configure the build and behavior of the Debug Probe firmware.

Unfortunately, this change affects the way firmware is configured for the Pico and Pico 2 boards. This is covered in the updated README.md, but could trip up users. The new method, however, is probably more inline with other projects.

Closes #210

lurch EDIT: According to the comments in #210 , this shouldn't be merged until after #208 has been merged.

Added "_CONFIG" to the include guards for the board configuration
headers. This will help avoid collisions and confusion with other,
similarly named headers.
The small amount of logic to select and configure the target board has
moved to a new, dedicated header: board_config.h. This will allow future
changes to board selection and configuration to be more easily isolated
and prevent probe_config.h from being polluted by board-related
shenanigans.
This simplifies building the Debug Probe firmware for any board
supported by the Pico SDK's board idenfication and configuration
framework. If no PICO_BOARD value is provided on the cmake command line,
firmware will be built for the `debug_probe` board defined in the SDK.
Building for the Debug Probe now requires the debug_probe board
definition from the Pico SDK, which was introduced in SDK version 2.3.0.

Unfortunately, performing this version test requires some gyrations in
pico_sdk_import.cmake to test the SDK's version before including the
standard SDK init file. Changing pico_sdk_import.cmake is generally
discouraged, but I couldn't find a better way to produce a helpful error
when building against an outdated SDK.
Comment thread pico_sdk_import.cmake
The firmware's default target board, debug_probe, requires Pico SDK
2.3.0 or newer. Therefore, this documentation for this requirement has
been hoisted into the "Hacking" section.
Resolved stacked commit mayhem.
@lurch

lurch commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

I guess this PR also has a slight impact on when an invalid-board-selection error gets raised - prior to this PR it would get flagged at cmake configure-time (in CMakeLists.txt), but after this PR it would only get flagged at compile-time (in include/board_config.h). However I'm not familiar enough with this repo to know if this would be a problem or not.

@lurch

lurch commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

which include the debug_problem

🤔 🤔 🤣

@carlwhamilton

Copy link
Copy Markdown
Author

I guess this PR also has a slight impact on when an invalid-board-selection error gets raised - prior to this PR it would get flagged at cmake configure-time (in CMakeLists.txt), but after this PR it would only get flagged at compile-time (in include/board_config.h). However I'm not familiar enough with this repo to know if this would be a problem or not.

That would depend on the nature of the unsupported board. If one tried to configure for a board that the SDK doesn't support (e.g. debug_problem), the failure happens during CMake configuration time. If somebody thinks they can compile the firmware for any old board (e.g. the SDK's none board), then yes, the failure occurs at compile time.

I'm new to all of this, so I don't fully appreciate what the expectations should be. I'm happy to rework this change if people feel strongly that the failure should happen during configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Integrate firmware configuration with the Pico SDK's board definitions

2 participants