Abstract
Today, the programming of a complete wearable sensor system requires writing code in different programming languages for the different parts of the systems, such as the wearable sensor platform itself, the gateway, the back-end server, and the client app. In this paper, we propose to use WebAssembly, which is a simple but powerful virtual machine standard already supported by all major web browsers. We show that it is possible to implement a WebAssembly interpreter for embedded systems, such as the Texas Instruments CC2652R system-on-chip and this enables the same code to execute in all parts of the systems. In our proof-of-concept implementation, we use Bluetooth low energy, which means that smartphones can communicate with and program our device without the need for special hardware.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Aslam, F., Fennell, L., Schindelhauer, C., Thiemann, P., Ernst, G., Haussmann, E., Rührup, S., Uzmi, Z.A.: Optimized Java binary and virtual machine for tiny motes. In: The 6th IEEE International Conference on Distributed Computing in Sensor Systems, DCOSS ’10. IEEE, Piscataway (2008) https://doi.org/10.1007/978-3-642-13651-1_2
Baccelli, E., Doerr, J., Kikuchi, S., Padilla, F., Schleiser, K., Thomas, I.: Scripting over-the-air: towards containers on low-end devices in the Internet of things. In: The IEEE International Conference on Pervasive Computing and Communications, PerCom ’18, Athens (2018)
Brouwers, N., Langendoen, K., Corke, P.: Darjeeling, a feature-rich VM for the resource poor. In: The 7th ACM Conference on Embedded Networked Sensor Systems, SenSys ’09, Berkeley (2009). https://doi.org/10.1145/1644038.1644056
Duktape: http://duktape.org/
Dunkels, A., Finne, N., Eriksson, J., Voigt, T.: Run-time dynamic linking for reprogramming wireless sensor networks. In: The 4th International Conference on Embedded Networked Sensor Systems, SenSys ’06. ACM, Boulder (2006). https://doi.org/10.1145/1182807.1182810
Haas, A., Rossberg, A., Schuff, D., Titzer, B., Gohman, D., Wagner, L., Zakai, A., Bastien, J., Holman, M.: Bringing the web up to speed with WebAssembly. In: The 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’17. Barcelona, Spain (2017). https://doi.org/10.1145/3140587.3062363
Martin, J.: GitHub – Kanaka/wac: WebAssembly interpreter in C. https://github.com/kanaka/wac
Mongoose OS: Reduce IoT firmware development time up to 90%. https://mongoose-os.com/
Pur3 Ltd: Espruino – JavaScript for microcontrollers. https://www.espruino.com/
Richardson, C., Rymer, J.R.: Vendor landscape: the fractured, fertile terrain of low-code application platforms. Forrester Research Report, 15 Jan 2016
Shelby, Z., Hartke, K., Bormann, C.: Constrained application protocol (CoAP). IETF RFC 7252 (2014). https://tools.ietf.org/html/rfc7252
Watt, C.: Mechanising and verifying the WebAssembly specification. In: The ACM SIGPLAN International Conference on Certified Programs and Proofs, CPP ’18, Los Angeles (2018). https://doi.org/10.1145/3167082
WebAssembly: http://webassembly.org/
World Famous Electronics Ilc.: Pulsesensor, https://pulsesensor.com/
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Jacobsson, M., Willén, J. (2020). Virtual Machine Execution for Wearables Based on WebAssembly. In: Sugimoto, C., Farhadi, H., Hämäläinen, M. (eds) 13th EAI International Conference on Body Area Networks . BODYNETS 2018. EAI/Springer Innovations in Communication and Computing. Springer, Cham. https://doi.org/10.1007/978-3-030-29897-5_33
Download citation
DOI: https://doi.org/10.1007/978-3-030-29897-5_33
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-29896-8
Online ISBN: 978-3-030-29897-5
eBook Packages: EngineeringEngineering (R0)