4 pontos por GN⁺ 2024-09-02 | 1 comentários | Compartilhar no WhatsApp

Otimização extrema do boot do Pi

Motivação

  • O projeto SolarCamPi tem como objetivo construir uma câmera WiFi solar off-grid.
  • Ele usa um Raspberry Pi Zero 2 W para inicializar no Linux, tirar fotos, configurar a conexão WiFi e depois desligar, repetindo esse ciclo.
  • Em um dispositivo solar, energia é um recurso precioso, então reduzir o tempo de boot é importante para minimizar o consumo.

Configuração de hardware

  • Ao otimizar o processo de boot embarcado, um tempo de ciclo curto é importante.
  • Há várias ferramentas úteis:
    • Nordic Power Profiler Kit II
    • USB-SD-Mux
    • Conversor USB-UART

Configuração de medição / teste

  • Na imagem Debian 12 (bookworm) arm64 Lite, o arquivo /boot/firmware/cmdline.txt foi modificado para incluir init=/init.sh.
  • O script init.sh alterna o GPIO4 e retoma o boot normal.

Redução de corrente

  • Desativar o HDMI: reduz o consumo de corrente de 136.7mA para 122.6mA.
  • Desativar o LED de atividade: economiza 2mA.
  • Desativar o LED da câmera: evita reflexos e economiza corrente.
  • Ajuste do modo turbo: desativar o modo turbo resulta em uso de 1.58As.

Redução de tempo

  • Desativar a sondagem de HDMI durante o boot: fixar as informações EDID manualmente economiza tempo.
  • Desativar a sondagem de HAT, PoE e LCD: reduz o tempo de espera por respostas I2C.
  • Desativar a sondagem de câmera e display: carrega manualmente o sensor IMX477.
  • Desativar o initramfs: reduz o tempo de boot de 5.38s para 4.47s.

Carregamento do kernel

  • Carregar o kernel é uma das tarefas mais lentas.
  • Overclock no núcleo do processador GPU: reduz o tempo de carregamento do kernel em 20%.
  • Migração do sistema para uma distribuição Buildroot personalizada: reduz o tamanho do kernel e remove recursos desnecessários.

Resultado final

  • É possível inicializar um programa de espaço de usuário Linux em menos de 3.5 segundos.
  • Consumo total de energia: 0.364 As * 5.0 V = 1.82 Ws.
  • Redução de 5 vezes no consumo de energia em comparação com o Debian padrão.

Resumo do GN⁺

  • Este artigo aborda como otimizar o tempo de boot do Raspberry Pi para reduzir o consumo de energia.
  • É muito útil em ambientes com energia limitada, como dispositivos alimentados por energia solar.
  • Projetos com funcionalidades semelhantes incluem OpenWRT e Tiny Core Linux.
  • Apresenta várias formas de reduzir o tempo de boot, sendo útil para quem se interessa por otimização de sistemas embarcados.

1 comentários

 
GN⁺ 2024-09-02
Comentários no Hacker News
  • A questão de energia da linha rpi é um ponto fraco. Há expectativa de que o novo pico 2 melhore isso

    • Usei um Google Coral mini para fazer uma câmera, mas o suporte à câmera HQ era insuficiente
    • O ecossistema rpi é mais maduro e a disponibilidade futura também parece mais confiável
    • Fiz a próxima versão da câmera com rpi e usei uma bateria maior
    • Estou procurando uma forma de aproveitar o Coral mini e a câmera que sobraram
  • Fiquei curioso sobre o motivo de o kernel customizado ter saído tão tarde

    • Se a intenção é otimizar, parece que seria melhor usar LFS ou uma distribuição baseada em código-fonte
    • Fico me perguntando se daria para otimizar EFI/BIOS também
    • O tempo de boot no desktop com Arch Linux é bem longo
  • Fico em dúvida se desativar o turbo da CPU é uma má escolha para reduzir o consumo de energia

    • Quando a frequência de clock aumenta, o consumo de energia cresce ao quadrado
    • Só medindo a diferença de consumo dá para saber se o clock boost realmente traz vantagem
    • Seria bom se a CPU do Pi fornecesse informações detalhadas sobre consumo de energia
  • Fico me perguntando se seria possível usar outros cores e se é mesmo necessário Linux para tirar fotos e enviá-las para a nuvem

    • Tenho curiosidade sobre como concluir a tarefa com o orçamento mais enxuto possível
    • Foi uma leitura interessante
  • Recomendo dois bons artigos sobre como reduzir o tempo de boot do Pi

  • Se você gosta do ecossistema do Rasp Pi, vale a pena experimentar o Pi Pico W

  • O tempo de boot de distribuições Linux costuma ser lento em geral

    • Especialmente em hardware fraco isso é ainda pior
    • Tive um problema parecido também no SBC MQ-Pro
    • Também dá para perceber isso em notebooks (exceto Macbooks)
  • O ideal é manter o estado de boot e usar um microcontrolador de baixo consumo

    • 105mA não é um consumo de energia adequado
  • Achei que o Circle poderia inicializar mais rápido que o kernel, mas ele não oferece suporte à câmera MIPI

  • Eu queria fazer uma câmera de trilha inteligente usando Pi

    • O tempo de inicialização é importante
    • Reduzir o uso de energia é muito bom