pub:psoc_gnome_debug

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:

  • Capacidad de introducir puntos de ruptura (breakpoints).
  • Capacidad de ejecutar instrucciones paso a paso (single-stepping).
  • Número máximo de puntos de ruptura configurable (gnome_config.h).
  • Comunicación a traves de UART (VCP).

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

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:

  • Serial line: El puerto COM de tu PSOC.
  • Connection type: Conexión serie (UART).
  • Speed: 115200 Baud/s. Es el número de bits por segundo al que se comunica la UART.

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

  • Esc: Al presionar escape, se alterna entre el modo Halt y el modo Run.
    • Modo Halt: El procesador se encuentra parado en una instrucción, y se activa la posibilidad de single-stepping.
    • Modo Run: El procesador corre con normalidad (hasta que el PC encuentre un punto de ruptura, en cuyo caso, se activa el modo HALT).
  • Barra de espacio: La barra de espacio permite ejecutar la instrucción actual en el modo HALT.
  • TB=0xZZ + Enter: Este comando pone o quita (si ya lo hubiera) un punto de ruptura en la posición indicada por ZZ (en base hexadecimal). Por ejemplo, TB=0x43 activaría un breakpoint en la instrucción número 43 (hex) si no había uno activo en esa instrucción. En caso de que hubiera un breakpoint activo, simplemente se elimina.
  • LB + Enter: Enumera los puntos de ruptura activos.

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
  • pub/psoc_gnome_debug.txt
  • Última modificación: 2020/09/28 11:44
  • (editor externo)