Optimisation extrême du démarrage d’un Pi
Motivation
- Le projet SolarCamPi consiste à construire une caméra WiFi solaire hors réseau.
- Il utilise un Raspberry Pi Zero 2 W pour démarrer sous Linux, prendre une photo, établir une connexion WiFi, puis s’éteindre, en répétant ce cycle.
- Sur un appareil alimenté par énergie solaire, l’énergie est une ressource précieuse ; réduire le temps de démarrage est donc essentiel pour minimiser la consommation.
Configuration matérielle
- Lorsqu’on optimise un processus de démarrage embarqué, un temps de cycle court est important.
- Plusieurs outils utiles sont disponibles :
- Nordic Power Profiler Kit II
- USB-SD-Mux
- convertisseur USB-UART
Configuration de mesure / test
- Sur l’image Debian 12 (bookworm) arm64 Lite, le fichier
/boot/firmware/cmdline.txt est modifié pour inclure init=/init.sh.
- Le script
init.sh bascule GPIO4 puis reprend le démarrage normal.
Réduction du courant
- Désactivation du HDMI : la consommation de courant passe de 136.7mA à 122.6mA.
- Désactivation de la LED d’activité : économie de 2mA.
- Désactivation de la LED de la caméra : réduction des reflets et économie de courant.
- Ajustement du mode turbo : la désactivation du mode turbo permet une consommation de 1.58As.
Réduction du temps
- Désactivation du probing HDMI pendant le démarrage : gain de temps en forçant les informations EDID.
- Désactivation du probing HAT, PoE et LCD : réduction du temps d’attente des réponses I2C.
- Désactivation du probing caméra et affichage : chargement manuel du capteur IMX477.
- Désactivation de l’initramfs : réduction du temps de démarrage de 5.38s à 4.47s.
Chargement du noyau
- Le chargement du noyau est l’une des tâches les plus lentes.
- Overclocking du cœur processeur GPU : réduction de 20 % du temps de chargement du noyau.
- Migration du système vers une distribution Buildroot personnalisée : réduction de la taille du noyau et suppression des fonctionnalités inutiles.
Résultat final
- Démarrage possible d’un programme Linux en espace utilisateur en moins de 3.5 secondes.
- Consommation énergétique totale : 0.364 As * 5.0 V = 1.82 Ws.
- Réduction par 5 de la consommation énergétique par rapport à Debian de base.
Résumé de GN⁺
- Cet article explique comment optimiser le temps de démarrage d’un Raspberry Pi afin de réduire la consommation électrique.
- C’est particulièrement utile dans des environnements à puissance limitée, comme les appareils alimentés par énergie solaire.
- Parmi les projets aux fonctionnalités proches, on peut citer OpenWRT et Tiny Core Linux.
- L’article présente plusieurs méthodes pour réduire le temps de démarrage, ce qui en fait une lecture utile pour les personnes intéressées par l’optimisation des systèmes embarqués.
1 commentaires
Commentaires Hacker News
La consommation électrique de la gamme rpi est un point faible. On espère que le nouveau pico 2 améliorera cela.
Je me demande pourquoi le kernel personnalisé est arrivé si tard.
Je me demande si désactiver le turbo CPU est un mauvais choix pour réduire la consommation électrique.
Je me demande s’il est possible d’utiliser d’autres cœurs, et si Linux est nécessaire pour prendre des photos et les envoyer vers le cloud.
Deux bons articles recommandés pour réduire le temps de démarrage du Pi.
Si vous aimez l’écosystème Rasp Pi, le Pi Pico W vaut le coup d’être essayé.
Le temps de démarrage des distributions Linux est généralement lent.
Il vaut mieux conserver l’état de démarrage et utiliser un microcontrôleur basse consommation.
Circle semblait pouvoir démarrer plus vite que le kernel, mais il ne prend pas en charge les caméras MIPI.
J’avais essayé de construire une caméra de piste intelligente avec un Pi.