论文标题

同步 - 嵌入式系统的API和运行时

Synchron -- An API and Runtime for Embedded Systems

论文作者

Sarkar, Abhiroop, Svensson, Bo Joel, Sheeran, Mary

论文摘要

编程嵌入式系统应用程序涉及编写并发,事件驱动和计时感知程序。传统上,这样的程序是用低级机器的编程语言(例如C或汇编)编写的。我们通过引入Synchron(一种API)提出了一种替代方案,该API向程序员提供了高级抽象,同时支持关联的运行时系统和一次性及时驱动程序中的低级基础架构。嵌入式系统应用显示出(i)并发,(ii)I/O-BOND和(iii)计时意识的一般特征。 To address each of these concerns, the Synchron API consists of three components: (1) a Concurrent ML (CML) inspired message-passing concurrency model, (2) a message-passing--based I/O interface that translates between low-level interrupt based and memory-mapped peripherals, and (3) a timing operator, $syncT$, that marries CML's $sync$ operator with timing windows inspired from Tinytimber内核。我们将同步API作为称为SynChronVM的虚拟机的字节码指令实现。 SynchronVM托管了CAML启发的功能语言作为其前端语言,VM的后端支持STM32F4和NRF52微控制器,RAM的RAM为数百kilobytes。我们通过显示嵌入式系统中常见的表达状态机器的示例来说明同步API的表现力。通过音乐编程练习来证明定时功能。最后,我们提供有关SynchronVM的响应时间,抖动率,内存和功率使用的基准。

Programming embedded systems applications involve writing concurrent, event-driven and timing-aware programs. Traditionally, such programs are written in low-level machine-oriented programming languages like C or Assembly. We present an alternative by introducing Synchron, an API that offers high-level abstractions to the programmer while supporting the low-level infrastructure in an associated runtime system and one-time-effort drivers. Embedded systems applications exhibit the general characteristics of being (i) concurrent, (ii) I/O-bound and (iii) timing-aware. To address each of these concerns, the Synchron API consists of three components: (1) a Concurrent ML (CML) inspired message-passing concurrency model, (2) a message-passing--based I/O interface that translates between low-level interrupt based and memory-mapped peripherals, and (3) a timing operator, $syncT$, that marries CML's $sync$ operator with timing windows inspired from the TinyTimber kernel. We implement the Synchron API as the bytecode instructions of a virtual machine called SynchronVM. SynchronVM hosts a Caml-inspired functional language as its frontend language, and the backend of the VM supports the STM32F4 and NRF52 microcontrollers, with RAM in the order of hundreds of kilobytes. We illustrate the expressiveness of the Synchron API by showing examples of expressing state machines commonly found in embedded systems. The timing functionality is demonstrated through a music programming exercise. Finally, we provide benchmarks on the response time, jitter rates, memory, and power usage of the SynchronVM.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源