Good morning,
Word of warning, I’m not really (not at all actually) a SW developer, merely an educated HW engineer trying to do something with a Pico.
I’m really struggling with the various options to get sample Pico SDK code running on RPI Pico Zero from waveshare, using either the included Arduino framework, or Baremetal with Wizio-SDK
I would prefer, because of library availabilities, to use the Arduino framework
To that end, I have configured my platform.io as follows:
[env:raspberry-pi-pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
board_build.filesystem_size = 0.5m
monitor_port = COM6
monitor_speed = 115200
lib_deps =
kitesurfer1404/WS2812FX
build_flags =
From there, I can easily create a simple sketch that will use WS2812FX library to drive WS2812 ledstrip, it works as planned, with serial enabled.
I then wanted to move to use PIO. As a starting point, I ported over to Arduino framework the WS2812 PIO sample from the RPI Pico SDK.
At this point, I hit two issues:
-
The statement “stdio_init_all()” is not recognized by the linker, I get this error when compiling in the linker output “undefined reference to `stdio_init_all’”. I need to remove it. Not sure it’s needed, since I do get USB serial working anyway even without it, but would welcome comments.
-
The function “puts” which is present in the sample WS2812 code from the PIO, while recognized and compile, simply hangs the Pico. No activity, no serial, USB device not recognized, I have to enter Bootsel to recover
If I replace these “puts” functions by regular Serial.printf calls it works as planned, ie I can use PIO to control WS2812 ledstrips from the sample code.
So, moving to more advanced stuff, I started looking into porting the logic analyzer sample code (again from the Pico SDK samples) - that was actually my primary goal.
And here, it’s (at least) the “hard_assert” statement which is not working properly (just like the puts function, it hangs the Pico).
If I remove this call, I can compile and the Pico does not hang, and USB serial is operational. It’s not working as it should (meaning I don’t get any output in the serial), but that might be something else that I’ll figure out later, or simply also because this hard_assert function is actually useful in the scope of the logic analyzer code.
Thing is, I can’t find any documentation on what this function does, the only reference I found is here:
Raspberry Pi Pico SDK: pico_base/include/pico/assert.h Source File
From there I can’t figure out if this call is really required for proper operation of the logic analyzer function.
I would therefore welcome comments on:
- Are there known issues with some Pico SDK functions in the current Arduino framework port
- Are “stdio_init_all” and “hard_assert” crucial for operation
- Would anyone knowledgeable have already ported the logic analyzer code to Arduino framework on PlatformIO with the default environnement ?
Thanks !