## 2 State of the Art
### MicroPython  
Python [17] is often regarded as a high-level programming language offering significant abstraction, yet it also proves to be an excellent tool in hardware development. MicroPython, an open-source, scalable port of CPython's reference implementation, is designed specifically for microcontrollers on various target platforms. Its popularity is evident, with around 2000 different forks on GitHub, each with useful modifications for various development and experimental boards [17]. In practice, using MicroPython is straightforward: its firmware is loaded into the microcontroller's flash memory through standard programming software (often known as a \"flash-tool\") for the specific type of microcontroller and typically communicates with a computer terminal via a serial interface emulator [18]. A simplified comparison between the architecture of classic development platforms and those based on MicroPython is illustrated in Figure 2[18]. MicroPython applications can be categorized into several key areas:  
* Teaching and Education: MicroPython enables interactive work with microcontrollers in an REPL (Read-Eval-Print Loop), providing direct access to microcontroller peripherals through any terminal emulator without requiring extensive code for initialization  
Figure 2: Comparison of standard development platform architecture to one based on MicroPython (adapted from [18]). and basic communication. This feature facilitates teaching the fundamental principles of data collection and processing to students across many supported boards, using a straightforward programming language. * Peripheral and Sensor Development and Testing: MicroPython offers maintained and tested reference implementations for microcontroller interfaces, removing the need for developers to implement the entire communication and control structure for peripheral devices. Modern integrated peripherals communicating over serial interfaces (I2C, SPI, CAN, etc.) are often controlled by reading and writing values from dozens of different registers, each with unique bit meanings and value interdependencies. With simple and widely adopted language interaction, developers can easily verify peripheral functionality, develop and debug the relevant hardware, and create algorithms for device control and data collection. Thanks to hardware abstraction and implementation versatility, other development platforms can be utilized without requiring in-depth programming knowledge of the specific target platform. * Monitoring and Configuring Complex Applications: Large applications of powerful microcontrollers and FPGAs often incorporate independent monitoring and system parameter configuration tools. For FPGAs, this is commonly a software implementation of a smaller microcontroller, such as the 8051 or Z80, with dedicated programs that enable system parameter monitoring and configuration. Early attempts to implement MicroPython in FPGAs show promise for further development, while in the realm of operating systems, an experimental port exists for monitoring and configuring Linux kernel parameters. For microcontrollers, the situation is simplified with a direct port of MicroPython as a Zephyr application [18]. MicroPython enables code portability across different microcontrollers using a hardware abstraction layer (HAL), while allowing new code additions as libraries (frozen modules) integrated into the firmware to avoid reloading modified code after a microcontroller reset. The base version of MicroPython occupies approximately 20 KB post-compilation, with platform-specific configuration optimizing memory usage by adding standard libraries and peripheral support. Furthermore, MicroPython can be extended with native modules written in C/C++, facilitating low-level peripheral operations and the use of system libraries through interface generators that connect native modules to Python. For microcontrollers with larger FLASH memory, the remaining space can serve as a file system, enabling directory creation and file manipulation [17].