The Internet of Things (IoT) comprises many small, embedded devices that operate on severe resource constraints concerning energy, bandwidth, and memory footprints. Software for such devices has traditionally been implemented using relatively low-level languages such as C, which makes it susceptible to introducing bugs or flaws that can compromise the security of the device. This thesis adds interpreted WebAssembly (WASM) bytecode execution to Contiki-NG – an operating system for the next generation IoT devices. This is done using an open-source WASM runtime called WebAssembly Micro Runtime (WAMR). It creates an isolated and secure environment for applications to be executed in that has restricted access to the host operating system. To support the event-driven approach of Contiki-NG, the bytecode execution can be interrupted and resumed as needed, allowing the operating system to handle pending events without significant delays. The result is a way for applications written in a variety of programming languages to be safely executed in Contiki-NG and to interact with its APIs. When tested on Nordic Semiconductor's nRF52840 System-on-Chip (SoC), applications executed as bytecode resulted in an increase in binary size of 2.7-3.1x, and a performance penalty of around 9.2x for C-generated bytecode, and 10.3x for Rust-generated bytecode. For less compute-intensive applications, the performance penalty is not as prominent but still displays a sizable increase in energy consumption compared to native execution.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:uu-532970 |
Date | January 2024 |
Creators | Engstrand, Fredrik |
Publisher | Uppsala universitet, Nätverksbaserade inbyggda system |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | English |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | UPTEC IT, 1401-5749 ; 24040 |
Page generated in 0.0023 seconds