Existem serviços ou estruturas em nuvem prontos para atualização de firmware por via aérea?

9

Eu tenho um protótipo do dispositivo de restrição de recursos (MCU de 8 bits com firmware sem SO), interagindo com um servidor da web. Gostaria de saber se existem soluções, estruturas ou serviços em nuvem para atualizar o firmware do meu dispositivo a partir da web. De minha pesquisa, há o Microsoft IoT Hub, mas receio que não seja adequado para esses dispositivos com recursos limitados. Encontrei mais uma solução - o portal Cloud da mbed, mas não tenho certeza de como ela funciona. Alguém pode me ajudar com algum conselho, talvez haja algumas práticas recomendadas para implementar a atualização de firmware através do ar para dispositivos embarcados de maneira segura e robusta?

Vadimchik
fonte
Atualmente, não existem serviços desse tipo. A implementação de uma em geral é muito entediante, pode ser implementado um serviço direcionado a um tipo de dispositivo específico.
bravokeyl
Existe o mender.io , que é aproximadamente o que você deseja. Mas acredito que é voltado para dispositivos embarcados "avançados" e para nós de 8 bits.
esteira

Respostas:

4

Responderei apenas a essa parte, pois não conheço nenhum sistema 'fora da caixa' para um pesadelo desconhecido.

talvez haja algumas práticas recomendadas para implementar a atualização de firmware através do ar para dispositivos embarcados de maneira segura e robusta?

Em termos de prática, o que eu faria é o seguinte:

1) Tenha um carregador de inicialização muito mínimo, algo o mais burro possível, apenas responsável por carregar o firmware com as seguintes restrições:

  • Capacidade de registrar o sucesso / falha da última inicialização (para reverter para uma versão funcional em caso de falha)
  • Algum tipo de processo de emergência para aceitar um novo firmware em caso de falha catastrófica (opcional, pode ser evitado se um dispositivo "em bloco" for permitido)

2) Configure seu armazenamento para ter dois "bancos de inicialização" de tamanho razoável para lidar com a evolução futura e o crescimento do firmware.

3) Faça a soma da imagem do firmware após o download para garantir que ela esteja correta antes da gravação, e a soma do banco de destino após a gravação para garantir novamente que não haverá falha na inicialização de um bit ausente em algum lugar.

O ponto negligenciado é geralmente a soma de verificação da imagem baixada antes e depois da gravação, resultando em um sistema corrompido gravado no dispositivo. Usar dois bancos e alternar geralmente facilita o processo de atualização.

Tensibai
fonte
5

O mbed cloud oferece funcionalidade completa de atualização de firmware, mas acho que você terá problemas para transportá-lo para sua plataforma se estiver executando sem um sistema operacional. Eu não acho que a fonte esteja aberta hoje, então você nem pode usá-la como referência. Também não tenho certeza de quais são os critérios para obter acesso agora.

Você precisa pensar nos recursos de que precisa - esta é uma implantação em larga escala na qual você pode executar lançamentos de firmware em etapas, você se preocupa em assinar o firmware ou sua plataforma é completamente aberta a qualquer pessoa com acesso físico? Quanto você se preocupa em poder recuperar um dispositivo em tijolo sem o JTAG?

Realisticamente, recursos como atualizações do OTA provavelmente são algo que direciona a seleção do sistema operacional e do dispositivo - uma vez que você considera os custos de desenvolvimento.

Sean Houlihane
fonte
5

Confira OTA, que é a abreviação de Over The Air. O Arduino tem essa propriedade .

Você pode fazer atualizações com o Arduino IDE, o Navegador da Web ou o Servidor HTTP.

A opção IDE do Arduino destina-se principalmente à fase de desenvolvimento de software. As outras duas opções seriam mais úteis após a implantação, para fornecer atualizações de aplicativos ao módulo manualmente com um navegador da Web ou automaticamente usando um servidor http.

mico
fonte
Uma das coisas mais desagradáveis ​​sobre essa biblioteca e o Arduino em geral é a falta de segurança. Esta solução é adequada para projetos de bricolage ou escola, mas não para dispositivos comerciais. O que eu particularmente não gosto é a ausência de autenticação: ele não está protegido contra a substituição de firmware por um malicioso, tendo o resumo MD5 correto.
Vadimchik
4

Você pode dar uma olhada no Particle (IoT) . Não tenho certeza de que eles suportam o Arduino, mas eles oferecem algumas placas embarcadas baratas.

Jeroen Jacobs
fonte
3

Mais uma plataforma interessante, descobri o DeviceDrive . Aqui está o vídeo explicando como as coisas funcionam. O sistema OTA deles parece ser bastante flexível.

Vadimchik
fonte