Mise à jour du micrologiciel à distance Arduino Nano

8

Je travaille sur Arduino Nano (mémoire flash de 32 Ko dont 2 Ko utilisés par le chargeur de démarrage, 2 Ko SRAM, 1 Ko EEPROM) .

Le microcontrôleur prend l'entrée d'un appareil électrique via le module RS485 et publie les données lues sur un serveur distant à l'aide du module GPRS A6 . Le produit est censé interagir avec le serveur distant, affichant des données à intervalles.

J'ai terminé la partie d'intégration et l'appareil fonctionne bien, collecte des données et affichage sur le serveur (à environ 10-15 km). Le seul défi auquel je suis confronté est que s'il existe 100 appareils de ce type et que je dois mettre à jour le micrologiciel, en utilisant le serveur distant (ou tout autre mécanisme approprié), comment dois-je procéder.

J'ai parcouru de nombreux messages qui suggèrent d'utiliser un autre Arduino en tant que FAI, cela pourrait être ma dernière approche (car cela augmenterait le coût final du produit).

La mise à jour du firmware Over The Air n'est toujours pas claire comme sur la communauté Stack Exchange pour les micro-contrôleurs bas de gamme. Toute discussion peut être d'une grande aide pour beaucoup.

Ashish K
la source
Décrivez "emplacement éloigné", 10 mètres, 1 km, 10 km pour l'utilisateur?
Bence Kaulics
@BenceKaulics, nous utilisons le module GPRS pour envoyer une demande au microcontrôleur situé à environ 10 km.
Ashish K
3
Vous devez décrire votre cas d'utilisation plus clairement, y compris la pile logicielle. Jetez un œil aux autres questions sur les mises à jour en direct .
Sean Houlihane
S'agit-il d'un nouveau développement ou essayez-vous de moderniser un produit existant?
Sean Houlihane
@ SeanHoulihane C'est un nouveau développement. Je pourrais opter pour n'importe quel choix de micro-contrôleur (le coût étant la seule limite) qui peut envoyer des données à un serveur sur un emplacement distant (10 km) autour. J'ai utilisé un module GPRS pour envoyer des données et le seul défi auquel je suis actuellement confronté est de savoir comment mettre à jour le micrologiciel à distance.
Ashish K

Réponses:

9

Réponse courte: c'est possible.

Réponse longue: c'est compliqué. C'est pourquoi tant de très mauvaises implémentations existent.

À tout le moins, vous avez deux étapes dans tout processus de mise à jour à distance / en direct.

  1. Transmission du firmware
  2. Installation du firmware.

Bien sûr, c'est le strict minimum absolu. Si vous travaillez dans des itérations, c'est également une première étape très valable. Si vous avez plus d'un appareil, vous devrez être en mesure d' associer le bon firmware au bon appareil . Si vous voulez réduire les risques de bricking de votre appareil, vous voudrez un moyen de vérifier l'état de votre appareil avant et après la mise à jour , vous voudrez également sécuriser le transport et le rendre aussi fiable que possible et, naturellement, avoir une stratégie de secours en cas d'erreur de mise à jour .

C'est cinq étapes supplémentaires qui vous amènent vers un produit fiable. Il existe de bonnes pratiques pour ces choses, mais elles dépendent de l'environnement de votre projet. Peut-être que c'est quelque chose de bon marché et que le taux d'échec de 5% sur les mises à jour est correct, peut-être que c'est un stimulateur cardiaque et même une seule erreur au total est inacceptable car elle conduit à un scénario fatal. Vous devrez trouver des solutions à ces bases qui correspondent à votre produit.

De plus, il y a des dizaines de choses différentes à considérer. Aurez-vous des clients? Devez-vous les informer? Ont-ils leur mot à dire dans le calendrier / l'installation des mises à jour? Vos appareils sont-ils dans différents pays? Des restrictions légales s'appliquent-elles? Les normes normatives s'appliquent-elles? Combien d'appareils mettez-vous à jour? 1? Une douzaine? Des centaines? Des millions?

Si vous mettez à jour cinq appareils, le processus peut être très bavard. Si vous mettez à jour des millions, cela pourrait devenir très coûteux. Et oui, cela a un impact sur ce que j'ai énuméré ci-dessus comme première étape, la transmission du firmware. Peut-être que vous créez un stimulateur cardiaque et qu'un coût de traitement de centaines de messages par mise à jour est acceptable compte tenu de l'alternative.

Ce ne sont que les questions que j'ai notées en deux minutes, donc cette liste n'est certainement pas exhaustive. Mon point est sans information concernant le scénario, nous ne pouvons pas vraiment vous aider correctement.

Helmar
la source
Merci beaucoup @Helmar, je mettrai à jour la question avec autant de détails que possible. Pour les microcontrôleurs qui ne prennent pas en charge un système d'exploitation qui l'utilise, la mise à jour du micrologiciel à distance est encore vague et une bonne solution claire ne m'aiderait pas seulement, mais pour beaucoup de ceux qui travaillent sur des cartes de développement bas de gamme. Je vous demanderais également de le vérifier après la mise à jour.
Ashish K
1
Possible, tant que la plate-forme permet de diviser le flash en au moins 3 régions (ou que vous avez envie de courir à partir de la RAM pendant que vous re-flashez, et que vous avez beaucoup de pièces de rechange, ou un JTAG déployable à distance).
Sean Houlihane
@SeanHoulihane, la série ATmega ne peut pas fonctionner à partir de la RAM.
Chris Stratton