4 points par GN⁺ 2024-09-02 | 1 commentaires | Partager sur WhatsApp

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

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

    • J’ai fabriqué une caméra avec un Google Coral mini, mais la prise en charge de la caméra HQ était insuffisante.
    • L’écosystème rpi est plus mature et la disponibilité future semble plus fiable.
    • J’ai construit la version suivante de la caméra avec un rpi et utilisé une batterie plus grande.
    • Je cherche un moyen d’écouler le Coral mini et la caméra qu’il me reste.
  • Je me demande pourquoi le kernel personnalisé est arrivé si tard.

    • Si l’on veut optimiser, il semble préférable d’utiliser LFS ou une distribution basée sur les sources.
    • Je me demande s’il est possible d’optimiser l’EFI/BIOS.
    • Le temps de démarrage est très long sur un desktop Arch Linux.
  • Je me demande si désactiver le turbo CPU est un mauvais choix pour réduire la consommation électrique.

    • Quand la fréquence d’horloge augmente, la consommation électrique augmente de manière quadratique.
    • Il faut mesurer l’écart de consommation pour savoir si le boost d’horloge apporte un vrai avantage.
    • Ce serait bien que le CPU du Pi fournisse des informations détaillées sur sa 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.

    • Je me demande comment accomplir cela avec un budget minimal.
    • C’était une lecture intéressante.
  • 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.

    • C’est encore plus lent sur du matériel peu puissant.
    • J’ai eu un problème similaire sur un SBC MQ-Pro.
    • Cela se ressent aussi sur les laptops (sauf les Macbooks).
  • Il vaut mieux conserver l’état de démarrage et utiliser un microcontrôleur basse consommation.

    • 105 mA n’est pas une consommation appropriée.
  • 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.

    • Le temps de démarrage est important.
    • Réduire la consommation électrique est très bénéfique.