Compartir a través de


Depuración de aplicaciones de asociados

Importante

Esta es la documentación de Azure Sphere (heredado). Azure Sphere (heredado) se retira el 27 de septiembre de 2027 y los usuarios deben migrar a Azure Sphere (integrado) en este momento. Use el selector de versiones situado encima de la TOC para ver la documentación de Azure Sphere (integrado).

  1. Asegúrese de que el dispositivo esté conectado al equipo mediante USB. En el menú Establecer elemento de inicio, seleccione Aplicación de Azure Sphere (Todos los núcleos) donde aplicación de Azure Sphere es el nombre del proyecto de nivel superior o presione F5.

    Botón Depurador GDB remoto

  2. Si se le solicita que compile el proyecto, seleccione . Visual Studio compila las aplicaciones asociadas, crea paquetes de imágenes, los carga localmente en el panel y los inicia en modo de depuración. La instalación de prueba significa que las aplicaciones se entregan directamente desde el equipo a través de una conexión cableada, en lugar de entregarse a través de la nube.

    Tenga en cuenta las rutas de acceso de la vista>De salida>Mostrar salida de: Salida de compilación, que indica la ubicación de los paquetes de imágenes de salida en el equipo. Cuando esté listo para crear una implementación, deberá conocer las rutas de acceso a los paquetes de imagen.

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

Si tiene dos RTApps, asegúrese de que ambos aparecen como aplicaciones asociadas en el archivo de nivel superior launch.vs.json.

Use el depurador de Visual Studio para establecer puntos de interrupción, pausar, recorrer paso a paso por instrucciones, reiniciar o detener la aplicación.

Mientras se detiene en un punto de interrupción en el código fuente de C, puede abrir una ventana Desensamblado que muestre la dirección actual, el ensamblador mnemonic para el comando actual e información como los registros implicados o el comando de código fuente que se está ejecutando.

Para abrir la ventana Desensamblado :

  1. Asegúrese de que el archivo fuente de código C que contiene el punto de interrupción esté abierto en Visual Studio.
  2. Seleccione Depurar desensamblaje>de Windows>o presione Alt+8.
  1. Abra la carpeta que contiene las aplicaciones asociadas. Visual Studio Code detecta el archivo del área de trabajo y le pregunta si desea abrir el área de trabajo. Seleccione Abrir área de trabajo para abrir la aplicación en tiempo real y la aplicación de alto nivel a la vez.

  2. Haga clic con el botón derecho en cualquiera de los dos archivos CMakeLists.txt y seleccione Compilar todos los proyectos.

  3. Haga clic en el icono Ejecutar de la barra de actividades de Visual Studio Code.

  4. En el menú desplegable que aparece en la parte superior de la ventana del lado izquierdo de la pantalla, seleccione Iniciar aplicaciones de Azure Sphere (gdb)(área de trabajo).

  5. Presione F5 para compilar y depurar el proyecto. Si el proyecto no se ha compilado previamente o si se han cambiado los archivos y se requiere la regeneración, Visual Studio Code compilará el proyecto antes de que se inicie la depuración.

  6. Espere varios segundos para que Visual Studio Code compile las aplicaciones, cree los paquetes de imagen, impleméntelos en el panel e inícielos en modo de depuración. Verá las actualizaciones de estado en el panel Salida a lo largo del proceso.

    En primer lugar, CMake determina si las aplicaciones deben compilarse. Si es así, el foco cambia a la ventana de salida, que muestra la salida de CMake/Build.

    A continuación, el panel de salida muestra la salida de azsphere a medida que implementa el paquete de imágenes en el dispositivo. Por último, la herramienta Consola de depuración recibe el foco y muestra la salida de gdb.

Use el depurador de Visual Studio Code para establecer puntos de interrupción, pausar, recorrer paso a paso por instrucciones, reiniciar o detener la aplicación.

