Ravenscar profile/tasking on RP2040

I’m attempting to get tasking working on an RP2040 project I’m starting. According to the docs at Ada on the Raspberry Pi Pico, there were plans to get the tasking runtime included directly in the arm-eabi toolchain, and it appears that may have happened. In GNAT Studio, my runtime listing shows a “light-tasking-rpi-pico” and “light-tasking-rpi-pico-smp” runtime. Attempting to use these runtimes is giving me some linker trouble, which I’m working through, but I want to be sure that I’m putting my time toward the latest supported configuration for this use case. Does anybody know what the current situation is concerning the Ravenscar profile and tasking runtimes on the RP2040?

I’d like to thank @JeremyGrosser for all the legwork he has done on the HAL for the RP2040 – your work is hugely appreciated!

Thank you for your time,
Thomas Meier

1 Like

I think I have a project somewhere that uses the smp runtime, I’ll see if I can get an example uploaded to GitHub. I’m traveling this week, so it may be a few days before I can do that.

From what I remember, the ravenscar runtime takes care of the linker script and boot2 code, so you can remove the package Linker section from your gpr.

If you’re using rp2040_hal drivers and the ravenscar runtime in the same project, you’ll need to set Use_Startup=false and Interrupts=bb_runtimes config variables in alire.toml. I don’t remember the exact syntax for that, so take a look at the Alire documentation.

Last time I tried the RP2040 smp runtime (I think it was called differently at that time), the linker was complaining about missing atomic operations.

Removing the linker section and setting those config variables seems to have done the trick! Thank you very much for the prompt response!

1 Like