A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems

06/02/2019
by   Bruce Belson, et al.
0

Many Internet of Things and embedded projects are event-driven, and therefore require asynchronous and concurrent programming. Current proposals for C++20 suggest that coroutines will have native language support. It is timely to survey the current use of coroutines in embedded systems development. This paper investigates existing research which uses or describes coroutines on resource-constrained platforms. The existing research is analysed with regard to: software platform, hardware platform and capacity; use cases and intended benefits; and the application programming interface design used for coroutines. A systematic mapping study was performed, to select studies published between 2007 and 2018 which contained original research into the application of coroutines on resource-constrained platforms. An initial set of 566 candidate papers were reduced to only 35 after filters were applied, revealing the following taxonomy. The C C++ programming languages were used by 22 studies out of 35. As regards hardware, 16 studies used 8- or 16-bit processors while 13 used 32-bit processors. The four most common use cases were concurrency (17 papers), network communication (15), sensor readings (9) and data flow (7). The leading intended benefits were code style and simplicity (12 papers), scheduling (9) and efficiency (8). A wide variety of techniques have been used to implement coroutines, including native macros, additional tool chain steps, new language features and non-portable assembly language. We conclude that there is widespread demand for coroutines on resource-constrained devices. Our findings suggest that there is significant demand for a formalised, stable, well-supported implementation of coroutines in C++, designed with consideration of the special needs of resource-constrained devices, and further that such an implementation would bring benefits specific to such devices.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/07/2019

WoTify: A platform to bring Web of Things to your devices

The Internet of Things (IoT) has already taken off, together with many W...
research
12/13/2019

Challenges in designing edge-based middlewares for the Internet of Things: A survey

The Internet of Things paradigm connects edge devices via the Internet e...
research
01/02/2017

Two-Bit Networks for Deep Learning on Resource-Constrained Embedded Devices

With the rapid proliferation of Internet of Things and intelligent edge ...
research
12/18/2019

Harzer Roller: Linker-Based Instrumentation for Enhanced Embedded Security Testing

Due to the rise of the Internet of Things, there are many new chips and ...
research
04/20/2021

Understanding the Context of IoT Software Systems in DevOps

The growing demand for connected devices and the increase in investments...
research
03/02/2020

Code Renewability for Native Software Protection

Software protection aims at safeguarding assets embedded in software by ...
research
11/04/2022

This is not the End: Rethinking Serverless Function Termination

Elastic scaling is one of the central benefits provided by serverless pl...

Please sign up or login with your details

Forgot password? Click here to reset