Higher-Order Concurrency for Microcontrollers

by   Abhiroop Sarkar, et al.

Programming microcontrollers involves low-level interfacing with hardware and peripherals that are concurrent and reactive. Such programs are typically written in a mixture of C and assembly using concurrent language extensions (like and ), resulting in unsafe, callback-driven, error-prone and difficult-to-maintain code. We address this challenge by introducing - a bytecode-interpreted virtual machine that provides a message-passing based higher-order concurrency model, originally introduced by Reppy, for microcontroller programming. This model treats synchronous operations as first-class values (called ) akin to the treatment of first-class functions in functional languages. This primarily allows the programmer to compose and tailor their own concurrency abstractions and, additionally, abstracts away unsafe memory operations, common in shared-memory concurrency models, thereby making microcontroller programs safer, composable and easier-to-maintain. Our VM is made portable via a low-level bridge interface, built atop the embedded OS - Zephyr. The bridge is implemented by all drivers and designed such that programming in response to a software message or a hardware interrupt remains uniform and indistinguishable. In this paper we demonstrate the features of our VM through an example, written in a Caml-like functional language, running on the and microcontrollers.


page 5

page 9

page 10


Synchron – An API and Runtime for Embedded Systems

Programming embedded systems applications involve writing concurrent, ev...

Pirouette: Higher-Order Typed Functional Choreographies

We present Pirouette, a language for typed higher-order functional chore...

Hailstorm : A Statically-Typed, Purely Functional Language for IoT Applications

With the growing ubiquity of Internet of Things(IoT), more complex logic...

Composing bidirectional programs monadically (with appendices)

Software frequently converts data from one representation to another and...

Alice or Bob?: Process Polymorphism in Choreographies

We present PolyChorλ, a language for higher-order functional choreograph...

Introduction to Rank-polymorphic Programming in Remora (Draft)

Remora is a higher-order, rank-polymorphic array-processing programming ...

Please sign up or login with your details

Forgot password? Click here to reset