## 1 Introduction
### Embedded Systems and Dynamic Configuration Challenges
* Increased security and reliability: Executing code in a virtualized environment enables developers to isolate the system from potential security threats and ensure the system remains stable and reliable, even in the event of unexpected changes [4]. The development of microcontrollers faces ongoing challenges concerning efficiency, flexibility, and adaptability. The traditional approach to programming microcontrollers, which relies on compiling code into machine instructions, has proven to be limiting and inflexible in aspects such as code maintenance and incremental development. Compiled code is bound to a specific hardware platform, making updates, modifications, and code portability to other microcontrollers difficult. Additionally, this type of program code is inherently static and does not allow for dynamic changes in program logic. It is also essential to consider low-level programming, which is unavoidable due to limited memory and processing resources and requires specialized knowledge, skills, and insight into the internal system structure. Some standard debugging tools are also limited in this regard [5]. In recent years, this has led to the increased popularity of interpreted languages such as MicroPython and Lua in this area. These languages offer flexibility and portability, enabling code execution across different hardware platforms without the need for recompilation. Moreover, the simplicity and higher-level nature of these languages allow for faster iteration and development, attracting a broader circle of developers. Their interpreted nature allows for dynamic reconfiguration and rapid changes in system behaviour, which is essential for modern embedded applications. Their small size, efficiency, and low resource requirements make them suitable for operation in microcontrollers. This approach holds great potential for the near future, where growing demands for flexibility and the acceptance of embedded system integration with existing platforms will become critical factors for software development and maintenance [6]. This will also likely lead to the expansion of developer communities and repositories of libraries and tools, which, although currently modest with some basic native method calls, may make this approach more attractive and catalyse advancements in hardware with greater processing power and memory to support such platforms [7]. As the demands for intelligent, connected, and adaptable embedded systems continue to grow, the next natural step would be the creation of frameworks for dynamic configurations and procedure execution to facilitate the development of innovative projects related to IoT, robotics, the automotive industry, and other industries subject to frequent adaptations with minimized delays. In this case, the mentioned concepts and languages would form the foundation of such frameworks, providing time-extended platform independence and contributing to both horizontal and vertical scalability [8]. Additional integrated development tools would offer a comprehensive environment for efficient code creation, testing, and deployment, with simulator support for project verification [4]. The aim of this paper is to present the design of a framework with support for hot reloads, code, and data persistence incorporated with a native interface for binding external libraries suitable for operation in microcontrollers with all hardware limitations by using an existing virtual machine. This project will serve as the basis for three additional components: a microcontroller-side interpreter that efficiently executes the created intermediate code and modifies it on demand, a client-side integrated development environment for creating, compiling, and debugging code with simulator-based verification, and a compiler that creates intermediate code in the established format, suitable for transfer to microcontrollers registered on the local network.