Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Sphere dispositivos pueden ejecutar dos tipos de aplicaciones:
- Aplicaciones de nivel alto se ejecutan en contenedores en el sistema operativo Azure Sphere
- Las aplicaciones con capacidad de tiempo real (RTApps) se ejecutan directamente sobre el hardware o con un sistema operativo en tiempo real (RTOS) en los núcleos de tiempo real
Se requiere una aplicación de alto nivel para cada dispositivo Azure Sphere; Las RTApps son opcionales.
Aplicaciones de alto nivel
Cada dispositivo Azure Sphere tiene una aplicación de alto nivel, que se ejecuta en el sistema operativo Azure Sphere y puede usar las bibliotecas de aplicaciones. Una aplicación de alto nivel puede:
Configure e interactúe con los periféricos de Azure Sphere, como los pines de entrada/salida de propósito general (GPIO), las UART y otras interfaces
Comunicarse con RTApps
Comunicación con Internet y servicios basados en la nube
Relaciones de confianza del agente con otros dispositivos y servicios a través de la autenticación basada en certificados
Una aplicación de alto nivel se ejecuta en un contenedor en el modo de usuario Normal World, como se describe en ¿Qué es Azure Sphere?. El contenedor de aplicaciones admite un subconjunto del entorno POSIX y un conjunto de bibliotecas de aplicaciones (Bibliotecas de aplicaciones) específicas del sistema operativo Azure Sphere. Las bibliotecas y funciones que están disponibles para las aplicaciones de alto nivel están restringidas para asegurarse de que la plataforma sigue siendo segura y se puede actualizar fácilmente. Las aplicaciones solo pueden acceder a las bibliotecas y los servicios de tiempo de ejecución que proporciona Microsoft; entre otras limitaciones, no disponen ni de acceso directo a la entrada/salida de archivos ni de acceso al intérprete de comandos. Development environment describe el conjunto de API base e introduce las bibliotecas de aplicaciones de Azure Sphere que admiten características específicas del dispositivo.
Se espera que las aplicaciones de alto nivel se ejecuten continuamente y se reinicien automáticamente si se detienen o producen un error.
Crear una aplicación de alto nivel proporciona más información sobre las características.
Aplicaciones compatibles en tiempo real
Un dispositivo Azure Sphere también puede tener una o varias aplicaciones compatibles en tiempo real además de su aplicación de alto nivel. Una RTApp puede:
- Configurar e interactuar con periféricos integrados en el microcontrolador Azure Sphere, como los pines GPIO y las interfaces UART.
- Comunicación con aplicaciones de alto nivel
Las RTApps se pueden ejecutar ya sea sobre hardware sin sistema operativo o con un sistema operativo de tiempo real (RTOS). El repositorio de ejemplos de Azure Sphere en GitHub incluye un ejemplo bare-metal de HelloWorld, así como otro ejemplo que demuestra la comunicación entre núcleos entre aplicaciones de alto nivel y RTApps. El repositorio ejemplos de Azure en GitHub contiene un ejemplo que muestra cómo usar Azure Sphere con Azure RTOS.
Hay disponibles en GitHub controladores y ejemplos adicionales para RTApps dirigidas a los núcleos M4 en tiempo real del chip MT3620, de los socios de Azure Sphere MediaTek y Codethink.
Cada RTApp se ejecuta aislado en un núcleo de E/S determinado y solo puede comunicarse con una aplicación de alto nivel; no puede usar Internet, las bibliotecas de aplicaciones Azure Sphere u otras características del sistema operativo Azure Sphere.
Crear una aplicación con respuesta en tiempo real proporciona más información sobre las características y el proceso de desarrollo de RTApps.
Características comunes a todas las aplicaciones
A pesar de las diferencias significativas entre aplicaciones de alto nivel y RTApps, todas las aplicaciones Azure Sphere tienen algunas cosas en común. Puede desarrollar, compilar y depurar ambos tipos de aplicaciones mediante Visual Studio o Visual Studio Code, o invocando CMake y Ninja mediante la CLI.
Además, las siguientes características de seguridad se aplican tanto a las aplicaciones de alto nivel como a las RTApps:
Funcionalidades de la aplicación
Independientemente de dónde se ejecute, todas las Azure Sphere aplicación deben especificar los servicios e interfaces externos que requiere (por ejemplo, sus requisitos de E/S y red) para evitar cualquier uso no autorizado o inesperado.
Las funcionalidades de la aplicación son los recursos que requiere una aplicación. Entre las funcionalidades de aplicación se incluyen los periféricos que usa la aplicación, los hosts de Internet a los que se conecta una aplicación de alto nivel y el permiso para cambiar la configuración de red, entre otros. Cada aplicación debe tener un manifiesto de aplicación que identifique estos recursos.
Funcionalidades del dispositivo
Una funcionalidad de dispositivo habilita una actividad específica del dispositivo. El servicio de seguridad de Azure Sphere concede funcionalidades de dispositivo. De forma predeterminada, Azure Sphere chips no tienen funcionalidades de dispositivo. Hay dos tipos principales de capacidades del dispositivo: la capacidad del dispositivo appDevelopment y la capacidad del dispositivo fieldServicing.
La capacidad del dispositivo appDevelopment cambia el tipo de firma en la que confía el dispositivo. De forma predeterminada, los dispositivos Azure Sphere confían en los paquetes de imágenes firmados para producción, pero no en los paquetes de imágenes firmados por el SDK. Como resultado, no puede cargar manualmente un paquete de imagen firmado por el SDK en un dispositivo de Azure Sphere que no tenga esta capacidad. Sin embargo, cuando la funcionalidad appDevelopment está presente, el dispositivo confía en los paquetes de imágenes firmadas por el SDK. Además, permite iniciar, detener, depurar o quitar una aplicación del dispositivo. En resumen, la funcionalidad de desarrollo de aplicaciones debe estar presente en el dispositivo para poder:
- Cargar localmente un paquete de imagen generado con Visual Studio o con el comando azsphere image-package.
- Inicie, detenga, depure o quite un paquete de imágenes del dispositivo Azure Sphere, independientemente de cómo se firma el paquete de imágenes.
El comando az sphere device enable-development crea y aplica la funcionalidad appDevelopment e impide que el dispositivo reciba actualizaciones de aplicaciones en la nube.
La funcionalidad fieldServicing permite las comunicaciones de dispositivo a equipo en dispositivos que están en estado de fabricación DeviceComplete. Con esta funcionalidad, puede cargar localmente imágenes firmadas para producción, pero no eliminarlas. Puede iniciar y detener aplicaciones, pero no depurarlas. También puede realizar tareas de mantenimiento rutinarias, como configurar Wi-Fi. Está pensado para el uso a corto plazo durante una sesión de mantenimiento, un período limitado durante el cual se concede acceso al dispositivo por operación.
Requisitos de firma e implementación
Todos los paquetes de imagen implementados en un dispositivo Azure Sphere deben estar firmados. El SDK de Azure Sphere y el comando az sphere image-package firman paquetes de imágenes para pruebas mediante una clave de firma del SDK. Los dispositivos Azure Sphere solo confían en esta clave si también está habilitada la capacidad de dispositivo appDevelopment.
El Azure Sphere security Service firma los paquetes de imagen al cargarlos en la nube. Los paquetes de imágenes firmadas por producción se pueden transferir localmente o cargar desde la nube.
Para evitar la instalación de software no autorizado, las aplicaciones se pueden cargar en un dispositivo Azure Sphere de dos maneras:
Carga lateral, que se puede usar tanto para el desarrollo y las pruebas de software como para el mantenimiento en campo de dispositivos. La carga local para el desarrollo y las pruebas de software requiere la capacidad del dispositivo appDevelopment. La carga local para el mantenimiento en campo requiere la capacidad de dispositivo fieldServicing y paquetes de imágenes firmados para producción. Tanto Visual Studio como Visual Studio Code instalan aplicaciones de forma local durante el desarrollo y la depuración; también puede instalarlas manualmente mediante la CLI de Azure.
Cloud update, que solo puede realizar el servicio de seguridad de Azure Sphere. Use el CLI de Azure para crear y administrar implementaciones en la nube.
Aplicaciones asociadas
Las aplicaciones que funcionan juntas pueden considerarse aplicaciones asociadas y luego se pueden instalar manualmente por separado. Cuando cargas localmente una aplicación que tiene una aplicación asociada, la aplicación asociada permanece en el dispositivo Azure Sphere si ya se ha implementado previamente. Cada aplicación declara una lista de sus asociados en su configuración del proyecto.
Para agregar asociados a la configuración del proyecto de CMake, especifique el identificador de componente de la aplicación de asociado en el campo partnerComponents de la sección configuraciones del launch.vs.json o el archivo .vscode/launch.json:
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Las aplicaciones de alto nivel y rtApps que se comunican entre sí deben identificarse como asociados. Azure Sphere no admite la comunicación entre pares de aplicaciones de alto nivel o pares de RTApps.