Creación de aplicaciones de asociados
Importante
Esta es la documentación de Azure Sphere (heredado). Azure Sphere (heredado) se retira el 27 de septiembre de 2027 y los usuarios deben migrar a Azure Sphere (integrado) en este momento. Use el selector de versiones situado encima de la TOC para ver la documentación de Azure Sphere (integrado).
La manera más fácil de crear un nuevo par de aplicaciones asociadas es crear un directorio de nivel superior que contenga las aplicaciones de alto nivel y compatibles en tiempo real y, a continuación, crear las aplicaciones con respuesta en tiempo real y de alto nivel a su vez.
Creación de una aplicación de alto nivel
Para crear una aplicación de alto nivel, comience con la plantilla HLCore Blank de la extensión de Azure Sphere de Visual Studio Code y ajuste la configuración al proyecto siguiendo estos pasos:
Inicie Visual Studio Code. Seleccione Ver>paleta de comandos y escriba Azure Sphere: Generar nuevo proyecto.
Elija HLCore En blanco en el menú Plantillas.
Después, Visual Studio Code muestra una ventana de Explorador de archivos. Vaya a la carpeta donde desea colocar la aplicación en blanco (o seleccione Nueva carpeta y cree un nuevo directorio de proyecto de asociado de nivel superior) y especifique un nombre para el proyecto, por ejemplo, NewHLApp. Visual Studio Code crea la carpeta NewHLApp en la ubicación seleccionada y genera los archivos de compilación para la aplicación en blanco. Deberían aparecer mensajes de CMake.
Abra el archivo CMakeLists.txt y especifique la carpeta que contiene definiciones para el hardware que usa. De forma predeterminada, la aplicación HLCore Blank no contiene definiciones de hardware. Puede encontrar definiciones de hardware de ejemplo en el repositorio ejemplos de Azure Sphere o crear una como se describe en Definiciones de hardware.
A continuación se muestra cómo agregar las definiciones de hardware de ejemplo para el Kit de desarrollo mt3620 de Seeed Azure Sphere:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Esta línea debe insertarse antes de que el comando final comience
azsphere_target_add_image_package
.
También puede crear una nueva aplicación de alto nivel desde cualquiera de los ejemplos de Azure Sphere de alto nivel:
Clone el repositorio de ejemplos si aún no lo ha hecho. Copie una de las carpetas de aplicaciones de alto nivel y cámbiela por el proyecto.
En el archivo CMakeLists.txt, cambie el nombre del proyecto al nombre de la nueva carpeta. Por ejemplo:
PROJECT(NewHLApp C)
Creación de una RTApp
Para crear una nueva aplicación en tiempo real, comience con la plantilla RTCore Blank desde la extensión de Azure Sphere de Visual Studio Code y ajuste la configuración al proyecto siguiendo estos pasos:
Inicie Visual Studio Code. Seleccione Ver>paleta de comandos y escriba Azure Sphere: Generar nuevo proyecto.
Elija RTCore En blanco en el menú Plantillas.
Después, Visual Studio Code muestra una ventana de Explorador de archivos. Vaya a la carpeta que contiene la carpeta de aplicación de alto nivel y especifique un nombre para el proyecto, por ejemplo, NewRTApp. Visual Studio Code crea la carpeta NewRTApp en la ubicación seleccionada y genera los archivos de compilación para la aplicación en blanco. Deberían aparecer mensajes de CMake.
También puede crear una nueva aplicación con respuesta en tiempo real a partir de cualquiera de los ejemplos de Azure Sphere compatibles en tiempo real:
Clone el repositorio de ejemplos si aún no lo ha hecho. Copie una de las carpetas de aplicaciones de alto nivel y cámbiela por el proyecto.
En el archivo CMakeLists.txt, cambie el nombre del proyecto al nombre de la nueva carpeta. Por ejemplo:
PROJECT(NewRTApp C)
Configuración del área de trabajo para el desarrollo de aplicaciones asociadas
Para unir eficazmente la aplicación de alto nivel y la aplicación con respuesta en tiempo real para el desarrollo, combine las dos aplicaciones en un único área de trabajo raíz múltiple como se indica a continuación:
Abra la carpeta de aplicaciones de alto nivel en Visual Studio Code.
Seleccione Archivo>Agregar carpeta al área de trabajo y, a continuación, seleccione la carpeta de la aplicación compatible en tiempo real.
Seleccione Guardar área>de trabajo como... y, a continuación, guarde el archivo en la carpeta que contiene las aplicaciones compatibles en tiempo real y de alto nivel.
Abra el archivo del área de trabajo en un editor de texto y agregue la siguiente información de inicio inmediatamente después de la
"settings"
línea:
"launch": {
"configurations": [{
"name": "Launch Azure Sphere Apps (All Cores)",
"type": "azurespheredbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"environment": [],
"externalConsole": true,
"partnerComponents": [],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}],
"compounds": []
}
Consulte la documentación de Visual Studio Code para obtener más información sobre las áreas de trabajo raíz múltiples.
Creación de una aplicación de alto nivel
Para crear una nueva aplicación de alto nivel, comience con la plantilla HLCore Blank de la extensión de Azure Sphere de Visual Studio y ajuste la configuración al proyecto siguiendo estos pasos:
Inicia Visual Studio y selecciona Crear un proyecto.
Escriba
Azure Sphere
el cuadro de búsqueda con la etiqueta Buscar plantillas. Seleccione HLCore de Azure Sphere en blanco en la lista devuelta y, a continuación, seleccione Siguiente.Especifique un nombre de proyecto (por ejemplo, NewHLApp), una ubicación de archivo de proyecto y un nombre de solución (que puede ser el mismo que el nombre del proyecto) y, a continuación, seleccione Crear. Visual Studio crea la carpeta NewHLpp en la ubicación seleccionada y genera los archivos de compilación para la aplicación en blanco. Deberían aparecer mensajes de CMake.
Abra el archivo CMakeLists.txt y especifique la carpeta que contiene definiciones para el hardware que usa. De forma predeterminada, la aplicación HL Blank no contiene definiciones de hardware. Puede encontrar definiciones de hardware de ejemplo en el repositorio ejemplos de Azure Sphere o crear una como se describe en Definiciones de hardware.
A continuación se muestra cómo agregar las definiciones de hardware de ejemplo para el Kit de desarrollo mt3620 de Seeed Azure Sphere:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Esta línea debe insertarse antes de que el comando final comience
azsphere_target_add_image_package
.
También puede crear una nueva aplicación de alto nivel desde cualquiera de los ejemplos de Azure Sphere de alto nivel:
Clone el repositorio de ejemplos si aún no lo ha hecho. Copie una de las carpetas de aplicaciones de alto nivel y cámbiela por el proyecto.
En el archivo CMakeLists.txt, cambie el nombre del proyecto al nombre de la nueva carpeta. Por ejemplo:
PROJECT(NewHLApp C)
Creación de una RTApp
Para crear una nueva aplicación con respuesta en tiempo real, comience con la plantilla RTCore Blank de la extensión de Azure Sphere de Visual Studio y ajuste la configuración al proyecto siguiendo estos pasos:
Inicia Visual Studio y selecciona Crear un proyecto.
Escriba
Azure Sphere
el cuadro de búsqueda con la etiqueta Buscar plantillas. Seleccione Azure Sphere RTCore En blanco en la lista devuelta y, a continuación, seleccione Siguiente.Especifique un nombre de proyecto (por ejemplo, NewRTApp), una ubicación de archivo de proyecto y el nombre de la solución que usó para la aplicación de alto nivel y, a continuación, seleccione Crear. Visual Studio crea la carpeta NewRTApp en la ubicación seleccionada y genera los archivos de compilación para la aplicación en blanco. Deberían aparecer mensajes de CMake.
También puede crear una nueva aplicación con respuesta en tiempo real a partir de cualquiera de los ejemplos de Azure Sphere compatibles en tiempo real:
Clone el repositorio de ejemplos si aún no lo ha hecho. Copie una de las carpetas de aplicaciones compatibles en tiempo real y cámbiela por el proyecto.
En el archivo CMakeLists.txt, cambie el nombre del proyecto al nombre de la nueva carpeta. Por ejemplo:
PROJECT(NewRTApp C)
Creación de un archivo de inicio de Visual Studio de nivel superior
Para trabajar con aplicaciones asociadas simultáneamente, quiere permitir que Visual Studio se depure en varios núcleos. Para habilitarlo, cree un archivo launch.vs.json en la carpeta de nivel superior que contiene las dos carpetas de aplicaciones asociadas. Este archivo debe tener contenido similar al siguiente:
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "azurespheredbg",
"name": "Azure Sphere Apps (All Cores)",
"project": "PartnerAppsHL/CMakeLists.txt",
"DebugBuildStepBuildAll": "true",
"workingDirectory": "${workspaceRoot}",
"applicationPath": "${debugInfo.target}",
"imagePath": "${debugInfo.targetImage}",
"targetCore": "AnyCore",
"partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
}
]
}
La "project"
línea debe contener la ruta de acceso relativa al archivo CMakeLists.txt de la aplicación de alto nivel y la "partnerComponents"
línea debe tener los identificadores de componente de las dos aplicaciones asociadas.
Una vez que haya creado este archivo de launch.vs.json de nivel superior, puede abrir Visual Studio en la carpeta de nivel superior y verá la opción Aplicaciones de Azure Sphere (todos los núcleos) en el menú Seleccionar elemento de inicio.
Creación de un archivo de CMakeWorkspaceSettings.json
Si usa Visual Studio 2022, versión 17.1 o posterior, y tiene un proyecto con varias raíces, como el ejemplo IntercoreComms, deberá agregar un archivo de CMakeWorkspaceSettings.json a la carpeta de nivel superior del proyecto. El archivo tiene dos entradas, una para especificar que la compilación de CMake está habilitada y otra que contiene las rutas de acceso a las varias raíces. Por ejemplo, para el ejemplo IntercoreComms, el CMakeWorkspaceSettings.json tiene el siguiente contenido:
{
"enableCMake": true,
"sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}
Las rutas de acceso se especifican en relación con la carpeta que contiene el archivo CMakeWorkspaceSettings.json.
Creación de una aplicación de alto nivel
Para crear una nueva aplicación de alto nivel, comience con cualquiera de los ejemplos de Azure Sphere de alto nivel:
Clone el repositorio de ejemplos si aún no lo ha hecho. Copie una de las carpetas de aplicaciones de alto nivel y cámbiela por el proyecto.
En el archivo CMakeLists.txt, cambie el nombre del proyecto al nombre de la nueva carpeta. Por ejemplo:
PROJECT(NewHLApp C)
Creación de una RTApp
La manera más fácil de crear una nueva aplicación con respuesta en tiempo real es comenzar con el ejemplo HelloWorld_RTApp_MT3620_BareMetal y ajustar la configuración al proyecto mediante estos pasos:
Clone el repositorio de ejemplos si aún no lo ha hecho. Copie la carpeta HelloWorld_RTApp_MT3620_BareMetal y cámbiele el nombre para su proyecto.
En el archivo CMakeLists.txt, cambie el nombre del proyecto al nombre de la nueva carpeta. Por ejemplo:
PROJECT(NewRTApp C)
Estructura básica de archivos de aplicaciones de Azure Sphere
Independientemente de cómo cree la aplicación, todas las aplicaciones de Azure Sphere comparten los siguientes archivos principales:
- Código fuente de la aplicación en uno o varios archivos. Actualmente, solo se admite el código fuente del lenguaje C.
- Archivos de compilación de CMake. CMakeLists.txt es obligatorio. CMake, junto con la utilidad de compilación ligera ninja, se usa para controlar el proceso de compilación de aplicaciones de Azure Sphere.
- Un archivo app-manifest que describe las funcionalidades disponibles para la aplicación.
Las aplicaciones de alto nivel normalmente tendrán al menos otros tres archivos:
- Un archivo applibs-versions.h para especificar los niveles de versión de varias API de Azure Sphere
- Dos archivos de definición de hardware (una versión editable en formato JSON y un archivo de inclusión de lenguaje C generado a partir de él) que proporcionan una manera cómoda de hacer referencia a los componentes de hardware en el código. Con un conjunto coherente de archivos de definición de hardware, puede escribir código fuente independiente del hardware y, a continuación, crear imágenes de aplicación para hardware específico simplemente redisfiar el archivo de definición de hardware adecuado en el archivo de CMakeLists.txt.
Las aplicaciones compatibles en tiempo real agregan al menos otro archivo: un archivo linker.ld para especificar exactamente dónde se cargarán varios componentes de la aplicación en el núcleo en tiempo real.
Escritura del código de aplicación de alto nivel
- Escriba el código de aplicación de alto nivel mediante los ejemplos de aplicaciones de alto nivel de Azure Sphere como guías. En los temas siguientes se describen escenarios de implementación específicos:
- Uso de periféricos en una aplicación de alto nivel
- Conexión a servicios web
- Uso de wolfSSL para conexiones TLS
- Administración de certificados
- Descripción del uso de la memoria
- Actualizaciones diferidas de dispositivos
- Administrar la hora y usar el reloj en tiempo real
- Uso del almacenamiento de dispositivos
- Comunicación con una aplicación con respuesta en tiempo real
- Administrar el estado de apagado
- Establecimiento de perfiles de energía
- Realización de la detección de servicios
- En el archivo CMakeLists.txt:
- Especificación de la revisión de las herramientas del SDK de Azure Sphere
- Especificación de un conjunto de API de destino
- Especificar el hardware de destino
- En el archivo app_manifest.json:
- Establezca
Name
en el nombre del proyecto. - Agregue cualquier funcionalidad específica de la aplicación que requiera el código, como las conexiones o los recursos de hardware. Si la aplicación de alto nivel se comunica con una RTApp, agregue el identificador de componente de la aplicación de alto nivel a la
AllowedApplicationConnections
funcionalidad.
- Establezca
Si desea implementar la RTApp junto con una aplicación asociada de alto nivel, agregue el identificador de componente del asociado al campo partnerComponents de la sección configurations del archivo launch.vs.json (Visual Studio) o .vscode/launch.vs.json (Visual Studio Code):
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Escribir el código de RTApp
- Escriba el código rtApp mediante los ejemplos de RTApp de Azure Sphere como guías. En los temas siguientes se describen escenarios de implementación específicos:
- En el archivo app_manifest.json:
- Establezca
Name
en el nombre del proyecto. - Establezca
ApplicationType
en"RealTimeCapable"
. - Agregue cualquier funcionalidad específica de la aplicación que requiera el código, como las conexiones o los recursos de hardware. Si la RTApp se comunica con una aplicación de alto nivel, agregue el identificador del componente de la aplicación de alto nivel para la función
AllowedApplicationConnections
.
- Establezca
Si desea implementar la RTApp junto con una aplicación asociada de alto nivel, agregue el identificador de componente del asociado al campo partnerComponents de la sección configurations del archivo launch.vs.json (Visual Studio) o .vscode/launch.vs.json (Visual Studio Code):
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]