[Alire] Which rp2040 runtime?

I bought an el cheapo rp2040 pico board (probably a clone) from ali (16MB variant is probably overkill) because it was cheap.

I dug out the parts of a broken Kawai ES110 I bought to see if i could find out what’s wrong with it, but no luck so far, the plan was always to bolt on a Linux SBC and try to turn it into something useable as I can’t afford a replacement main board right now.

But I thought I’d start with this rp2040 as it’s here and useable. But what do I need from Alire?

The intention is to use the ES’ main panel (JST B13B-PH-K) the IO board for the MIDI out (only - via a JST B7B-PH-K pin) and the keybed for input (JST B15B-PASK-1). Need 28 pins at most.

And I’ve just realised they sent the wrong board, they sent me the lite version and I cannot find a pin out for that bar what’s on the back, nor any docs about what a “lite” version is, yes a refund is happeningm, don’t know if I need to send this back and whether I can even use it now.

You can get the official standard Pico board for 4€/$. It is not worth the trouble to order a cheap malfunctioning clone from China.

The reference for Ada on RP2040 is Jeremy’s page Ada on the Raspberry Pi Pico.

You can already do quite a lot with the light runtime (ex-zero-footprint). I also had good results with the light_tasking runtime. See GitHub - damaki/rp-runtimes: Ada/SPARK runtimes for the Raspberry Pi RP2040 and RP2350 and the discussions here and here

1 Like

I bought it with free shipping and it was cheaper than ordering from here.

Yeah, I saw Jeremy’s page, what I wanted to know was which to use as there seems to be multiple different types.

Regarding runtimes for the RP2040, the choice depends on how much language support you want. If you just want a “light” runtime (no tasking, minimal heap support, no exception propagation etc) then you can just use the rp2040_hal crate. You can check out Jeremy’s blink example as an example app that uses a light runtime.

If you want more language support for things like Ada tasks (across both cores), protected objects, exception propagation, or a full heap allocator, then you can use either the light_tasking_rp2040 or embedded_rp2040 crates. I have an example of using these runtimes to run tasks on both cores in my pico_smp_demo repo.

I assume that this clone is meant to have the same flash chip as the genuine Pico (or at least one that is drop-in compatible with it) in which case you don’t need to worry about it. If the flash chip is not compatible, however, then you may need to tweak the crate configuration to make sure they use a compatible flash driver so that the QSPI is correctly configured.

1 Like

Ok, for ease probabbly go with embedded then.

As for the flash chip, it’s a boyamicro 25q128essig, no idea if that’s same or compatible.

From a quick look at the datasheet it appears compatible with the equivalent Winbond part, so you shouldn’t need to change anything. You should be able to build the pico_smp_demo project I linked above and it should run and blink the LED on the board (assuming the LED is on the same GPIO as the Pico, which it probably is).

I get continuity with the tiny resistor I need a billion times magnification on to see and pin labeled “25” and the moving the probe up one to “AG” lights up the LED.

That’s the same pin as the Pico, so blinky demos for the Pico should also work on your clone.

1 Like

Yup, the blink demo works, had to install elf2uf2-rs to get it converted with cargo, both uf2-util and pico-uf2 didn’t work for me because I didn’t know what to do with them.

Glad you got it working!

1 Like

With the light_Tasking and embedded runtimes, can you have multiple tasks running on both cores or just one task per core?

You can have multiple tasks on both cores. The runtime will take care of context switching between them on each core based on their priority in the usual manner.

2 Likes