## 2 Related Work
### Classification by Embedded Software Platform Develop Environment
#### 2.4.1 Embedded Devices Supported by C and C++ Language  
Tables 9-12 provide more specific details about the programmable language compatibility with each type of embedded system architecture as well as the available libraries, IDEs, frameworks, and Embedded Software Platform for TinyML and embedded vision applications.  
Table 9 shows the architectures capable of supporting the execution of TinyML tasks using embedded systems whose architectures are capable with C and C++ programming languages. Implementing algorithms for TinyML involves, among many other applications, programming tasks for real-time image processing, such as critical system control tasks.  
It is important to remember that many applications that do not compromise system performance concerning real-time algorithm executions use an RTOS that runs on the embedded along with the application-specific algorithm. After Tables 9-12, a more specific analysis of the RTOS compatible with each architecture, programming language, and the advantages and/or disadvantages that each RTOS has is carried out.  
In the case of C and C++ language, embedded systems designed under the architectures used in TinyML and vision applications support several libraries written in C and C++ language that are incorporated into ML algorithms. This is the case of TensorFlow Lite, whose main function, within the algorithm programmed in a Tiny device, is the execution of a file that contains coded information resulting from a training stage.  
Works like [75] et al. allow us to observe an extensive and detailed TinyML implementation methodology using an ESP32 microcontroller to infer sensor and wind speed measurements using neural networks. The authors of [75; 76] also describe the use of TensorFlow Lite and Eloquent TinyML libraries written in C++ language, as well as the Arduino IDE, for the implementation of a trained neural network model using real measurement data. Additionally, the authors retrospectively examine the advantages and disadvantages of implementing an algorithm for TinyML using a platform oriented to programming in the C++ language. They concluded that the main benefit is the performance, precision, and inference speed the trained neural network model achieves when executed on the ESP32 microcontroller because the architecture is designed especially for environments based on C++ language. On the other hand, the main disadvantages presented [75; 77; 78] are the extensive consumption of the internal RAM and ROM memories of the ESP32 when storing the data of the trained model and the logic decisions and complex mathematical computing calculations carried out when executing the ANN algorithm. Likewise, the necessary integration of different environments and languages, such as Google Colab and Python, is required to pretrain the ANN model on the computer, convert the model file into a readable extension for the ESP32, and, finally, load the algorithm and the trained model into the ESP32.  
Works such as [79; 80; 81; 82] explain TinyML implementations using IDEs, EmSPS, libraries, and extensions, including methodologies. According to the cited works, the main advantages are the TinyML applications based on algorithms programmed in C++, the efficient use of clock frequency processors, and its high precision in inference and classification tasks in the case of ANN algorithms and embedded vision. In contrast, the main disadvantage is the high use of the device's internal memories.