Información general sobre las aplicaciones Azure Sphere

Los dispositivos Azure Sphere pueden ejecutar dos tipos de aplicaciones:

  • Aplicaciones de alto nivel ejecutadas en contenedor en Azure Sphere OS
  • Las aplicaciones compatibles con tiempo real (RTApps) se ejecutan en metal desnudo o con un sistema operativo en tiempo real (RTOS) en los núcleos en 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:

  • Configurar e interactuar con periféricos Azure Sphere, como los pins de entrada/salida de uso general (GPIO), receptores/transmisores asincrónicos universales (UART) y otras interfaces

  • Comunicarse con RTApps

  • Comunicarse con Internet y servicios basados en la nube

  • Relaciones de confianza de intermediario 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 la aplicación admite un subconjunto del entorno POSIX y un conjunto de bibliotecas de aplicaciones (Applibs) específicas del so Azure Sphere. Las bibliotecas y funciones que están disponibles para aplicaciones de alto nivel están restringidas para garantizar que la plataforma permanezca segura y pueda actualizarse fácilmente. Las aplicaciones solo pueden acceder a las bibliotecas y servicios en tiempo de ejecución que proporciona Microsoft; ni acceso directo a E/S de archivo ni de shell están disponibles, entre otras restricciones. El entorno de desarrollo 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 reinician automáticamente si se detienen o fallan.

Crear una aplicación de alto nivel proporciona más información sobre las características.

Aplicaciones compatibles con tiempo real

Un dispositivo Azure Sphere también puede tener una o más 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 MCU Azure Sphere, como los pin de GPIO y los UART
  • Comunicarse con aplicaciones de alto nivel

RTApps puede ejecutarse en metal desnudo o con un sistema operativo en tiempo real (RTOS). El repositorio de muestras de Azure Sphere en GitHub incluye una muestra de HelloWorld de metal desnudo, así como una muestra que demuestra la comunicación entre núcleos de alto nivel y RTApps. El repositorio de Azure Samples en GitHub contiene un ejemplo que muestra cómo usar Azure Sphere con Azure RTOS.

Los controladores y muestras adicionales para RTApps destinados a los núcleos M4 en tiempo real en el chip MT3620 están disponibles en GitHub de los asociados de Azure Sphere MediaTek y Codethink.

Cada RTApp se ejecuta aislada en un núcleo de E/S particular y puede comunicarse solo con una aplicación de alto nivel; no puede usar Internet, las aplicaciones Azure Sphere ni otras características del sistema operativo Azure Sphere.

Crear una aplicación 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 de 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 bien mediante la invocación de CMake y Ninja mediante la CLI.

Además, las siguientes características de seguridad se aplican tanto a las RTApps de alto nivel como a las siguientes:

Capacidades de la aplicación

Independientemente de dónde se ejecute, cada aplicación Azure Sphere debe 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 capacidades de la aplicación son los recursos que requiere una aplicación. Entre las funcionalidades de la 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 los permisos 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 permite una actividad específica del dispositivo. Las capacidades del dispositivo las concede el Servicio de Seguridad de Azure Sphere. De forma predeterminada, los chips de Azure Sphere no tienen capacidades de dispositivo. Hay dos tipos principales de capacidades de dispositivo: la funcionalidad appDevelopment device y fieldServicing device capability.

La funcionalidad appDevelopment device 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 imagen firmados para producción, pero no confían en los paquetes de imágenes firmados con SDK. Como resultado, no se puede realizar la instalación de prueba de un paquete de imagen firmado por SDK en un dispositivo Azure Sphere que no tenga esta capacidad. Sin embargo, cuando la funcionalidad appDevelopment está presente, el dispositivo confía en los paquetes de imagen firmados con SDK. Además, le permite iniciar, detener, depurar o quitar una aplicación del dispositivo. En resumen, la capacidad de desarrollo de aplicaciones debe estar presente en el dispositivo antes de poder:

  • Realizar la instalación de prueba de un paquete de imagen creado por Visual Studio o el comando azsphere image-package .
  • Iniciar, detener, depurar o quitar un paquete de imagen del dispositivo Azure Sphere, independientemente de cómo se firme el paquete de imagen.

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 se encuentran en el estado de fabricación DeviceComplete. Con esta funcionalidad, puedes realizar instalaciones de prueba de imágenes firmadas por producción, pero no eliminarlas. Puede iniciar y detener aplicaciones, pero no depurarlas. También puede realizar tareas de mantenimiento rutinarias, como la configuración de Wi-Fi. Está destinado a 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 imágenes implementados en un dispositivo Azure Sphere deben estar firmados. El SDK de Azure Sphere y el comando az sphere image-package firman paquetes de imagen para pruebas mediante una clave de firma de SDK. Los dispositivos Azure Sphere confían en esta clave solo si la funcionalidad de dispositivo appDevelopment también está presente.

La imagen de los signos de producción de Azure Sphere Security Service se empaqueta cuando se cargan en la nube. Los paquetes de imagen firmados por producción se pueden cargar de prueba o desde la nube.

Para evitar la instalación de software fraudulento, las aplicaciones solo se pueden cargar en un dispositivo Azure Sphere de dos maneras:

  • Instalación de prueba, que puede usarse tanto para desarrollo y pruebas de software como para el mantenimiento en campo de dispositivos. La instalación de prueba para el desarrollo y las pruebas de software requiere la funcionalidad de dispositivo appDevelopment. La instalación de prueba para el mantenimiento de campo requiere la funcionalidad fieldServicing device y los paquetes de imagen con firma de producción. Visual Studio y Visual Studio Code aplicaciones de instalación de prueba durante el desarrollo y la depuración; también puedes realizar instalaciones de prueba manualmente mediante la CLI de Azure.

  • Actualización en la nube, que solo puede realizar el Servicio de Seguridad de Azure Sphere. Use la CLI de Azure para crear y administrar implementaciones en la nube.

Aplicaciones de partners

Las aplicaciones que funcionan conjuntamente se pueden considerar aplicaciones asociadas y, a continuación, se pueden realizar instalaciones de prueba por separado. Cuando se instala de prueba una aplicación que tiene un partner, la aplicación asociada permanece en el dispositivo Azure Sphere si ya se ha implementado. Cada aplicación declara una lista de sus partners en la configuración del proyecto.

Para agregar partners a la configuración del proyecto CMake, especifique el id. de componente de la aplicación asociada en el campo partnerComponents de la sección de configuraciones del archivo launch.vs.json o .vscode/launch.json:

"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Las aplicaciones de alto nivel y las RTApps que se comunican entre sí deben identificarse como partners. Azure Sphere no admite la comunicación entre pares de aplicaciones de alto nivel o pares de RTApps.