[en] This work provides an analysis of the state of the art of tools and operating systems available for the architecture, examining how they can be used to create a laboratory that allows code execution to access hardware elements without restrictions, while also presenting a user-friendly interface for students to develop their practical exercises. To achieve these objectives, a laboratory approach based on the use of hypervisors is proposed, allowing the coexistence of a modern operating system, which facilitates the code development environment, with a simpler operating system that permits code execution with low restrictions, thus simplifying the debugging process. In order not to limit the analysis to specific hardware and given the low availability and limited accessibility of the boards currently, emulation is used during the development of this project. This way, a generic development environment can be recreated that is not tied to the limitations of specific hardware. This will also facilitate the transition to future implementations of the architecture, as dependencies on current boards will be avoided. During the development of the project, two possible approaches have been defined for establishing the tasks that each of the operating systems involved in the deployment will perform. On the one hand, there is the possibility that one operating system serves solely as an interface while the other system contains the debugger's core, controlling the execution of the student's code. On the other hand, the less restrictive system simply serves as an execution environment for the student's code, while the system serving as the interface also handles debugging the execution of the lightweight operating system and, in turn, the student's code. Finally, an evaluation of the analyzed hypervisors and operating systems will be conducted, selecting as possible candidates those that best meet the requirements of this project. During this phase of the project, promising options have been found, notably the BAO and KVM hypervisors along with the Miniriscv-os operating system. Additionally, preliminary tests developed with these candidates demonstrate the feasibility of the aforementioned migration.

[es] En este trabajo se hace un análisis del estado del arte de las herramientas y sistemas operativos disponibles para la arquitectura, analizando de qué modo pueden ser utilizados para crear un laboratorio que permita la ejecución de código que acceda a elementos hardware sin restricciones, a la vez que se presente una interfaz amigable para el desarrollo de las prácticas por parte del alumnado. Para conseguir estos objetivos, se plantea un enfoque del laboratorio basado en el uso de hipervisores, de modo que se permita la coexistencia de un sistema operativo moderno, que facilite el entorno de desarrollo del código, con un sistema operativo más simple que permita la ejecución de código con bajas restricciones, simplificando el proceso de depuración. Con el fin de no limitar el desarrollo del análisis a un hardware en específico y dada la baja disponibilidad y poca accesibilidad de las placas en la actualidad, durante el desarrollo de este trabajo se emplea emulación. De este modo se podrá recrear un entorno de desarrollo genérico que no esté atado a las limitaciones de un hardware específico. Esto a su vez facilitará la transición a futuras implementaciones de la arquitectura, ya que se evitarán las dependencias con las placas actuales. Durante el desarrollo del proyecto se han definido además dos posibles aproximaciones a la hora de establecer las tareas que deberá realizar cada uno de los sistemas operativos involucrados en el despliegue. Por un lado, se plantea la posibilidad de que un sistema operativo sirva únicamente de interfaz mientras que el otro sistema se encarga de contener al núcleo del depurador, controlando la ejecución del código del alumno. Por otro lado, se plantea otra posible aproximación en la que el sistema menos restrictivo simplemente sirva como entorno de ejecución para el código del alumno, mientras que el sistema que sirve de interfaz, a su vez, se encargue de depurar la ejecución del sistema operativo ligero y, a su vez, el código del alumno. Por último, se hará una valoración de los hipervisores y sistemas operativos analizados, escogiendo de entre ellos como posibles candidatos aquellos que mejor se adapten a los requisitos de este proyecto. Durante esta fase del proyecto se han encontrado opciones prometedoras, entre las que destacan los hipervisores BAO y KVM junto con el sistema operativo Mini-riscv-os. Además, las pruebas desarrolladas con estos candidatos evidencian de forma preliminar la viabilidad de la migración mencionada.