Cross-platform development for microcontrollers: design of a virtual machine based portable programming language

Authors

  • Nuru Dashdamirli Azerbaijan Technical University, pr. H. Javid 25, Baku, Azerbaijan, AZ 1148

Keywords:

microcontroller, embedded systems, virtual machine, programming, bytecode, Internet of Things, concurrency

Abstract

The fundamental role of microcontrollers in embedded systems and the Internet of Things (IoT) environments necessitates efficient software development approaches. Resource limitations of microcontrollers, the complexity of low-level programming languages, and the challenges of implementing multitasking slow down the development process considerably. Additionally, the diversity of the microcontroller landscape creates substantial barriers to code portability, leading to increased development time to support different hardware platforms. This paper presents the design of a virtual machine-based programming approach to enable cross-platform development for microcontrollers. The proposed portable programming language integrates with a custom virtual machine, Mico8-Chip, to suit modern microcontroller applications. This allows intuitive control over peripherals and built-in support for concurrent execution. The provided abstraction layer significantly improves code portability and accelerates development by isolating application logic from underlying hardware specifics. The primary purpose of this work is to address the fragmented microcontroller ecosystem and the challenges of low-level programming by introducing a unified and portable development solution.

References

Wu, Z., Qiu, K., & Zhang, J. (2020). A Smart Microcontroller Architecture for the Internet of Things. Sensors, 20(7), 1821. https://doi.org/10.3390/s20071821.

Krishnamurthy, J., & Maheswaran, M. (2016). Programming frameworks for Internet of Things. In Internet of Things (pp. 79-102). Morgan Kaufmann. https://doi.org/10.1016/B978-0-12-805395-9.00005-8.

Bell, C. (2024). MicroPython for the Internet of Things: A Beginner’s Guide to Programming with Python on Microcontrollers Second Edition. Apress eBooks. https://doi.org/10.1007/978-1-4842-9861-9.

Dashdamirli, N. (2025). Hybrid scheduling approach for concurrent task execution on microcontroller-based systems. Romanian Journal of Information Technology and Automatic Control, 35(1), 79–90. https://doi.org/10.33436/v35i1y202506.

Priyadarshini, S. B. B., Mahapatra, A., Mohanty, S. N., Nayak, A., Jena, J. P., & Samanta, S. K. S. (2022). myCHIP-8 emulator: An innovative software testing strategy for playing online games in many platforms. In Optimization of Automated Software Testing Using Meta-Heuristic Techniques (pp. 133-154). Cham: Springer International Publishing. https://doi.org/10.1007/978-3-031-07297-0_9.

Cruz, N., Ruiz-Ferrández, M., Redondo, J. L., Álvarez, J., & Ortigosa, P. (2019). Applications of chip-8, a virtual machine from the late seventies, in current degrees in computer engineering. In EDULEARN19 Proceedings (pp. 1720-1729). IATED. https://doi.org/10.21125/edulearn.2019.0501.

Dubé, D., & Feeley, M. (2005). BIT: A Very Compact Scheme System for Microcontrollers. Higher-Order and Symbolic Computation, 18(3), 271-298. https://doi.org/10.1007/s10990-005-4877-4.

Feeley, M., & Dubé, D. (2003, November). PICBIT: A Scheme system for the PIC microcontroller. In Proceedings of the Fourth Workshop on Scheme and Functional Programming (pp. 7-15).

St-Amour, V., & Feeley, M. (2010). PICOBIT: A Compact Scheme System for Microcontrollers. Implementation and Application of Functional Languages, 1-17. https://doi.org/10.1007/978-3-642-16478-1_1.

Brouwers, N., Corke, P., & Langendoen, K. (2008, December). Darjeeling, a Java compatible virtual machine for microcontrollers. In Proceedings of the ACM/IFIP/USENIX Middleware'08 Conference Companion (pp. 18-23). https://doi.org/10.1145/1462735.1462740.

Aslam, F. (2011). Challenges and Solutions in the Design of a Java VirtualMachine for Resource Constrained Microcontrollers (Doctoral dissertation, University of Freiburg).

Varoumas, S., Vaugon, B., & Chailloux, E. (2016, January). Concurrent Programming of Microcontrollers, a Virtual Machine Approach. In 8th European Congress on Embedded Real Time Software and Systems (ERTS 2016) (pp. 711-720).

Varoumas, S., Vaugon, B., & Chailloux, E. (2018, January). A generic virtual machine approach for programming microcontrollers: the OMicroB project. In 9th European Congress on Embedded Real Time Software and Systems (ERTS 2018).

Gurdeep Singh, R., & Scholliers, C. (2019, October). WARDuino: a dynamic WebAssembly virtual machine for programming microcontrollers. In Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes (pp. 27-36). https://doi.org/10.1145/3357390.3361029.

Zandberg, K., & Baccelli, E. (2020, December). Minimal virtual machines on iot microcontrollers: The case of berkeley packet filters with rbpf. In 2020 9th IFIP International Conference on Performance Evaluation and Modeling in Wireless Networks (PEMWN) (pp. 1-6). IEEE. https://doi.org/10.23919/PEMWN50727.2020.9293081.

Sarkar, A., Krook, R., Svensson, B. J., & Sheeran, M. (2021, September). Higher-order concurrency for microcontrollers. In Proceedings of the 18th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes (pp. 26-35). https://doi.org/10.1145/3475738.3480716.

Downloads

Published

2025-07-01

How to Cite

Dashdamirli, N. (2025). Cross-platform development for microcontrollers: design of a virtual machine based portable programming language. Transport Systems and Technologies, (45). Retrieved from https://tst.duit.in.ua/index.php/tst/article/view/423

Issue

Section

Information, telecommunication and resource saving technologies