Compartir a través de


Tutorial: Compilación de una aplicación de alto nivel

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).

Una aplicación de alto nivel se ejecuta en el sistema operativo Azure Sphere, usa las bibliotecas de aplicaciones de Azure Sphere y puede comunicarse con Internet y con servicios basados en la nube. Consulte Introducción a las aplicaciones de Azure Sphere para obtener información básica sobre las aplicaciones de alto nivel.

En este tutorial, aprenderá a:

  • Preparación del dispositivo para desarrollo y depuración
  • Compilación, ejecución y depuración de una aplicación de alto nivel

Requisitos previos

Preparación del dispositivo para desarrollo y depuración

Antes de poder compilar una aplicación de ejemplo en el dispositivo de Azure Sphere o desarrollar nuevas aplicaciones para él, debe habilitar el desarrollo y la instalación de prueba. De forma predeterminada, los dispositivos de Azure Sphere están "bloqueados"; es decir, no permiten la carga de las aplicaciones en desarrollo desde un equipo y no permiten la depuración de aplicaciones. Preparar el dispositivo para la instalación de prueba quita esta restricción.

El comando azsphere device enable-development configura el dispositivo para aceptar aplicaciones para la depuración, carga el servidor de depuración en el dispositivo y asigna el dispositivo a un grupo de dispositivos que no permite actualizaciones de aplicaciones en la nube. Durante el desarrollo y la depuración de aplicaciones, debe dejar el dispositivo en este grupo para que las actualizaciones de las aplicaciones en la nube no sobrescriban la aplicación en desarrollo.

  1. Asegúrese de que el dispositivo de Azure Sphere está conectado al equipo y que el equipo está conectado a Internet.

  2. Abra una interfaz de línea de comandos mediante PowerShell, el símbolo del sistema de Windows o el shell de comandos de Linux.

  3. Escriba el comando siguiente:

    azsphere device enable-development
    

    Debería ver un resultado similar al siguiente:

    Getting device capability configuration for application development.
    Downloading device capability configuration for device ID '<device ID>'.
    Successfully downloaded device capability configuration.
    Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'.
    Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'.
    Successfully disabled over-the-air updates.
    Enabling application development capability on attached device.
    Applying device capability configuration to device.
    Successfully applied device capability configuration to device.
    The device is rebooting.
    Installing debugging server to device.
    Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device.
    Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device.
    Application development capability enabled.
    Successfully set up device '<device ID>' for application development, and disabled over-the-air updates.
    Command completed successfully in 00:00:38.3299276.
    

Si se produce un error en el comando azsphere device enable-development , consulte Solución de problemas de Azure Sphere para obtener ayuda.

Compilación y ejecución de la aplicación de alto nivel con Visual Studio Code

En este tutorial se usa la plantilla Blink de Azure Sphere, que forma parte de la extensión de Azure Sphere para Visual Studio Code. La plantilla Blink parpadea un LED para que pueda comprobar que el dispositivo y las herramientas de Azure Sphere están instalados y configurados correctamente.

  1. Inicie Visual Studio Code. Seleccione Ver>paleta de comandos y escriba Azure Sphere: Generar nuevo proyecto.

    Barra de comandos en Visual Studio Code

  2. Elija Blink en el menú Plantillas.

    menú emergente con nombres de plantilla

  3. Después, Visual Studio Code muestra una ventana de Explorador de archivos. Vaya a la carpeta donde desea colocar la aplicación Blink. Visual Studio Code crea la carpeta Blink en la ubicación seleccionada y genera los archivos de compilación para la aplicación Blink. Deberían aparecer mensajes de CMake.

  4. Abra el archivo CMakeLists.txt y cambie la configuración de TARGET_DIRECTORY para especificar la carpeta que contiene definiciones para el hardware que está usando. De forma predeterminada, el TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que coincide con el Kit de desarrollo mt3620 de Azure Sphere seeed:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Se proporcionan varias definiciones de hardware con la plantilla. Por ejemplo, si usa una placa DE desarrollo MT3620 SEEED, especifique HardwareDefinitions/seeed_mt3620_mdb en su lugar.

  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 la aplicación, cree un paquete de imágenes, impleméntelo en la placa e inícielo 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 la aplicación debe compilarse. Si es así, el foco cambia al panel de salida, que muestra la salida de CMake/Build.

    A continuación, el panel de salida muestra la salida de Azure Sphere 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.

    Sugerencia

    Tome nota de la ubicación del paquete de imágenes, ya que lo necesitará al crear una implementación. Debería ver un mensaje como "Compilar archivos escritos en <la ruta> de acceso" en la ventana Salida , donde <path> es la ruta de acceso completa a la carpeta de compilación de la aplicación Blink, normalmente finalizando en "out\ARM-Debug" o "out/ARM-Debug".

  7. Transcurrido un breve intervalo de tiempo, debería ver que el LED parpadea.

  8. Establezca un punto de interrupción en main.c y recorra la aplicación para explorar las características de depuración de Visual Studio Code para Azure Sphere.

