Tutorial: Compilación de una aplicación de alto nivel
Una aplicación de alto nivel se ejecuta en el sistema operativo Azure Sphere, usa las bibliotecas de aplicaciones Azure Sphere y puede comunicarse con Internet y con servicios basados en la nube. Consulte Información general de Azure Sphere aplicaciones 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
- Instale CMake y Ninja para Windows o para Linux.
- Instale Visual Studio Code para Windows o para Linux.
- Instale CMake y Ninja para Windows o para Linux.
- Instalación del SDK para Windows o para Linux
- Elegir un inquilino y reclamar el dispositivo
- Configuración de redes y actualización del sistema operativo del dispositivo
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 que acepte 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.
Asegúrese de que el Azure Sphere está conectado al equipo y que el equipo está conectado a Internet.
Abra una interfaz de línea de comandos mediante PowerShell, Windows símbolo del sistema o el shell de comandos de Linux.
Escriba el comando siguiente:
azsphere device enable-developmentDeberí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 Azure Sphere problemas para obtener ayuda.
Compile y ejecute la aplicación de alto nivel con Visual Studio Code
En este tutorial se usa Azure Sphere de 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 Azure Sphere y las herramientas están instalados y configurados correctamente.
Inicie Visual Studio Code. Seleccione Ver > paleta de comandos y, a continuación, escriba Azure Sphere: Generar nueva Project.
Elija Blink en el menú Plantillas.
Visual Studio Code, a continuación, muestra Explorador de archivos ventana. 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.
Abra el CMakeLists.txt y cambie la configuración TARGET_DIRECTORY para especificar la carpeta que contiene las definiciones del hardware que está usando. De forma predeterminada, TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que coincide con el Kit de desarrollo Azure Sphere MT3620:
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 SEEED MT3620 Mini Dev Board, especifique HardwareDefinitions/seeed_mt3620_mdb en su lugar.
Presione F5 para compilar y depurar el proyecto. Si el proyecto no se ha creado previamente o si los archivos han cambiado y se requiere la recompilación, Visual Studio Code compilará el proyecto antes de que se inicie la depuración.
Espere varios segundos a Visual Studio Code para compilar la aplicación, crear un paquete de imagen, implementarlo en la placa e iniciarlo en modo de depuración. Verá actualizaciones de estado en el panel Salida a lo largo del proceso.
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 Azure Sphere mientras implementa el paquete de imagen en el dispositivo. Por último, la herramienta Consola de depuración recibe el foco y muestra la salida de gdb.
Sugerencia
Anote la ubicación del paquete de imagen, ya que lo necesitará al crear una implementación. Debería ver un mensaje como "Compilar archivos escritos en " en la ventana Salida, donde es la ruta de acceso completa a la carpeta de compilación de la aplicación Blink, que normalmente termina en <path> <path> "out \ ARM-Debug" o "out/ARM-Debug".
Transcurrido un breve intervalo de tiempo, debería ver que el LED parpadea.
Establezca un punto de interrupción en main.c y recorra la aplicación para que pueda explorar las características de depuración de Visual Studio Code para Azure Sphere.
Compile y ejecute la aplicación de alto nivel con Visual Studio
En este tutorial se usa Azure Sphere de 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 Azure Sphere y las herramientas están instalados y configurados correctamente.
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.
Abra Visual Studio y seleccione Crear un nuevo proyecto. En el cuadro Buscar, escriba "azure sphere" para obtener una lista de Azure Sphere plantillas. Elija Azure Sphere Blink en la lista.
Escriba un nombre y una ubicación para el proyecto y, a continuación, seleccione Crear.
Abra el CMakeLists.txt y cambie la configuración TARGET_DIRECTORY para especificar la carpeta que contiene las definiciones del hardware que está usando. De forma predeterminada, TARGET_DIRECTORY especifica HardwareDefinitions/mt3620_rbd, que coincide con el Kit de desarrollo Azure Sphere MT3620:
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 SEEED MT3620 Mini Dev Board, especifique HardwareDefinitions/seeed_mt3620_mdb en su lugar.
En Visual Studio, seleccione Ver > salida para mostrar el panel Salida.
Asegúrese de que el dispositivo esté conectado al equipo mediante USB. En el menú Establecer elemento de inicio, seleccione Azure Sphere App (HLCore) donde Azure Sphere App es el nombre de la aplicación de alto nivel actual o presione F5.

