Tutorial: Crear una aplicación de alto nivel

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

En este tutorial, aprenderá a:

  • Preparar el dispositivo para el desarrollo y la depuración
  • Crear, ejecutar y depurar una aplicación de alto nivel

Requisitos previos

Preparar el dispositivo para el desarrollo y la depuración

Antes de poder crear una aplicación de muestra en su dispositivo Azure Sphere o desarrollar nuevas aplicaciones para él, debe habilitar el desarrollo y la instalación de prueba. De forma predeterminada, los dispositivos Azure Sphere están "bloqueados"; es decir, no permiten que las aplicaciones en desarrollo se carguen desde un equipo y no permiten la depuración de aplicaciones. La preparación del dispositivo para la instalación de prueba elimina esta restricción.

El comando az sphere device enable-development configura el dispositivo para que acepte aplicaciones de 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 depuración de aplicaciones, debes dejar el dispositivo en este grupo para que las actualizaciones de aplicaciones en la nube no sobrescriban la aplicación en desarrollo.

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

  2. Abre una interfaz de línea de comandos con PowerShell, símbolo del sistema de Windows o shell de comandos de Linux.

  3. Escriba el siguiente comando:

    az sphere device enable-development --resource-group <ResourceGroupName> --catalog <CatalogName> --device <DeviceIdValue>
    

    Debería ver resultados similares a los siguientes:

    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 az sphere device enable-development , consulte Solucionar problemas de Azure Sphere para obtener ayuda.

Cree y ejecute la aplicación de alto nivel con Visual Studio Code

Este tutorial usa la plantilla Azure Sphere Blink, que forma parte de la extensión 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. Inicia Visual Studio Code. Selecciona Ver>paleta de comandos y, a continuación, escribe "Azure Sphere: Generate New Project".

  2. Seleccione Parpadear en el menú Plantillas.

  1. Visual Studio Code, a continuación, se muestra una ventana Explorador de archivos. Ve a la carpeta donde quieres 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ía ver los mensajes de CMake.

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

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

    Con la plantilla se proporcionan varias definiciones de hardware. Por ejemplo, si usa un panel de desarrollo mínimo SEEED MT3620, especifique HardwareDefinitions/seeed_mt3620_mdb en su lugar.

  3. Presione F5 para compilar y depurar el proyecto. Si el proyecto no se ha creado anteriormente o si los archivos han cambiado y es necesario recompilar, Visual Studio Code creará el proyecto antes de que se inicie la depuración.

  4. Espere varios segundos hasta que Visual Studio Code para crear la aplicación, crear un paquete de imagen, implementarlo en el panel e iniciarlo en modo de depuración. Durante el proceso, verá actualizaciones de estado en el panel Salida .

    En primer lugar, CMake determina si es necesario crear la aplicación. Si es así, el foco se desplaza al panel de salida, que muestra la salida de CMake/Build.

    A continuación, el panel de salida muestra la salida a medida que implementa el paquete de imagen en el dispositivo. Por último, la consola de depuración recibe el foco y muestra la salida gdb.

    Propina

    Tome nota de la ubicación del paquete de imagen, ya que lo necesitará al crear una implementación. Debería aparecer un mensaje como "Archivos de compilación escritos <en la ruta de acceso>" en la ventana Salida , 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 "fuera\ARM-Debug" o "fuera/ARM-Debug".

  5. Después de un breve retraso, deberías ver un parpadeo de LED.

  6. Establezca un punto de interrupción en algún lugar de main.c y pase por la aplicación para poder explorar las características de depuración de Visual Studio Code de Azure Sphere.

Crear y ejecutar la aplicación de alto nivel con Visual Studio

Este tutorial usa la plantilla Azure Sphere Blink, que forma parte de la extensión 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ás familiarizado con Visual Studio, considera el Inicio rápido o el Paseo guiado para obtener información sobre cómo navegar y usarlo.

  2. Abre Visual Studio y selecciona Crear un nuevo proyecto. En el cuadro Búsqueda, escriba "azure sphere" para obtener una lista de plantillas de Azure Sphere. Elige Azure Sphere Blink 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 las definiciones del hardware que está usando. De forma predeterminada, la TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que coincide con el Kit de desarrollo Seeed Azure Sphere MT3620:

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

    Con la plantilla se proporcionan varias definiciones de hardware. Por ejemplo, si usa un panel de desarrollo mínimo SEEED MT3620, especifique HardwareDefinitions/seeed_mt3620_mdb en su lugar.

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

  6. Asegúrate de que el dispositivo esté conectado a tu PC mediante USB. En el menú Establecer elemento de inicio , presiona F5 o selecciona Azure Sphere App (HLCore)* donde Azure Sphere App es el nombre de tu aplicación de alto nivel actual.

  7. Si se le pide que cree el proyecto, seleccione . Visual Studio compila la aplicación, crea un paquete de imagen, lo carga de prueba en la placa 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.

    Propina

    Tome nota de la ubicación del paquete de imagen, ya que lo necesitará al crear una implementación. Debería aparecer un mensaje como "El archivo de salida está en: <ruta deacceso>" en la salida en Ver>> salidaMostrar salida desde: Compilación, donde <ruta de acceso> es la ruta de acceso completa a la carpeta de compilación de la aplicación Blink, normalmente terminando en "fuera/ARM-debug".

  8. De forma predeterminada, el panel Salida muestra la salida desde Salida del 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 .

  9. Al ejecutar el programa, deberías ver un parpadeo de LED.

