Compartir a través de


Depurar una aplicación compatible con tiempo real

Las RTApps se descompilan mediante OpenOCD, que se instala con el SDK de Azure Sphere, y la versión de GDB que se instala como parte de ARM GNU Embedded Toolchain.

Depurar RTApp con Visual Studio

  1. Asegúrate de que el dispositivo esté conectado a tu PC mediante USB. En el menú Establecer elemento de inicio , selecciona Azure Sphere App (RT Core) donde Azure Sphere App es el nombre de tu aplicación compatible en tiempo real actual o presiona F5.

    Botón Depurador GDB remoto

  2. Si se le pide que cree el proyecto, seleccione . Visual Studio compila la aplicación compatible con tiempo real, crea un paquete de imagen, lo carga de prueba en el panel y lo inicia en modo de depuración. La instalación de prueba significa que la aplicación se entrega directamente desde el PC a través de una conexión por cable, en lugar de entregarse a través de la nube.

    Observe el id. de imagen del paquete de imagen en lasalida de la>> visualización de la salida de: Generar salida Cuando esté listo para crear una implementación, necesitará conocer la ruta de acceso al paquete de imagen.

  3. De forma predeterminada, la ventana Salida muestra la salida desde Salida de dispositivo. Para ver los mensajes del depurador, seleccione Depurar en el menú desplegable Mostrar salida de: . También puedes inspeccionar el desensamblaje del programa, los registros o la memoria a través del menú Depurar>Windows .

Visual Studio configura conexiones entre el servidor GDB y OpenOCD para que pueda usar la interfaz de depuración estándar de Visual Studio (F5, F6, F9 para puntos de interrupción y así sucesivamente) en una RTApp, del mismo modo que en una aplicación de alto nivel.

Mientras se detiene en un punto de interrupción en el código fuente C, puede abrir una ventana de desensamblaje que muestra la dirección actual, el ensamblador mnemotécnico del comando actual e información como los registros implicados o el comando source-code que se ejecuta.

Para abrir la ventana Desensamblar :

  1. Asegúrese de que el archivo de código fuente de C que contiene el punto de interrupción está abierto en Visual Studio.
  2. Seleccione Depurar>desensamblarWindows> o presione Alt+8.

Depurar RTApp con Visual Studio Code

Visual Studio Code se depura presionando F5 o ejecutando el comando debug de la vista de depuración en la barra izquierda. En los ejemplos, el .vscode/launch.json ya existe, por lo que la depuración comenzará inmediatamente. En una nueva aplicación, la depuración preguntará primero si se trata de una HLApp o RTApp y creará un archivo .vscode/launch.json a partir de la respuesta. A continuación, se habilitará la depuración.

Mientras se detiene en un punto de interrupción del código fuente C, puede abrir una vista de desensamblaje que muestra la dirección actual, los datos hexadecimales sin procesar, el ensamblador mnemotécnico del comando actual e información como los registros implicados o el comando de código fuente que se ejecuta.

Para abrir la vista Desensamblar:

  1. Asegúrese de que el archivo de código fuente C que contiene el punto de interrupción está abierto en un editor de Visual Studio Code.
  2. Haga clic con el botón derecho en la ventana del editor y seleccione Abrir vista de desensamblado o seleccione Ver> paleta > decomandosAbrir vista de desensamblaje.

Depurar RTApp con la CLI

  1. Inicie la aplicación para la depuración:

    az sphere device app start --component-id <component id>
    

    Este comando devuelve el núcleo en el que se está ejecutando la aplicación.

  2. Vaya a la carpeta Openocd de la sysroot con la que se creó la aplicación. En este Inicio rápido, la sysroot es 5+Beta2004. La sysroots se instala en la carpeta de instalación del SDK de Azure Sphere. Por ejemplo, en Windows, la carpeta se instala de forma predeterminada en C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd y en Linux, en /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd.

  3. Ejecute openocd como se muestra en el ejemplo siguiente. En el ejemplo se supone que la aplicación se ejecuta en el núcleo 0. Si la aplicación se ejecuta en el núcleo 1, reemplaza "targets io0" por "targets io1".

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  4. Abre una interfaz de línea de comandos con PowerShell, símbolo del sistema de Windows o shell de comandos de Linux.

  5. Navega a la carpeta que contiene el archivo .out de la aplicación e inicia arm-none-eabi-gdb, que forma parte de ARM GNU Embedded Toolchain:

    Símbolo del sistema de Windows

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    
  6. El servidor OpenOCD proporciona una interfaz de servidor GDB en :4444. Establecer el destino para la depuración.

    target remote :4444

  7. Ejecute los comandos gdb que elija.

Desarrollar con aplicaciones de asociados

Al cargar una aplicación en el dispositivo Azure Sphere, las herramientas de implementación de Azure Sphere eliminan de forma predeterminada todas las aplicaciones existentes. Para evitar que esto ocurra cuando desarrolla aplicaciones que se comunican entre sí, debe marcar las aplicaciones como socios. Al implementar una de las aplicaciones, sus partners no se eliminarán. Consulte Marcar aplicaciones como partners para obtener más información.

Solución de problemas

Si encuentra problemas, consulte Solución de problemas de aplicaciones compatibles con tiempo real.