Mientras se detiene en un punto de interrupción en el código fuente de C, puede abrir una vista Desensamblar que muestre la dirección actual, los datos hexadecimales sin procesar, el mnemónico ensamblador para el comando actual e información como los registros implicados o el comando de código fuente que se está ejecutando.

Para abrir la vista Desensamblar:

  1. Asegúrese de que el archivo fuente de código 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 desensamblado o seleccione Ver>paleta>de comandos Abrir vista Desensamblado.
  1. Detenga la aplicación compatible en tiempo real si se está ejecutando.

    azsphere device app stop --component-id <component id>
    
  2. Vuelva a iniciar la aplicación compatible en tiempo real con depuración.

    azsphere device app start --component-id <component id>
    

    Este comando devuelve el núcleo en el que se ejecuta la aplicación.

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Vaya a la carpeta Openocd para el sysroot con que se compiló la aplicación. Los sysroot se instalan en la carpeta de instalación del SDK de Azure Sphere. Por ejemplo, en Windows, la carpeta se instala de manera predeterminada en C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd y en Linux, en /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Ejecute openocd como se muestra en el ejemplo siguiente. En el ejemplo se da por supuesto que la aplicación se ejecuta en el núcleo 0. Si la aplicación se ejecuta en el núcleo 1, reemplace "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"
    
  5. Abra una interfaz de línea de comandos mediante PowerShell, el símbolo del sistema de Windows o el shell de comandos de Linux.

  6. Vaya a la carpeta que contiene el archivo .out de aplicación compatible en tiempo real e inicie arm-none-eabi-gdb, que forma parte de la cadena de herramientas insertada de ARM GNU:

    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
    
  7. El servidor OpenOCD proporciona una interfaz de servidor GDB en :4444. Establezca el destino para la depuración.

    target remote :4444

  8. Ahora puede ejecutar comandos gdb. Agregue un punto de interrupción en la función HandleSendTimerDeferred:

    break HandleSendTimerDeferred

  9. El emulador de terminal conectado debe mostrar la salida de la aplicación compatible en tiempo real.

  10. Abra un nuevo símbolo del sistema de Azure Sphere (Windows) o una ventana de terminal (Linux).

  11. Vaya a la carpeta que contiene el archivo .imagepackage de aplicación de alto nivel.

  12. Si la aplicación se está ejecutando, deténgala y, a continuación, reiníciela con la depuración:

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    
  13. Abra un emulador de terminal y establezca una conexión Telnet o TCP a 192.168.35.2 en el puerto 2342 para ver la salida de la aplicación de alto nivel.

  14. Inicie gdb con el siguiente comando:

    Símbolo del sistema de Windows

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    Nota:

    El SDK de Azure Sphere se incluye con varias sysroots para que las aplicaciones puedan tener como destino diferentes conjuntos de API, como se describe en Versión del entorno de ejecución de aplicaciones, sysroots y API beta. Los sysroot se instalan en la carpeta de instalación del SDK de Azure Sphere en Sysroots.

  15. Establezca el destino de depuración remota en la dirección IP 192.168.35.2 en el puerto 2345:

    target remote 192.168.35.2:2345
    
  16. Agregue un punto de interrupción en la función SendMessageToRTApp:

    break SendMessageToRTApp
    
  17. Escriba c para continuar, observe la salida en el terminal Telnet/TCP y cambie a la ventana del símbolo del sistema o terminal que contiene la sesión de depuración de aplicaciones en tiempo real.

  18. Escriba c para continuar y observar la salida en la sesión serie conectada.

Puede trabajar entre sesiones de depuración, cambiando entre la aplicación con respuesta en tiempo real y la aplicación de alto nivel. Debería ver una salida similar a la siguiente en las dos ventanas de salida:

Starting debugger....
                     Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
                     Listening on port 2345
                                           Remote debugging from host 192.168.35.1, port 56522
              High-level intercore comms application
                                                    Sends data to, and receives data from a real-time capable application.
                                          Sending: hl-app-to-rt-app-00
                                                                      Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00

Para finalizar cada sesión de depuración, escriba q en el símbolo del sistema de gdb.