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?
security
microcontrollers
over-the-air-updates
Vadimchik
fonte
fonte
Respostas:
Responderei apenas a essa parte, pois não conheço nenhum sistema 'fora da caixa' para um pesadelo desconhecido.
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:
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte