platformio / platform-raspberrypi

Raspberry Pi: development platform for PlatformIO
https://registry.platformio.org/platforms/platformio/raspberrypi
Apache License 2.0
70 stars 86 forks source link

Add baremetal as framework #4

Open MisterSandman7 opened 3 years ago

MisterSandman7 commented 3 years ago

Although Arduino is very cool it would be nice to be able to write programs in a more classic C/C++ format (especially when tinkering with the C SDK from Raspberry).

LeoDJ commented 2 years ago

It's already added here: https://github.com/Wiz-IO/wizio-pico Maybe it could be ported to the official platform?

Crazy-Ginger commented 1 year ago

The Wizio-pico library has recently disappeared. Tried to get in contact with the dev but no response yet. Would this change be enough to incentivise work on this issue?

jonathanlundstrom commented 1 year ago

The Wizio-pico library has recently disappeared. Tried to get in contact with the dev but no response yet. Would this change be enough to incentivise work on this issue?

I've spoken to the dev recently and he will not resume the project. He did not enjoy working with the Pico and the Pi Foundation and therefore decided to cancel it. It's a shame that he went so far as removing it from Github. So I also have the same question. Could this framework be adapted instead?

sstaub commented 1 year ago

Why not using https://github.com/earlephilhower/arduino-pico ?

jonathanlundstrom commented 1 year ago

Why not using https://github.com/earlephilhower/arduino-pico ?

Not bare metal – still Arduino. It's plagued with Wi-Fi and socket issues as well as terrible power consumption. I'm looking for a pure C solution running only the Pico SDK – just like WizIO, but preferably one that still exists.

Spencer-Sawyer commented 1 year ago

As a note for people looking for the disappeared platform: This commit: https://github.com/blackketter/wizio-pico/commit/a0e41397f445566efca7b26f16af4aa2416aa99b looks like last that was pushed

OzmoOzmo commented 1 year ago

Hi - I too am looking for a way to use

The backup of the WizeIO - would not work with the "Raspberry Pi Pico Debug Probe" (Logs says it is about to upload via CMSIS-DAP but then it goes and makes a .uf2 file and tries to update via flash). Maybe it works with 2 picos (picoprobe) only - but either way, its discontinued and unsupported.

The earlephilhower - would not run the most basic print("hello world") - linker errors with the required "stdio_init_all()" call.

All other options Id found seem to be Arduino based - which is not an option for the project I am on.

I got earlephilhower to work by copying 6 missing stdio and stdlib files from from the pico sdk to the src folder of my project - so now it can print to platformio's terminal - but anyone have a less hacky way of doing this?

thanks!

sporniket commented 1 year ago

I am looking forward to this kind of integration too. Thanks @OzmoOzmo for the feedback about the existing solutions, it helps me a lot in deciding to learn the pico sdk for the time being, as the quickest path to be able to get something.

Because I also looked at how to create a PlatformIO framework, to see if I could do something. And it seems to me that it's not something trivial and quick to do :( I mean, there is a quick guide but for me, going further (even with starting from the two existing solutions) require :

jonathanlundstrom commented 1 year ago

When wizio-pico was taken down I started working on a forked version that removes the Arduino Framework. The goal was to clean up the code and get an understanding of the previous version of the SDK (severely rearranged) was included, to see if I could include the new one as a submodule and get it working.

Unfortunately I quickly realized that I need to learn more about PlatformIO and the build/debug tools to be able to implement something properly, and this is something that I don't have time for at the moment - unfortunately 🥺

I've pushed the code here if anybody else wants to take a look at it, or base something on it: https://github.com/ec-solutions/ez-pico. The README is still from the original wizio-pico project.

It would be fun if we could work on something together.

sporniket commented 1 year ago

If I ever have time to study all that stuff, I'll give it a try. Don't hold your breath, though.

whatisbyandby commented 1 year ago

When wizio-pico was taken down I started working on a forked version that removes the Arduino Framework. The goal was to clean up the code and get an understanding of the previous version of the SDK (severely rearranged) was included, to see if I could include the new one as a submodule and get it working.

Unfortunately I quickly realized that I need to learn more about PlatformIO and the build/debug tools to be able to implement something properly, and this is something that I don't have time for at the moment - unfortunately 🥺

I've pushed the code here if anybody else wants to take a look at it, or base something on it: https://github.com/ec-solutions/ez-pico. The README is still from the original wizio-pico project.

It would be fun if we could work on something together.

@jonathanlundstrom I would be interested in contributing to this. I stumbled on this issue, because I am interested in the same thing, programming the pico using the C/C++ SDK instead of all the overhead of using the Arduino framework. I'm working on an MQTT Smart Thermostat with a Pico-W using the SDK. I'm finding it pretty clunky to run UTs on my dev machine, and then switch to target the pico. Seems like Platformio would be a good solution to this problem, and I was debating tweaking the code to work with Arduino so I could use it, but I would be much happier with using the SDK with Platformio.

KenwoodFox commented 7 months ago

Anecdotal but in the meantime, ive been experimenting with https://github.com/maxgerhardt/wizio-pico.git and it seems to work for me (but i have limited experience)

I would love to see a new baremetal framework that just uses https://github.com/raspberrypi/pico-sdk or maybe another alternative to just include the pico-sdk

AgainPsychoX commented 3 months ago

Any news for official support?

Regeneric commented 2 months ago

Is there anything new in this matter?

sstaub commented 2 months ago

There is a new extension for vscode from the vendor https://marketplace.visualstudio.com/items?itemName=raspberry-pi.raspberry-pi-pico

KenwoodFox commented 2 months ago

Thats pretty cool but dosn't fix the issues in platformio right?

sstaub commented 2 months ago

This issue will never fixed by PIO.

KenwoodFox commented 2 months ago

Thats a real shame, what about using PIO to just handle building the sorta, more raspberrypi specific cmake stuff? that could still be handy even if its just backpacking on the existing SDK

sstaub commented 2 months ago

There was a big discussion about here https://github.com/platformio/platform-raspberrypi/pull/36 The PIO team wants money from the raspberry pi foundation.

OzmoOzmo commented 2 months ago

Hi, That link of the spat with pio and rpi is very disappointing. Ive have Earlephilhower working perfectly for my needs. PIO compiles (as far as i remember) Baremetal pico with no need use Arduino framework but I can serial.print() from pico back to the platformio console. Step Debugging works perfectly using the official pico debugger. And all uploads upload very fast without having reset the pico. All the pico sdk examples work ok. Setup is as I described above. If this is useful, if anyone wants to try replicate what I have - to help document the setup for others, let me know.

zbauman3 commented 1 day ago

Just adding in here that I'd love pico-sdk support in PlatformIO. It's a shame that we have to switch between different dev environments for different MCUs.

PlatformIO is really a game changer for development, but not supporting one of the most popular MCUs is very disappointing.

sporniket commented 1 day ago

Yep, so disappointing. And a wake up call that some parts of PlatformIO should not be taken for granted. So much so that I plan to learn how to operate without PlatformIO, "just in case", even if I still plan to use it as a primary dev platform for supported platforms and toolchains.