My platformio Raspberry Pi Pico C++ SDK experience

TL;DR please add official support for verbatim Pico C++ SDK experience.

Noticing that Pico C++ support is coming to platform I decided recently to port the hardware and firmware of a STM32 design to Pico (Stepper Motor Analyzer | Hackaday), expecting to find the Pico C++ SDK experience on platformio.

I started with the official platformio Pico support but realized quickly that it provides a subset of the SDK with some mixture of Android and mBed functionality. Next I tried the unofficial Wizio’s distribution and it was much better (thanks @wizio), I was able to use all the SDK functionality I needed and even use an hardware debugger, but still, the out-of-box experience was different from the SDK (e.g. SDK files not accessible via Go To Definition, not support for int64 printf, etc).

Those gap in out of the box experience made it difficult to follow the SDK documentation and to communicate with C++ users on the RPI forums since they have different experience.

My question to the Platform IO team, are there any plans to have official support for verbatim C++ SDK experience? I think that the Pico’s C++ API is complete, intuitive, and well designed, and does not require Android abstraction and simplification (or ‘butchering’ if you may ;-))

BTW, for me the Pico board is definitely a winner over the SMT32 blackpill modules I used so far.


1 Like

99% printf is used for debug, so by default my platform use -specs=nano.specs
and nano.specs not use float, double and int64…
in builder float is enabled

if you want full gcc printf support:

board_build.nano = disable

btw: gcc/newlib is used to be unix like in future
now platform support and unistd file operations
example with SPI / SD card:

Thanks @wizio adding board_build.nano = disable to platformio.ini indeed allows to printf int64.

I think it will be extremely useful to have a stable platformio environment with configuration and experience identical to the C++ SDK. Hopefully platformio will adopt your work or come with their own.

Actually, my question is - how could I use intricate abilities addressed by the SDK, like a PWM hardware, using the Arduino framework?

I’m building an RPM counter using the Pico, and I have no idea where to start if I must throw away the SDK entirely…

In more general terms, I’m really torn here. Here’s how:

  • I need to use libraries available only for Arduino framework
  • I need to use rp2040 specific abilities, which I have no clue how to get to with Arduino flavored C++

Please advise, fellow coders :slight_smile: Thanks!

Edit - Check this out!