1.5 ARM Keil μVision5 MDK (3)

Visualización y modificación de variables y registros:

Herramientas disponibles:

En el proceso de depurado, es importante poder observar y modificar el estado de las variables y registros del microprocesador. Keil μVision5 proporciona varias ventanas para visualizar esta información:

  • Watch: Permite acceder al valor de variables específicas. Puedes añadir variables a esta ventana para monitorear su valor en tiempo real durante la ejecución del programa.

  • Call Stack: Muestra la pila de llamadas, permitiendo ver qué funciones están activas y las variables locales de cada función. Se actualiza al Detener la ejecución del programa.

  • Registers: Muestra el estado de los registros del microprocesador. Puedes ver los registros generales, de propósito específico y de estado.

  • Memory: Permite observar el contenido de la memoria en direcciones específicas.

  • System Viewer: Proporciona una vista general del sistema, permite acceder a los registros de los periféricos.

fig30

Ejemplo de uso:

Para ilustrar el uso de estas herramientas, utilizaremos el proyecto lab1 y seleccionaremos el target lab1.1:

fig29

Observa que en este caso el fichero lab1.1.c está activo y que el fichero lab1.0.c se ha excluido de la compilación.

Comenzamos estudiando el código y observando el comportamiento del LED:

  1. Abre el fichero lab1.1.c y estudia el código fuente.

  2. Compila el código y descárgalo al microprocesador ico_build -> ico_download -> Reset de la placa.

  3. Observa su comportamiento.

El comportamiento no coincide con lo esperado, después de la primera pulsación el LED se apaga y ya no cambia de color, utilizaremos el debugger para analizar el código y encontrar el error:

  1. Inicia la sesión de depuración ico_debug, el programa se detiene en la primera línea del código.

  2. El color de encendido del led depende del valor de la variable led_color. Puedes observar su valor en la ventana Call Stack cuando se detiene la ejecución.

    También puedes añadir la variable a la ventana Watch para observar su valor en tiempo real:

    • Haz clic derecho sobre la variable y selecciona Add “led_color” to… -> Watch1.

    • Pon en marcha la ejecución del programa ico_run, y podrás observar como cambia el valor de la variable led_color al pulsar SW2. Si quieres reiniciar la ejecución pulsa ico_reset.

  3. Para entender el comportamiento de la aplicación y encontrar el error, es necesario ejecutar el código paso a paso:

    • Detén la ejecución del programa ico_stop.

    • Sitúa un breakpoint ico_bpnt en la línea 74 (switch..).

    • Resetea el microprocesador ico_reset, ejecuta el programa ico_run y pulsa SW2, el programa se detiene en el breakpoint.

    • Observa el valor de la variable led_color en la ventana Watch.

    • Utiliza el botón ico_sinto para ejecutar el código paso a paso y observa cómo cambia el valor de led_color.

    Este proceso te permitirá entender cómo se comporta el código e identificar el error. Modifica el código para corregir el error, y vuelve a compilar y descargar el programa al microprocesador. Verifica que la variable led_color cambie correctamente al pulsar el botón SW2.