Crear e implementar aplicaciones de partners
En esta sección se describe cómo crear, empaquetar e implementar aplicaciones asociadas de Azure Sphere.
Estas instrucciones usan las aplicaciones de ejemplo de IntercoreComms como ejemplo.
Requisitos previos
- Conectar el dispositivo Azure Sphere al equipo
- Instalar Azure Sphere
- Instala la cadena de herramientas GNU Arm Embedded si estás usando Visual Studio Code o cli.
- Configure el hardware para mostrar la salida del UART dedicado, si aún no lo ha hecho
Habilitar desarrollo y 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 depuración. 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. Al preparar el dispositivo para la depuración se elimina esta restricción y se carga el software necesario para depurar y desbloquear las capacidades del dispositivo.
Para depurar en los núcleos en tiempo real, utilice el comando az sphere device enable-development . Este comando configura el dispositivo para que acepte aplicaciones de un equipo para la depuración y asigna el dispositivo al grupo Dispositivo de desarrollo, que no permite las 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.
En Windows, debe agregar el --enable-rt-core-debugging
parámetro, que carga los servidores de depuración y los controladores necesarios para cada tipo de núcleo en el dispositivo.
Inicie sesión en Azure Sphere si aún no lo ha hecho:
az login
Abre una interfaz de línea de comandos con PowerShell o símbolo del sistema de Windows con privilegios de administrador. El
--enable-rt-core-debugging
parámetro requiere privilegios de administrador porque instala controladores USB para el depurador.Escriba el siguiente comando:
az sphere device enable-development --enable-rt-core-debugging --catalog <CatalogName> --resource-group <ResourceGroupName>
Cierre la ventana cuando finalice el comando porque ya no se requiere privilegio de administrador. Como procedimiento recomendado, siempre debe usar el privilegio más bajo que puede llevar a cabo una tarea.
Si se produce un error en el comando az sphere device enable-development , consulte Solucionar problemas de Azure Sphere para obtener ayuda.
Habilitar desarrollo y 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 depuración. 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. Al preparar el dispositivo para la depuración, se elimina esta restricción y se carga el software necesario para depurar y desbloquear las capacidades del dispositivo, como se describe en Capacidades y comunicación del dispositivo.
Para depurar en los núcleos en tiempo real, utilice el comando az sphere device enable-development . Este comando configura el dispositivo para que acepte aplicaciones de un equipo para la depuración y asigna el dispositivo al grupo Dispositivo de desarrollo, que no permite las 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.
En Windows, debe agregar el --enable-rt-core-debugging
parámetro, que carga los servidores de depuración y los controladores necesarios para cada tipo de núcleo en el dispositivo.
Inicie sesión en Azure si aún no lo ha hecho:
az login
Abre una interfaz de línea de comandos con PowerShell, símbolo del sistema de Windows o shell de comandos de Linux con privilegios de administrador. El
--enable-rt-core-debugging
parámetro requiere privilegios de administrador porque instala controladores USB para el depurador.Escriba el siguiente comando:
az sphere device enable-development --enable-rt-core-debugging
Cierre la ventana cuando finalice el comando porque ya no se requiere privilegio de administrador. Como procedimiento recomendado, siempre debe usar el privilegio más bajo que puede llevar a cabo una tarea.
Si el comando az sphere device enable-development falla con el siguiente mensaje de error, consulte Solucionar problemas de Azure Sphere para obtener ayuda.
error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.
Crear aplicaciones de asociado con Visual Studio
Asegúrate de que el dispositivo esté conectado a tu PC mediante USB. En el menú Establecer elemento de inicio , selecciona Azure Sphere App (All Cores) donde Azure Sphere App es el nombre de tu proyecto de nivel superior o presiona F5.
Si se le pide que cree el proyecto, seleccione Sí. Visual Studio compila las aplicaciones asociadas, crea paquetes de imagen, los carga de prueba 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 por cable, en lugar de entregarse a través de la nube.
Observe las rutas de acceso de la salida Ver>>salida Mostrar salida de: Generar salida, que indica la ubicación de los paquetes de imagen de salida en su PC. Cuando estés listo para crear una implementación, necesitarás conocer las rutas de acceso a los paquetes de imágenes.
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 .
Crear aplicaciones de partners con Visual Studio Code
Abra la carpeta que contiene las aplicaciones de asociados. Visual Studio Code detecta el archivo del área de trabajo y le pregunta si desea abrir el área de trabajo. Selecciona Abrir área de trabajo para abrir la aplicación en tiempo real y la aplicación de alto nivel a la vez.
Haz clic con el botón derecho en cualquiera de los dos archivos CMakeLists.txt y selecciona Crear todos los proyectos.
Haga clic en el icono Ejecutar de la barra de actividad Visual Studio Code.
En el menú desplegable que aparece en la parte superior de la ventana en el lado izquierdo de la pantalla, seleccione Iniciar Azure Sphere Apps (gdb)(área de trabajo).
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.
Espere varios segundos hasta que Visual Studio Code para crear las aplicaciones, crear los paquetes de imagen, implementarlos en el panel e iniciarlos en modo de depuración. Durante el proceso, verá actualizaciones de estado en el panel Salida .
En primer lugar, CMake determina si las aplicaciones deben crearse. Si es así, el foco se desplaza a la ventana 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.
Compilar y compilar la aplicación
Para crear sus aplicaciones con la CLI, deberá encontrar las herramientas de compilación, encabezados y bibliotecas correctas en el equipo, denominadas colectivamente sysroot. 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.
Al crear con la CLI, primero debe compilar e implementar la aplicación compatible con tiempo real y, a continuación, compilar e implementar la aplicación de alto nivel.
Crear e implementar la aplicación compatible con tiempo real
Vaya a la carpeta que contiene su aplicación en tiempo real.
Abra el archivo de app_manifest.json y compruebe que el id. del componente de la aplicación de alto nivel se muestra en la funcionalidad AllowedApplicationConnections.
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.
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.
Los ejemplos siguientes muestran los comandos CMake para la RTApp de IntercoreComms:
Símbolo del sistema de Windows
cmake ^ --preset "ARM-Debug" ^ "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
Windows PowerShell
cmake ` --preset "ARM-Debug" ` "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
Desde el directorio de compilación del proyecto, en el símbolo del sistema, 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íacmake --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.
Elimine todas las aplicaciones que ya estén implementadas en el dispositivo:
az sphere device sideload delete
Desde el directorio de compilación del proyecto, en el símbolo del sistema, carga el paquete de imagen que Ninja ha creado:
az sphere device sideload deploy --image-package <path-to-imagepackage>
La aplicación comenzará a ejecutarse poco después de cargarse.
Obtener el id. de componente para la imagen:
az sphere image-package show --image-package <path-to-imagepackage>
El comando devuelve todos los metadatos del paquete de imagen. El id. del componente de la aplicación aparece en la sección Identidad del tipo de imagen de la aplicación. Por ejemplo:
... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...
Crear e implementar la aplicación de alto nivel
Vaya a la carpeta que contiene la aplicación de alto nivel.
Abra el archivo de app_manifest.json y compruebe que el id. del componente de RTApp se muestra en la funcionalidad AllowedApplicationConnections.
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.
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 para la aplicación de alto nivel de IntercoreComms.
Desde el directorio de compilación del proyecto, en el símbolo del sistema, 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íacmake --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.
Desde el directorio de compilación del proyecto, en el símbolo del sistema, carga el paquete de imagen que Ninja ha creado:
az sphere device sideload deploy --image-package <package-name>
La aplicación comenzará a ejecutarse poco después de cargarse.
Obtener el id. de componente para la imagen:
az sphere image-package show --image-package <path-to-imagepackage>
El comando devuelve todos los metadatos del paquete de imagen. El id. del componente de la aplicación aparece en la sección Identidad del tipo de imagen de la aplicación. Por ejemplo:
"ComponentId": "<component-ID>", ... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...