[en] ABSTRACT: Computer Structure and Organization courses at the University of Cantabria follow the ARM architecture as a reference for their lectures and practical sessions. In some of these courses, students use the !UCDebug ARM debugger at the computer lab to run and debug their codes. Part of these practical lessons are conducted using peripheral devices, some of which have strict time requirements for their correct functioning. The debugger was unable to properly execute code that interacted with such devices because its execution modes introduced a large overhead, making it impossible to meet their time requirements. This project seeks to implement a new execution mode for !UCDebug that provides execution times similar to those of the execution in the native system. This would allow a greater variety of peripherals to be used in these courses. Before starting the development of this new mode, a test suite was developed to address the lack of a mechanism that checks the debugger behavior. This test suite was developed in order to verify that the debugger's functionalities match a specific intended behavior. The new mode, called Go-Fast mode, employs a strategy based on the development of a SWI handler. As a further development, a way for the user to interact with the debugger while running in this mode was sought, for which a periodic interrupt mechanism was chosen. With the development conducted in this work, the debugger has shown that it can successfully execute the same ARM assembly codes as the native system, to the extent that the debugger has been tested.

[es] RESUMEN: Las asignaturas del área de Estructura y Organización de Computadores en la Universidad de Cantabria utilizan la arquitectura ARM de referencia para sus lecciones tanto teóricas como prácticas. Durante los laboratorios de algunas de estas asignaturas los alumnos utilizan el depurador !UCDebug para ejecutar y depurar su código. Parte de estas prácticas se realizan empleando periféricos, de los cuales algunos tienen requerimientos temporales estrictos para su correcto funcionamiento. El depurador no contaba con una forma de ejecutar códigos que utilizasen estos dispositivos debido a que sus modos de ejecución introducían un gran overhead, haciendo que no se pudiera interactuar con los dispositivos correctamente. En este proyecto se busca implementar un nuevo modo de ejecución para !UCDebug que proporcione tiempos de ejecución similares a los de la ejecución en el sistema nativo. Esto permitiría poder utilizar una mayor variedad de periféricos en los laboratorios de las asignaturas. Antes de comenzar con el desarrollo de este nuevo modo, se desarrolló una suite de tests por la falta de un mecanismo que verificase el funcionamiento del depurador. Esta suite de tests tiene como propósito el poder comprobar que las funcionalidades del depurador se ajusten a lo esperado. El nuevo modo, denominado modo Go-Fast, emplea una estrategia basada en el desarrollo de un handler de las SWIs. Como desarrollo adicional, se buscó una forma de que el usuario pueda interactuar con el depurador mientras ejecuta en este modo, para lo que se optó por un mecanismo de interrupciones periódicas. Con el desarrollo realizado en este proyecto el depurador ha demostrado que puede llegar a ejecutar correctamente los mismos códigos de ensamblador ARM que el sistema nativo, hasta el punto que se ha comprobado el depurador.