[en] ABSTRACT: Over the last years we are witnessing the revolution caused by the development of embedded systems. These electronic systems are integrated into certain products, providing them with their specific functionality. In addition, they are often able to obtain information and act on their environment while communicating and collaborating with other embedded systems, or with services on the network. Examples of embedded systems range from a mobile phone to a car or robot vacuumcleaner, many of thembeing elements of daily use. The constant evolution and improvement of communications, as well as the available hardware and software resources, have facilitated the development of new paradigms such as edge computing or intelligent systems that use machine learning techniques. These techniques are having a strong impact on these systems, especially in the development of embedded software. Therefore, the development of intelligent embedded network systems with the ability to performcomputations on different hardware resources of the device or the network, is increasingly difficult and complex, requiring newmodeling techniques, code generation and configuration of the application at runtime. This Project addresses solutions for several of these challenges, such as the development of a Domain Specific Language (DSL), adapted to the implementation of real-time image and video processing applications. From this language it is possible to generate the application code in C ++, using a library (RIE, Reconfigurable Implementation of Embebded system) that allows implementing the application components in the available hardware resources, and modifying their configuration at runtime. This library also allows certain components of the application to be deployed over the network in distributed nodes (edge-computing) using micro-services based on the grpc API.

[es] RESUMEN: Durante los últimos años estamos siendo testigos de la revolución que ha provocado el desarrollo de los sistemas embebidos. Estos sistemas electrónicos están integrados en productos concretos, proporcionándole su funcionalidad específica. Además, suelen ser capaces de obtener información y actuar sobre su entorno al tiempo que se comunican y colaboran con otros sistemas embebidos o con servicios en la red. Se pueden citar multitud de ejemplos de sistemas embebidos (desde un teléfono móvil hasta un coche autónomo o robot aspirador), siendo muchos de ellos elementos de uso cotidiano. La constante evolución y mejora de las comunicaciones, así como de los recursos hardware y software disponibles, han facilitado el desarrollo de nuevos paradigmas (como la computación en el borde, "edge computing", o los sistemas inteligentes que utilizan técnicas de "machine learning") que están teniendo un fuerte impacto en dichos sistemas, especialmente en el desarrollo del software embebido. Por todo ello, el desarrollo de sistemas embebidos inteligentes en red, con capacidad de realizar cómputos en diferentes recursos hardware del dispositivo o de la red, es cada vez más difícil y complejo, requiriendo de nuevas técnicas de modelado, generación de código y configuración de la aplicación en tiempo de ejecución. En este proyecto se abordan soluciones para varios de estos retos, como el desarrollo de un lenguaje específico de dominio (DSL, Domain Specific Language), adaptado al desarrollo de aplicaciones de procesado de video e imagen en tiempo real. A partir de dicho lenguaje es posible generar el código de la aplicación en C++, utilizando para ello una librería ( RIE, Reconfigurable Implementation of Embebded system) que permite implementar los componentes de la aplicación en los recursos hardware disponibles y modificar su configuración en tiempo de ejecución. La librería también permite que ciertos componentes de la aplicación estén implementados en otros nodos de la red (edge computing) utilizando para ello micro-servicios basados en el API grpc.