Using a RasPi pico with Nerves

The Raspberry Pi pico seems like a very nifty platform for the sorts of IoT projects I’d like to play with. However, it doesn’t run Linux, so it doesn’t seem like a Nerves port is in the cards.

That said, I wonder if it might be possible to support a lightweight version of Nerves and the Erlang VM on the pico. This might let folks take advantage of the Nerves tool chain and the Actor approach to programming distributed systems. It might even encourage some pico users to look into using Nerves. Comments? (ducks).

-r

The Nerves core team is focused on microprocessor-based embedded devices, so supporting a Cortex-M0 device is not something that we’d take on. That’s not to say that what you propose wouldn’t be interesting.

The two routes I know that might support the Pico are:

  1. Porting AtomVM which is a small BEAM bytecode interpreter
  2. Using Lumen to compile Elixir to machine code.
2 Likes

The RPi Pico is based on the RP2040-Microcontroller, which is a Cortex-M0+. While its the biggest M0 I know of (lots of RAM, Flash, MHz) its still a very limited design, most notably: it has no FPU.

The most lightweight option AtomVM offers is a STM32F4 which is a Cortex-M4 with FPU.

Maybe they can go smaller? But M0 - doubtful!? If its possible this would be indeed a great opportunity and I’m sure the AtomVM-team will take it.

see here for a comparison (Table “ARM Cortex-M instruction variations”)

You should have a look at https://www.grisp.org/ if you are interested in BEAM on smaller platforms.

EDIT: Just found this: https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/is-cortex-m4-the-strongest

1 Like
1 Like