Tabla de Contenidos

Depuración del código fuente en el procesador GNOME

Con el objetivo de asegurarnos de que el código del procesador GNOME funciona correctamente, se ha integrado un depurador del mismo que se comunica a través del USB de la placa, como un puerto COM Virtual.

Este depurador tiene las siguientes características:

ADVERTENCIA: Mientras el depurador se encuentre activo, será necesario activar síntesis de la UART en la lógica programable. Para ello se debe activar la segunda página del TopDesign.cysch.

Además, debe modificarse la siguiente línea del fichero gnome_config.h:

#define GNOME_DEBUGGING_ON              0x01

Visualizar los datos de depuración en el ordenador

Una vez programado el PSoC, es necesario utilizar un programa como Putty o Minicom para obtener una terminal de comunicación con la UART. Para ello, podemos descargar Putty aquí.

Advertencia: Es necesario utilizar Putty bajo Windows, debido a que no se dispone de los drivers del PSoC USB-UART para Linux ni para macOS.

Necesitaremos comprobar qué puerto virtual se ha asignado al PSoC. Para ello, simplemente abrimos el Administrador de dispositivos de Windows (Si no sabes cómo hacerlo, búscalo en Internet). Desplegamos la categoría Puertos (COM y LPT) y veremos el KitProg USB-UART asignado a un puerto COM.

Una vez comprobado el puerto, abrimos Putty y lo configuramos tal y como aparece en la imagen:

Las características que deben estar seleccionadas son:

Una vez configurado, hacemos clic en Open y ya tendremos acceso a la ventana de terminal.

Manejo de la interfaz de depuración

Información disponible en el depurador

Cada vez que el depurador salta a la siguiente instrucción en el modo HALT, se comunica al usuario la siguiente información:

        Normal Context              -> Contexto de ejecución de dicha instrucción (Interrupción o Normal).
        PC = 0x15                   -> Posición del contador de programa de la siguiente instrucción a ejecutar
        Instruccion = 0x18          -> Código de la instrucción que se acaba de ejecutar.
        Acumulador = 0x08           -> Contenido del acumulador.
        C, Z = 0, 0                 -> Flags del procesador.
        REG_DIR_INDIRECTO =  0x00   -> Contenido del registro de direccionamiento indirecto.
        REG[0] = 0x00               -> Contenido de cada registro (memoria o periférico en lectura).
        REG[1] = 0x00
        REG[2] = 0x00
        REG[3] = 0x00
        REG[4] = 0x00
        REG[5] = 0x00
        REG[6] = 0x00
        REG[7] = 0x00
        REG[8] = 0x00
        REG[9] = 0x00
        REG[10] = 0x0f
        REG[11] = 0x00
        REG[12] = 0x00
        REG[13] = 0x00
        REG[14] = 0x00
        REG[15] = 0x00

        STACK[0] = 0x00                -> Contenido de la pila en cada nivel
        STACK[1] = 0x7f
        STACK[2] = 0xab
        STACK[3] = 0xe6
        STACK_PTR = 0x00               -> Puntero de la pila