Existe-t-il des services cloud ou des frameworks prêts pour la mise à jour du firmware par voie hertzienne?

9

J'ai un prototype de périphérique à ressources limitées (microcontrôleur 8 bits avec firmware sans système d'exploitation), interagissant avec un serveur Web. Je me demande s'il existe des solutions, des cadres ou des services cloud pour mettre à jour le micrologiciel de mon appareil à partir du Web. D'après mes recherches, il y a Microsoft IoT Hub, mais je crains qu'il ne convienne pas à de tels appareils à ressources limitées. J'ai trouvé une autre solution: le portail mbed Cloud, mais je ne sais pas comment cela fonctionne. Quelqu'un peut-il m'aider via un conseil, peut-être existe-t-il des meilleures pratiques pour implémenter la mise à niveau du micrologiciel par liaison radio pour les appareils intégrés de manière sécurisée et robuste?

Vadimchik
la source
Il n'y a pas de tels services au moins pour l'instant. L'implémentation d'un en général est très fastidieuse, un service ciblant un type d'appareil spécifique peut être implémenté.
bravokeyl
Il y a mender.io , qui est à peu près ce que vous voulez. Mais je pense que c'est une cible vers les appareils embarqués "haut de gamme" et pour les nœuds 8 bits.
mat

Réponses:

4

Je ne répondrai qu'à cette partie, car je ne connais aucun système «prêt à l'emploi» pour un firwmare inconnu.

Peut-être existe-t-il des meilleures pratiques pour mettre en œuvre la mise à niveau du micrologiciel par liaison radio pour les appareils intégrés de manière sécurisée et robuste?

En termes de pratique, je ferais ce qui suit:

1) Avoir un chargeur de démarrage très minimal, quelque chose d'aussi stupide que possible, seul responsable du chargement du firmware avec les contraintes suivantes:

  • Possibilité d'enregistrer la réussite / l'échec du dernier démarrage (pour revenir à une version de travail en cas d'échec)
  • Une sorte de processus d'urgence pour accepter un nouveau micrologiciel en cas de défaillance catastrophique (facultatif, pourrait être évité si un appareil "en brique" est autorisé)

2) Configurez votre stockage pour avoir deux "banques de démarrage" de taille raisonnable pour gérer l'évolution future et la croissance du firmware.

3) Vérifiez la somme de l'image du micrologiciel après le téléchargement pour vous assurer qu'elle est correcte avant de la graver, vérifiez la banque de destination après la gravure pour vous assurer qu'elle n'échouera pas au démarrage pour un bit manquant quelque part.

Le point ignoré est généralement la somme de contrôle de l'image téléchargée avant et après la gravure, ce qui entraîne un système corrompu écrit sur l'appareil. L'utilisation de deux banques et l'alternance facilitent généralement le processus de mise à jour.

Tensibai
la source
5

mbed cloud offre une fonctionnalité complète de mise à jour du firmware, mais je pense que vous auriez du mal à le porter sur votre plate-forme si vous exécutez sans système d'exploitation. Je ne pense pas que la source soit ouverte aujourd'hui, vous ne pouvez donc même pas l'utiliser comme référence. Je ne sais pas non plus quels sont les critères d'accès pour le moment.

Vous devez réfléchir aux fonctionnalités dont vous avez besoin - s'agit-il d'un déploiement à grande échelle où vous devez être en mesure de faire des déploiements de micrologiciel par étapes, vous souciez-vous de signer le micrologiciel ou votre plate-forme est-elle complètement ouverte à toute personne disposant d'un accès physique? À quel point vous souciez-vous de pouvoir récupérer un périphérique maillé sans JTAG?

De façon réaliste, des fonctionnalités telles que les mises à jour OTA sont probablement quelque chose qui motive la sélection de votre système d'exploitation et de votre appareil - une fois que vous tenez compte des coûts de développement.

Sean Houlihane
la source
5

Découvrez OTA qui est l'abréviation d'Over The Air. Arduino a cette propriété .

Vous pouvez effectuer une mise à jour avec Arduino IDE, un navigateur Web ou un serveur HTTP.

L'option Arduino IDE est principalement destinée à la phase de développement logiciel. Les deux autres options seraient plus utiles après le déploiement, pour fournir au module des mises à jour d'application manuellement avec un navigateur Web ou automatiquement à l'aide d'un serveur http.

mico
la source
L'une des choses les plus désagréables à propos de cette bibliothèque et d'Arduino en général est le manque de sécurité. Cette solution convient aux projets de bricolage ou d'école, mais pas aux appareils commerciaux. Une chose particulière que je n'aime pas, c'est l'absence d'authentification: il n'est pas protégé de remplacer le micrologiciel par un logiciel malveillant, ayant un condensé MD5 correct.
Vadimchik
4

Vous pourriez jeter un œil à Particle (IoT) . Je ne suis pas sûr qu'ils prennent en charge Arduino, mais ils proposent eux-mêmes des cartes intégrées bon marché.

Jeroen Jacobs
la source
3

Une plate-forme plus intéressante, j'ai découvert est DeviceDrive . Voici la vidéo expliquant comment les choses fonctionnent. Leur système OTA semble être assez flexible.

Vadimchik
la source