14.2. Distribuir la aplicación¶
Un script que funciona en el banco de pruebas y un producto comercializado no son lo mismo. Una cámara que se despliega en el campo tiene que funcionar por sí sola durante todo el tiempo que el producto esté instalado – meses, años – sin operador en la consola, sin IDE conectado y sin un experto en Python cerca cuando algo deja de funcionar. Las páginas de esta sección cubren qué cambia en la aplicación cuando el objetivo es un producto comercializado en lugar de una demostración de escritorio.
14.2.1. Una lista de comprobación previa al despliegue¶
Antes de que una cámara salga del banco de pruebas, esta es la breve lista de cosas que deberían ser ciertas:
El código de la aplicación está en la compilación, no en el sistema de archivos. Los módulos congelados y una imagen ROMFS cubren el código y los recursos. El almacenamiento en la memoria flash y en la tarjeta SD es solo para el estado en tiempo de ejecución y los archivos de registro. El usuario final no puede editar, eliminar ni reemplazar la aplicación sin reflashear.
Un watchdog se ejecuta de forma continua.
machine.WDTse inicia al principio demain.pyy se alimenta una vez por cada iteración del bucle principal. Cualquier bloqueo más largo que el tiempo de espera configurado provoca un reinicio por hardware y la cámara vuelve a arrancar.La aplicación registra en un destino recuperable. La biblioteca
loggingescribe registros con un nivel, una marca de tiempo y un destino que se puede recuperar del campo desde la tarjeta SD.print()es solo para el momento del desarrollo – su destino predeterminado es la salida estándar USB, que ningún producto comercializado lee.La memoria flash y la SD se tratan como susceptibles de fallar. La memoria flash interna contiene pequeños registros de tamaño fijo (configuración, última calibración conocida); la SD contiene archivos voluminosos de tamaño variable (capturas de imagen, archivos de registro); las operaciones sobre cualquiera de ellas se envuelven en manejo de errores, y la aplicación tiene un comportamiento de reserva definido cuando alguna no está disponible.
14.2.2. Integrar la aplicación en la compilación¶
Dos mecanismos complementarios colocan archivos en la imagen del firmware: