Programming Languages and Software Platforms for Embedded and Internet-of-Things Systems

Dr. Karan Malhotra, Shreya Singh, Vikram Sethi, Neetu Jha

Abstract


The devices of embedded and Internet-of-Things systems operate under severe constraints of memory, processing, and energy, and the choice ofprogramming language and software platform for them must respect theseconstraints; this paper reviews the languages and platforms used. It describes the constraints of embedded and Internet-of-Things devices and their consequences for software, and the programming languages used across the tiers of a system: the languages of the constrained device, principally the C language, which offers efficiency and control at some cost in safety, together with the Rust language, which offers memory safety without garbage collection, and interpreted languages such as MicroPython for prototyping; and the languages of the gateway and the cloud, which favour productivity. It describes the runtime environments, from bare-metal execution through realtime operating systems to embedded operating systems, and the platforms and frameworks that support development, including software development kits, cloud platforms for device management, and frameworks for machine learning on constrained devices, together with the provision of secure updates. The study finds that the choice of language and platform is governed by the constraints and the role of the device, lower tiers favouring control and efficiency and higher tiers favouring productivity, so that a system commonly combines several languages and platforms across its tiers. It notes that specific tools are representative of an evolving field. It concludes with the outlook for the field. Certain figures are illustrative. KEYWORDS: Embedded Systems, Internet of Things, Firmware, C Language, Rust, MicroPython, Real-Time Operating System, TinyML, Over-the-Air Updates

Full Text:

PDF 34-44

Refbacks

  • There are currently no refbacks.