4 puntos por GN⁺ 2024-09-02 | 1 comentarios | Compartir por WhatsApp

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

 
GN⁺ 2024-09-02
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

    • Se construyó una cámara usando Google Coral mini, pero el soporte para la cámara HQ era insuficiente
    • El ecosistema de rpi es más maduro y la disponibilidad futura también parece más confiable
    • La siguiente versión de la cámara se construyó con rpi y se usó una batería más grande
    • Se está buscando una forma de dar salida al Coral mini y la cámara que sobraron
  • Hay curiosidad por saber por qué el kernel personalizado salió tarde

    • Si se quiere optimizar, parece mejor usar LFS o una distribución basada en código fuente
    • Hay curiosidad por saber si sería posible optimizar EFI/BIOS
    • En un escritorio con Arch Linux el tiempo de arranque es bastante largo
  • Hay dudas sobre si desactivar el turbo de la CPU es una mala decisión para reducir el consumo de energía

    • Cuando aumenta la frecuencia de reloj, el consumo de energía crece al cuadrado
    • Habría que medir la diferencia de consumo para saber si el clock boost realmente aporta ventajas
    • Sería bueno que la CPU de la Pi ofreciera información detallada sobre 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

    • Hay interés en cómo completar la tarea con el presupuesto mínimo posible
    • Fue una lectura interesante
  • 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

    • Es todavía más lento en hardware débil
    • Se tuvo un problema parecido incluso en un SBC MQ-Pro
    • También se nota en laptops (excepto Macbooks)
  • Conviene mantener el estado de arranque y usar un microcontrolador de bajo consumo

    • 105 mA no es un consumo de energía adecuado
  • 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

    • El tiempo de inicio es importante
    • Reducir el consumo de energía es muy positivo