Functional Programming for Embedded Systems
Licentiate thesis, 2022
However, embedded systems usually run on heavily memory-constrained devices with memory in the order of hundreds of kilobytes and applications running on such devices embody the general characteristics of being (i) I/O- bound, (ii) concurrent and (iii) timing-aware. Popular functional language compilers and runtimes either do not fare well with such scarce memory resources or do not provide high-level abstractions that address all the three listed characteristics.
This work attempts to address this gap by investigating and proposing high-level abstractions specialised for I/O-bound, concurrent and timing-aware embedded-systems programs. We implement the proposed abstractions on eagerly-evaluated, statically-typed functional languages running natively on microcontrollers. Our contributions are divided into two parts -
Part 1 presents a functional reactive programming language - Hailstorm - that tracks side effects like I/O in its type system using a feature called resource types. Hailstorm’s programming model is illustrated on the GRiSP microcontroller board.
Part 2 comprises two papers that describe the design and implementation of Synchron, a runtime API that provides a uniform message-passing framework for the handling of software messages as well as hardware interrupts. Additionally, the Synchron API supports a novel timing operator to capture the notion of time, common in embedded applications. The Synchron API is implemented as a virtual machine - SynchronVM - that is run on the NRF52 and STM32 microcontroller boards. We present programming examples that illustrate the concurrency, I/O and timing capabilities of the VM and provide various benchmarks on the response time, memory and power usage of SynchronVM.
Embedded Systems
Timing
Concurrency
Functional Programming
Virtual Machine
Language Runtime
Author
Abhiroop Sarkar
Chalmers, Computer Science and Engineering (Chalmers), Functional Programming
Hailstorm : A Statically-Typed, Purely Functional Language for IoT Applications
Proceedings of the 22nd ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming,;(2020)
Paper in proceeding
Higher-Order Concurrency for Microcontrollers
Proceedings of the 18th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes,;(2021)p. 26-36
Paper in proceeding
Synchron - An API and Runtime for Embedded Systems
Leibniz International Proceedings in Informatics, LIPIcs,;Vol. 222(2022)p. 17:1-17:28
Paper in proceeding
Octopi: Säker Programering för Sakernas Internet
Swedish Foundation for Strategic Research (SSF) (RIT17-0023), 2018-03-01 -- 2023-02-28.
Subject Categories
Computer Engineering
Embedded Systems
Computer Systems
Areas of Advance
Information and Communication Technology
Driving Forces
Innovation and entrepreneurship
Publisher
Chalmers