Optimización extrema del arranque en Pi
Motivación
- El proyecto SolarCamPi consiste en construir una cámara WiFi solar off-grid.
- Usa una Raspberry Pi Zero 2 W para arrancar con Linux, tomar fotos, establecer la conexión WiFi y luego apagarse, repitiendo este ciclo.
- En un dispositivo solar, la energía es un recurso valioso, por lo que reducir el tiempo de arranque es clave para minimizar el consumo.
Configuración de hardware
- Al optimizar el proceso de arranque embebido, un tiempo de ciclo corto es importante.
- Hay varias herramientas útiles:
- Nordic Power Profiler Kit II
- USB-SD-Mux
- Convertidor USB-UART
Configuración de medición / pruebas
- En la imagen Debian 12 (bookworm) arm64 Lite, se modifica el archivo /boot/firmware/cmdline.txt para incluir
init=/init.sh.
- El script
init.sh conmuta GPIO4 y luego reanuda el arranque normal.
Reducción de corriente
- Desactivar HDMI: reduce el consumo de corriente de 136.7mA a 122.6mA.
- Desactivar el LED de actividad: ahorra 2mA.
- Desactivar el LED de la cámara: evita reflejos y ahorra corriente.
- Ajuste del modo turbo: al desactivar el modo turbo se usan 1.58As.
Reducción de tiempo
- Desactivar el sondeo de HDMI durante el arranque: fijar la información EDID manualmente ahorra tiempo.
- Desactivar el sondeo de HAT, PoE y LCD: reduce el tiempo de espera por respuestas I2C.
- Desactivar el sondeo de cámara y pantalla: el sensor IMX477 se carga manualmente.
- Desactivar
initramfs: reduce el tiempo de arranque de 5.38s a 4.47s.
Carga del kernel
- La carga del kernel es una de las tareas más lentas.
- Overclock del núcleo del procesador GPU: reduce en 20% el tiempo de carga del kernel.
- Migración del sistema a una distribución Buildroot personalizada: reduce el tamaño del kernel y elimina funciones innecesarias.
Resultado final
- Es posible arrancar un programa de espacio de usuario de Linux en menos de 3.5 segundos.
- Consumo total de energía: 0.364 As * 5.0 V = 1.82 Ws.
- Reduce 5 veces el consumo de energía frente a Debian base.
Resumen de GN⁺
- Este artículo explica cómo optimizar el tiempo de arranque de Raspberry Pi para reducir el consumo de energía.
- Es muy útil en entornos con energía limitada, como dispositivos alimentados por energía solar.
- Proyectos con funciones similares incluyen OpenWRT y Tiny Core Linux.
- Presenta varios métodos para reducir el tiempo de arranque, por lo que resulta útil para quienes se interesan en la optimización de sistemas embebidos.
1 comentarios
Comentarios de Hacker News
Los problemas de energía de la línea rpi son una debilidad. Se espera que el nuevo pico 2 mejore esto
Hay curiosidad por saber por qué el kernel personalizado salió tarde
Hay dudas sobre si desactivar el turbo de la CPU es una mala decisión para reducir el consumo de energía
Hay curiosidad por saber si se pueden usar otros núcleos y si realmente se necesita Linux para tomar fotos y enviarlas a la nube
Se recomiendan dos buenos artículos para reducir el tiempo de arranque de la Pi
Si te gusta el ecosistema de Rasp Pi, vale la pena probar Pi Pico W
El tiempo de arranque de las distribuciones Linux suele ser lento
Conviene mantener el estado de arranque y usar un microcontrolador de bajo consumo
Parecía que Circle podría arrancar más rápido que el kernel, pero no soporta cámaras MIPI
Se intentó crear una cámara trampa inteligente usando Pi