Compilación y ejecución de la aplicación de alto nivel con Visual Studio

En este tutorial se usa la plantilla Blink de Azure Sphere, que forma parte de la extensión de Azure Sphere para Visual Studio. La plantilla Blink parpadea un LED para que pueda comprobar que el dispositivo y las herramientas de Azure Sphere están instalados y configurados correctamente.

  1. Si no está familiarizado con Visual Studio, consulte el Inicio rápido o el Tour guiado para obtener información sobre cómo navegar por él y utilizarlo.

  2. Abra Visual Studio y seleccione Crear un proyecto. En el cuadro Buscar, escriba "azure sphere" para obtener una lista de plantillas de Azure Sphere. Elija Blink de Azure Sphere en la lista.

  3. Escriba un nombre y una ubicación para el proyecto y, a continuación, seleccione Crear.

  4. Abra el archivo CMakeLists.txt y cambie la configuración de TARGET_DIRECTORY para especificar la carpeta que contiene definiciones para el hardware que está usando. De forma predeterminada, el TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que coincide con el Kit de desarrollo mt3620 de Azure Sphere seeed:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Se proporcionan varias definiciones de hardware con la plantilla. Por ejemplo, si usa una placa DE desarrollo MT3620 SEEED, especifique HardwareDefinitions/seeed_mt3620_mdb en su lugar.

  5. En Visual Studio, seleccione Ver>salida para mostrar el panel Salida.

  6. 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 (HLCore) donde aplicación de Azure Sphere es el nombre de la aplicación de alto nivel actual o presione F5.

    Botón Depurador GDB remoto

  7. Si se le solicita que compile el proyecto, seleccione . Visual Studio compila la aplicación, crea un paquete de imágenes, lo transfiere localmente a la placa y lo inicia en modo de depuración. Por transferencia local se entiende que la aplicación se entrega directamente desde el equipo mediante una conexión con cable, en lugar de entregarse mediante la nube.

    Sugerencia

    Tome nota de la ubicación del paquete de imágenes, ya que lo necesitará al crear una implementación. Debería ver un mensaje como "El archivo de salida está en: <ruta> de acceso" en la salida en Ver>salida>Mostrar salida de: Compilación, donde <ruta> de acceso es la ruta de acceso completa a la carpeta de compilación de la aplicación Blink, que suele terminar en "out/ARM-Debug".

  8. De forma predeterminada, el panel 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.

  9. Al ejecutar el programa, verá que un LED parpadea.

Descarga de la aplicación de ejemplo

Puede descargar la aplicación HelloWorld de la siguiente manera: :

  1. Apunte el explorador al Explorador de ejemplos de Microsoft.
  2. Escriba "Azure Sphere" en el cuadro De búsqueda.
  3. Seleccione Azure Sphere - Hola mundo en los resultados de la búsqueda.
  4. Seleccione Descargar ZIP.
  5. Abra el archivo descargado y extraiga en un directorio local.

Compilación del ejemplo

Siga estos pasos para crear los archivos de compilación e .imagepackage de la aplicación de ejemplo HelloWorld_HighLevelApp.

  1. Actualice el ejemplo para adaptarlo a su hardware, si es necesario. De forma predeterminada, los ejemplos tienen como destino hardware que sigue el diseño de la placa de referencia MT3620 (RDB), como el Kit de desarrollo MT3620 de Seeed Studios. Hay definiciones de hardware de destino adicionales para las aplicaciones de ejemplo disponibles en el directorio HardwareDefinitions del repositorio ejemplos de Azure Sphere. Por ejemplo, los archivos de definición de hardware para avnet MT3620 Starter Kit se encuentran en el subdirectorio HardwareDefinitions/avnet_mt3620_sk.

    • Abra CMakeLists.txt y actualice el parámetro TARGET_DIRECTORY en la función azure_target_hardware_definition para que apunte al subdirectorio del hardware. Por ejemplo:

      azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
      
  2. Abra una interfaz de línea de comandos mediante PowerShell, el símbolo del sistema de Windows o el shell de comandos de Linux. Vaya al directorio de compilación del proyecto.

  3. Desde el directorio de compilación del proyecto, en el símbolo del sistema, ejecute CMake con los parámetros siguientes:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      Nombre preestablecido de configuración de compilación tal como se define en CMakePresets.json.

    • --build <cmake-path>

      Directorio binario que contiene la memoria caché de CMake. Por ejemplo, si ejecuta CMake en un ejemplo de Azure Sphere, el comando de compilación sería cmake --build out/ARM-Debug.

    • <source-path>

      Ruta de acceso del directorio que contiene los archivos de origen de la aplicación de ejemplo. En el ejemplo, el repositorio de ejemplos de Azure Sphere se descargó en un directorio denominado AzSphere.

      Los parámetros de CMake se separan mediante espacios. El carácter de continuación de línea (^ para la línea de comandos de Windows, \ para la línea de comandos de Linux o " para PowerShell) se puede usar para mejorar la legibilidad, pero no es necesario.

    En los ejemplos siguientes se muestran los comandos de CMake para la aplicación de alto nivel Hola mundo:

    Símbolo del sistema de Windows

     cmake ^
     --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    

    Windows PowerShell

     cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    
  4. Ejecute Ninja para compilar la aplicación y crear el archivo de paquete de imagen:

    ninja -C out/ARM-Debug
    

    Ninja coloca la aplicación resultante y los archivos .imagepackage en el directorio especificado.

    También puede invocar Ninja a través de CMake con el siguiente comando:

    cmake --build out/<binary-dir>
    

    Establezca <binary-dir> en el directorio binario que contiene la memoria caché de CMake. Por ejemplo, si ejecuta CMake en un ejemplo de Azure Sphere, el comando de compilación sería cmake --build out/ARM-Debug.

    Para solucionar problemas, especialmente después de realizar cambios en los comandos de CMake, elimine la compilación completa e inténtelo de nuevo.

Ejecución del ejemplo

  1. Si el dispositivo ya está ejecutando una aplicación, elimine la aplicación:

    azsphere device sideload delete
    
  2. Cambie al directorio que contiene los archivos de compilación e .imagepackage anteriormente creados.

  3. Cargue el paquete de imágenes en el dispositivo ejecutando el comando azsphere device sideload deploy y especificando el paquete de imágenes. Por ejemplo:

    azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
    

    Este comando carga el paquete de imágenes e inicia la aplicación. Debería ver una luz LED parpadeando.

    Sugerencia

    Anote la ruta de acceso del paquete de imágenes. Usará el paquete de imágenes más adelante en el tutorial de inicio rápido de implementación.

Depuración del ejemplo

  1. Cambie al directorio que contiene los archivos de compilación e .imagepackage anteriormente creados.

  2. Obtenga el identificador del componente si aún no lo tiene:

    azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
    

  1. Si la aplicación se está ejecutando, deténgala y, a continuación, reiníciela con la --debug-mode opción :

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    

Debería ver lo siguiente:

 <ComponentId>
 App state   : debugging
 GDB port    : 2345
 Output port : 2342
 Core        : High-level
  1. Use un cliente de terminal para establecer una conexión TCP sin procesar o Telnet para leer el flujo de salida del proceso. Especifique 192.168.35.2 como la dirección IP y 2342 como el puerto.

  2. Abra una interfaz de línea de comandos mediante PowerShell o un símbolo del sistema estándar en Windows o shell de comandos en Linux y pase el archivo binario de la aplicación .out desde la compilación como parámetro. Esto habilitará una depuración completa de código fuente.

    Símbolo del sistema de Windows

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

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_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.

  3. 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

  4. Ejecute cualquier otro comando de gdb que elija. Por ejemplo, los siguientes comandos establecen un punto de interrupción tras la entrada en main() y, a continuación, continúan la ejecución después del punto de interrupción, respectivamente.

    break main
    
    c
    

    Para obtener más información sobre la depuración con gdb, vea GDB: El depurador de proyectos GNU o uno de los otros muchos orígenes sobre el tema.

Pasos siguientes

Ha creado una aplicación de alto nivel para ejecutarse en el dispositivo de Azure Sphere. Es posible que quiera modificarlo ahora. Las definiciones de hardware describen cómo editar un archivo JSON de definición de hardware y volver a generar el archivo de encabezado asociado.

A continuación, aprenda a implementar la aplicación de alto nivel desde la nube.

Consulte también

Visite la Galería de Azure Sphere, una colección de scripts, utilidades y funciones de Azure Sphere reutilizables, inspiradores, sin mantener y reutilizables.