Compartir a través de


Inicialización y finalización

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

En el inicio, todas las aplicaciones de Azure Sphere deben realizar algunas tareas de inicialización:

  • Registre un controlador SIGTERM para las solicitudes de finalización. El sistema operativo del dispositivo de Azure Sphere envía la señal de terminación SIGTERM para indicar que la aplicación debe salir, con más frecuencia cuando una actualización está pendiente, pero también en respuesta a una solicitud de apagado del dispositivo. Como parte de su código de inicialización, la aplicación debe registrar un controlador para dichas solicitudes. Por ejemplo:

      #include <signal.h>
      ...
      // Register a SIGTERM handler for termination requests
      struct sigaction action;
      memset(&action, 0, sizeof(struct sigaction));
      action.sa_handler = TerminationHandler;
      sigaction(SIGTERM, &action, NULL);
    

    En el controlador de finalización, la aplicación puede realizar cualquier tarea de apagado que requiera. Los controladores de terminación deben ser seguros para señales asincrónicas POSIX. En concreto, no deben contener llamadas a Log_Debug(). Los programas de ejemplo salen ante un error, así como al recibir la señal de finalización. Por lo tanto, estos programas simplemente establecen un valor booleano en el controlador de finalización y, luego, realizan tareas de limpieza y cierre después de salir del bucle principal.

  • Inicialice los controladores para periféricos GPIO.

  • Si la aplicación usa Azure IoT Hub, conéctese con el cliente de IoT y registre las funciones de devolución de llamada para las características de IoT, como mensajes de la nube, estado del dispositivo gemelo y llamadas de método directo.

Al finalizar, la aplicación debe cerrar los periféricos, destruir los controladores y liberar la memoria asignada. La aplicación tiene solo dos segundos para salir tras la recepción de la señal SIGTERM; si la aplicación no ha salido de él, el sistema operativo de Azure Sphere envía una señal SIGKILL que finaliza inmediatamente la aplicación. Siempre se debe evitar la señal SIGKILL. Si la aplicación realiza de forma rutinaria acciones que pueden tardar más de dos segundos en completarse, considere la posibilidad de agregar un bucle de actualización diferido a la aplicación. Las aplicaciones que usan la característica Powerdown deben realizar cualquier limpieza necesaria antes de llamar a las API de apagado.