Descargar la aplicación de ejemplo

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

  1. Apunta el explorador al explorador de muestras de Microsoft.
  2. Escriba "Azure Sphere" en el cuadro de Búsqueda.
  3. Seleccione Azure Sphere - Hola mundo en los resultados de búsqueda.
  4. Selecciona Descargar ZIP.
  5. Abra el archivo descargado y extraiga el archivo a un directorio local.

Crear el ejemplo

Para crear los archivos de compilación y .imagepackage para la aplicación de ejemplo HelloWorld_HighLevelApp, siga estos pasos.

  1. Actualiza la muestra para que tenga como destino el hardware, si es necesario. De forma predeterminada, el hardware de destino de muestras que sigue el diseño de la placa de referencia MT3620 (RDB), como el kit de desarrollo MT3620 de Seeed Studios. Las definiciones de hardware de destino adicionales para las aplicaciones de ejemplo están disponibles en el directorio HardwareDefinitions del repositorio Azure Sphere Samples. Por ejemplo, los archivos de definición de hardware para el kit de inicio Avnet MT3620 están 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. Abre una interfaz de línea de comandos con PowerShell, símbolo del sistema de Windows o 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 siguientes parámetros:

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

      El nombre preestablecido de configuración de compilación según se define en CMakePresets.json.

    • --build <cmake-path>

      El directorio binario que contiene la 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>

      La ruta de acceso del directorio que contiene los archivos de origen de la aplicación de ejemplo. En el ejemplo, el repositorio de muestras de Azure Sphere se descargó en un directorio llamado AzSphere.

      Los parámetros CMake están separados por 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) puede usarse para facilitar la lectura, pero no es necesario.

    En los ejemplos siguientes se muestran los comandos CMake de 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. Ejecuta Ninja para crear la aplicación y crear el archivo de paquete de imagen:

    ninja -C out/ARM-Debug
    

    Ninja coloca los archivos resultantes de application y .imagepackage en el directorio especificado.

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

    cmake --build out/<binary-dir>
    

    Establecido <binary-dir> en el directorio binario que contiene la 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.

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

Ejecutar el ejemplo

  1. Si el dispositivo ya está ejecutando una aplicación, elimínela:

    az sphere device sideload delete
    
  2. Cambie al directorio que contiene los archivos de compilación y .imagepackage creados anteriormente.

  3. Carga el paquete de imagen en el dispositivo ejecutando el comando az sphere device sideload deploy y especificando el paquete de imagen. Por ejemplo:

    az sphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
    

    Este comando carga el paquete de imagen e inicia la aplicación. Deberías ver un parpadeo de LED.

    Propina

    Anote la ruta de acceso del paquete de imagen. Usará el paquete de imagen más adelante en el Inicio rápido de implementación.

Depurar el ejemplo

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

  2. Obtenga el id. de componente si aún no lo tiene:

    az sphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
    
  3. Si la aplicación se está ejecutando, deténla y, a continuación, reiníciala con la --debug-mode opción siguiente:

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

    Debería ver:

     ...
       "Identity": {
         "ComponentId": "<component-id>",
         "ImageId": "<image-id>",
         "ImageType": "Application"
       },
     ...
    
  4. Utilice un cliente de terminal para establecer una conexión Telnet o TCP sin procesar para leer la secuencia de salida del proceso. Especifique 192.168.35.2 como la dirección IP y 2342 como puerto.

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

    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 distribuye con varias sysroots para que las aplicaciones puedan dirigirse a diferentes conjuntos de API, como se describe en La versión en tiempo de ejecución de aplicaciones, sysroots y API beta. La sysroots se instala en la carpeta de instalación azure Sphere SDK en Sysroots.

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

  2. Ejecute cualquier otro comando gdb que elija. Por ejemplo, los siguientes comandos establecen un punto de interrupción al escribir 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, consulte GDB: The GNU Project Debugger o una de las otras numerosas fuentes sobre el tema.

Pasos siguientes

Ha creado una aplicación de alto nivel para ejecutarse en su dispositivo 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, obtenga información sobre cómo implementar la aplicación de alto nivel desde la nube.

Consulte también

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