Crear una aplicación en tiempo real

Puede usar Visual Studio, Visual Studio Code o la línea de comandos (CLI) para desarrollar y depurar aplicaciones compatibles con el tiempo real (RTApps) prácticamente del mismo modo que las aplicaciones de alto nivel.

Requisitos previos

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.

  1. Inicie sesión en Azure Sphere si aún no lo ha hecho:

    az login
    
  2. 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.

  3. Escriba el siguiente comando:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. 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.

  1. Inicie sesión en Azure si aún no lo ha hecho:

    az login
    
  2. 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.

  3. Escriba el siguiente comando:

    az sphere device enable-development --enable-rt-core-debugging
    
  4. 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 la RTApp con Visual Studio Code

Para crear una RTApp:

  1. En Visual Studio Code, abra la carpeta HelloWorld_RTApp_MT3620_BareMetal del clon del repositorio de muestras de Azure Sphere. Si se te pide que selecciones un kit, elige "No usar un kit".

  2. Presione F5 para iniciar el depurador. Si el proyecto no se ha creado anteriormente, o si los archivos han cambiado y recompilar es necesario, Visual Studio Code creará el proyecto antes de que se inicie la depuración.

  3. El emulador de terminal conectado debe mostrar la salida de la aplicación. El programa envía las siguientes palabras a intervalos de un segundo:

    Tick

    Tock

    Nota

    Visual Studio Code proporciona IntelliSense, pero no se actualizará automáticamente al modificar CMakeLists.txt. Debe ejecutar el comando CMake: Eliminar caché y Volver a configurar para actualizar Intellisense. La vista de destinos CMake se encuentra en la vista de extensión CMake de la barra izquierda.

Crear la RTApp con Visual Studio

Para crear una RTApp:

  1. En Visual Studio, seleccione Archivo>CMake y vaya a la carpeta que contiene el ejemplo.

  2. Si la generación de CMake no se inicia automáticamente, seleccione el archivo de CMakeLists.txt.

  3. En Visual Studio, Ver>salida>Mostrar salida de: CMake salida debe mostrar los mensajes CMake generation started. y CMake generation finished.

  4. En el menú CMake (si está presente), seleccione Crear todo. Si el menú no está presente, abre Explorador de soluciones, haz clic con el botón derecho en el archivo CMakeLists.txt y selecciona Compilar. La ubicación de salida de la aplicación Azure Sphere aparece en la ventana Salida .

  5. Presione F5 para implementar la aplicación.

  6. El emulador de terminal conectado debe mostrar la salida de la aplicación. El programa envía las siguientes palabras a intervalos de un segundo:

    Tick

    Tock

    Nota

    • Visual Studio proporciona Intellisense para Azure Sphere RTApps mediante la recopilación de datos de su caché de CMake. Visual Studio actualiza la memoria caché siempre que cambia el archivo CMakeLists.txt o CMakeSettings.json de la RTApp.

    • De forma predeterminada, Visual Studio usa la vista de carpetas. Si prefiere una vista lógica del proyecto CMake, puede cambiar a la vista CMake Targets. En Explorador de soluciones, selecciona el icono de alternancia de carpeta:

      Alternar entre las vistas Solución y Carpeta

      En el menú desplegable, seleccione Vista CMake Targets.

    • Es posible que la aplicación empiece a ejecutarse antes de que OpenOCD realice una conexión. Como resultado, es posible que se falten los puntos de interrupción establecidos al principio del código. Una solución alternativa sencilla para esto es retrasar el inicio de la aplicación hasta que Se conecte OpenOCD.

      1. Inserta el siguiente código al principio del punto de entrada de la aplicación RTCoreMain. Esto hará que la aplicación entre y permanezca en un while bucle hasta que la variable f se establezca en true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Presione F5 para iniciar la aplicación con depuración y, a continuación, inicie la ejecución.

      3. En el panel de depuración Locales , cambie el valor de f cero a uno.

      4. Sigue el código de forma normal.

Crear RTApp con la CLI

Las instrucciones siguientes asumen que está usando CMake. Si prefiere crear en la línea de comandos sin usar CMake, puede determinar las opciones adecuadas del compilador y del vinculador consultando los archivos AzureSphereToolchainBase.cmake y AzureSphereRTCoreToolchain.cmake, que se instalan con el SDK de Azure Sphere.

  1. 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.

  2. 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 helloworld:

    Símbolo del sistema de Windows

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. 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ía cmake --build out/ARM-Debug.

  4. Elimine todas las aplicaciones que ya estén implementadas en el dispositivo:

    az sphere device sideload delete
    
  5. Implementa el paquete de imagen que Ninja creó:

    az sphere device sideload deploy --image-package <package-name>
    
  6. 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"
      },
    ...
    
  7. Determina en qué núcleo se ejecuta la aplicación.

    De forma predeterminada, la RTApp se implementa en el primer núcleo disponible en tiempo real en el dispositivo; actualmente no se puede especificar un núcleo determinado. Para averiguar en qué núcleo se está ejecutando la aplicación, utilice el comando az sphere device app para detener y, a continuación, reiniciar la aplicación. Proporcione el id. del componente para la aplicación en los comandos. Por ejemplo:

    az sphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    az sphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. El emulador de terminal conectado debe mostrar la salida de la aplicación. El programa envía las siguientes palabras a intervalos de un segundo:

    Tick

    Tock

Salida del registro de una RTApp

Cada núcleo en tiempo real del MT3620 tiene un UART dedicado destinado a la salida de registro. Los núcleos en tiempo real también pueden acceder a los ISU UART. El MT3620 RDB solo expone el pin TX, que se puede utilizar para mostrar la salida del registro de la aplicación. Es posible que otro hardware exponga esto de forma diferente o que no lo exponga en absoluto. Para ver la salida del registro, configure el hardware para mostrar esta salida como se describe en el inicio rápido. El UART dedicado no requiere el requisito de manifiesto de la Uart aplicación; sin embargo, no se debe usar para otros fines que no sean la salida de registro para una RTApp.

Desarrollar con aplicaciones de asociados

Al cargar una aplicación en el dispositivo Azure Sphere, las herramientas de implementación de Azure Sphere eliminan de forma predeterminada todas las aplicaciones existentes. Para evitar que esto ocurra cuando desarrolla aplicaciones que se comunican entre sí, debe marcar las aplicaciones como socios. Al implementar una de las aplicaciones, sus partners no se eliminarán. Consulte Marcar aplicaciones como partners para obtener más información.

Solución de problemas

Si encuentra problemas, consulte Solución de problemas de aplicaciones compatibles con tiempo real.

Recursos adicionales

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 asociados de Azure Sphere: