Higher-Order Concurrency for Microcontrollers

08/17/2021
by   Abhiroop Sarkar, et al.
0

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.

READ FULL TEXT

Authors

page 5

page 9

page 10

05/06/2022

Synchron – An API and Runtime for Embedded Systems

Programming embedded systems applications involve writing concurrent, ev...
11/05/2021

Pirouette: Higher-Order Typed Functional Choreographies

We present Pirouette, a language for typed higher-order functional chore...
05/27/2021

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

With the growing ubiquity of Internet of Things(IoT), more complex logic...
02/19/2019

Composing bidirectional programs monadically (with appendices)

Software frequently converts data from one representation to another and...
10/28/2020

Actris 2.0: Asynchronous Session-Type Based Reasoning in Separation Logic

Message passing is a useful abstraction for implementing concurrent prog...
01/21/2021

General Decidability Results for Asynchronous Shared-Memory Programs: Higher-Order and Beyond

The model of asynchronous programming arises in many contexts, from low-...
10/23/2020

Adjoint Reactive GUI

Most interaction with a computer is done via a graphical user interface....
This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.