Si se le solicita que compile el proyecto, seleccione Sí. 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
Anote la ubicación del paquete de imagen, ya que lo necesitará al crear una implementación. Debería ver un mensaje como "Output file is at: " (El archivo de salida está en: ) en la salida de View Output Show output from : Build (Ver salida de visualización de salida de : Compilar), donde es la ruta de acceso completa a la carpeta de compilación de la aplicación Blink, que normalmente termina en <path> > > <path> "out/ARM-Debug".
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.
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:
- Apunte el explorador a Explorador de ejemplos de Microsoft.
- Escriba "Azure Sphere" en el cuadro Buscar.
- Seleccione Azure Sphere - Hola mundo en los resultados de la búsqueda.
- Seleccione Descargar ARCHIVO ZIP.
- 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.
Cree o navegue hasta el directorio de compilación del proyecto para la aplicación de alto nivel. Este es el directorio que contendrá los archivos .imagepackage que se generarán durante el proceso de compilación. Por ejemplo, para crear y abrir un nuevo directorio denominado "build", escribiría los siguientes comandos:
mkdir build cd buildActualice el ejemplo para adaptarse 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 (RDB) MT3620, 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 Azure Sphere Samples. 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")
Abra una interfaz de línea de comandos mediante PowerShell, Windows símbolo del sistema o el shell de comandos de Linux. Vaya al directorio de compilación del proyecto.
Desde el directorio de compilación del proyecto, en el símbolo del sistema, ejecute CMake con los parámetros siguientes:
-G
Establezca este parámetro en "Ninja" para indicar que CMake debe usar el generador Ninja para crear los archivos de compilación, ya que Ninja se usará para completar la compilación.
-DCMAKE_TOOLCHAIN_FILE
Establezca este parámetro en la ruta de acceso al archivo de cadena de herramientas del compilador en el equipo. En Windows, el CMAKE_TOOLCHAIN_FILE debe apuntar a C:\Archivos de programa (x86) \Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereRTCoreToolchain.cmake. Para Linux, especifique/opt/azurespheresdk/CMakeFiles/AzureSphereRTCoreToolchain.cmake.
-DAZURE_SPHERE_TARGET_API_SET
Establezca este parámetro en el conjunto de API deseado Azure Sphere que se va a usar. En el ejemplo, se establece en "latest-lts", que selecciona el conjunto más reciente de API designado para la compatibilidad a largo plazo.
-DCMAKE_BUILD_TYPE
Establezca este parámetro en el tipo de compilación. Los valores posibles son Debug y Release.
El último parámetro es la ruta de acceso al directorio en el equipo 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 facilitar la lectura, pero no es necesario.
En los ejemplos siguientes se muestran los comandos de CMake para Hola mundo aplicación de alto nivel.
Windows Símbolo del sistema
cmake ^ -G "Ninja" ^ -DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereToolchain.cmake" ^ -DAZURE_SPHERE_TARGET_API_SET="latest-lts" ^ -DCMAKE_BUILD_TYPE="Debug" ^ "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"Windows PowerShell
cmake ` -G "Ninja" ` -DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereToolchain.cmake" ` -DAZURE_SPHERE_TARGET_API_SET="latest-lts" ` -DCMAKE_BUILD_TYPE="Debug" ` "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"Ejecute ninja para compilar la aplicación y crear el archivo de paquete de imagen.
ninja
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
Si el dispositivo ya está ejecutando una aplicación, elimine la aplicación:
azsphere device sideload deleteCambie al directorio que contiene los archivos de compilación e .imagepackage anteriormente creados.
Cargue el paquete de imágenes en el dispositivo ejecutando el comando azsphere device sideload deploy y especificando el paquete de imagen. Por ejemplo:
azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackageEste 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
Cambie al directorio que contiene los archivos de compilación e .imagepackage anteriormente creados.
Obtenga el identificador del componente si aún no lo tiene:
azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
Si la aplicación se está ejecutando, deténla y reiníciela con la
--debug-modeopció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
Use un cliente de terminal para establecer una conexión TCP telnet o sin procesar para leer el flujo de salida del proceso. Especifique 192.168.35.2 como la dirección IP y 2342 como el puerto.
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 de la compilación como parámetro. Esto habilitará una depuración completa de código fuente.
Windows Símbolo del sistema
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.outWindows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.outEstablezca 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:2345Ejecute cualquier otro comando 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 maincPara más información sobre la depuración con gdb, consulte el artículo sobre GDB, el depurador del proyecto GNU o uno de los otros numerosos orígenes de información sobre el tema.
Pasos siguientes
Ha creado una aplicación de alto nivel para ejecutarla en el Azure Sphere dispositivo. 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.
Vea también
Visite la galería de Azure Sphere, una colección de scripts, utilidades y funciones Azure Sphere, sin mantener y reutilizables.