Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

OTA pour le MCU principal STM32 quand l'ESP32 voisin est celui qui gère le MQTT

OTA pour le MCU principal STM32 quand l'ESP32 voisin est celui qui gère le MQTT

Résolu 5 3

Traduit de English par IA ·

Nos contrôleurs d’irrigation embarquent un STM32F407 qui gère la logique des vannes, et un ESP32 qui ne fait que le Wi-Fi et le MQTT. Les deux communiquent par UART à 921600. L’ESP32 est facile à mettre à jour. Le STM32, lui, doit être flashé sur le terrain par quelqu’un disposant d’un ST-Link, ce qui, en été, représente beaucoup de déplacements.Je voudrais que les mises à jour firmware de Hermetry livrent aussi l’image du STM32. Que reçoit exactement l’appareil de Hermetry lorsqu’une mise à jour lui est assignée, et que doit-il renvoyer en retour ? Côté STM32, faut-il une configuration dual bank, ou puis-je me contenter d’un second emplacement dans la flash externe ? Le composant fait 1 Mo, et l’image pèse environ 380 Ko.

Timestamps in UTC or it didn't happen.
♥ 2

Traduit de English par IA ·

Dans la continuité, nous avons la même répartition dans nos contrôleurs CVC.

Timestamps in UTC or it didn't happen.
♥ 0

Traduit de English par IA ·

Nous avons fait exactement cela sur des contrôleurs de bâtiment (STM32 plus un modem ESP32). Hermetry ne se soucie pas de la puce qui exécute finalement l’image ; il ne communique qu’avec l’appareil connecté, donc c’est l’ESP32 qui télécharge et qui remonte les informations.Lorsque vous assignez un paquet, l’appareil reçoit ces attributs partagés dans un seul message sur v1/attributes/set : fw_title, fw_version, fw_size, fw_checksum, fw_checksum_algorithm (SHA256), fw_url et fw_sig si le paquet possède une signature détachée. fw_url est une adresse HTTPS à courte durée de vie, valable 15 minutes, et le téléchargement peut reprendre grâce à une requête HTTP Range.L’appareil signale la progression via des attributs client : fw_state passe par DOWNLOADING, DOWNLOADED, VERIFIED, UPDATING, UPDATED (ou FAILED avec fw_error), fw_progress de 0 à 100 pendant le téléchargement, puis après le redémarrage current_fw_title et current_fw_version. UPDATED seul n’est pas accepté : il attend de voir la nouvelle version en cours d’exécution.Notre procédure sur l’ESP32 :

1. fw_* arrive -> vérifier fw_title == "irr-stm32"
2. GET fw_url (reprise Range) dans la flash de l'ESP32, signaler fw_progress
3. Vérification SHA-256 + Ed25519 avec fw_sig -> fw_state VERIFIED
4. Envoyer l'image par UART au bootloader du STM32 dans la banque 2
5. Le STM32 vérifie à nouveau, permute les banques, redémarre -> fw_state UPDATING
6. Le STM32 transmet sa version à l'ESP32 -> current_fw_version

Vous avez un F407 de 1 Mo, à banque unique ; pour 380 Ko, je réserverais les 512 Ko supérieurs comme zone de téléchargement, avec un petit bootloader qui recopie l’image après vérification. La flash externe fonctionne aussi, mais le bootloader aura alors besoin du pilote SPI.Dans l’onglet Firmware du profil, activez les mises à jour du firmware (désactivées par défaut) et laissez Autoriser les images non signées désactivé en dehors du banc de test. Les mises à jour via LTE sont également désactivées par défaut. Renseignez les Modèles matériels du paquet pour qu’une image ESP32 ne se retrouve jamais dans la zone du STM32.Firmware updates (OTA)

Solution acceptée♥ 5

Traduit de English par IA ·

Très clair, merci. Que se passe-t-il si les 15 minutes expirent au milieu d’un téléchargement sur une liaison faible ? Certains de nos sites n’ont qu’une seule barre de réseau.

Timestamps in UTC or it didn't happen.
♥ 0

Traduit de English par IA ·

Le périphérique demande à nouveau fw_url (une requête d’attribut) et en reçoit une nouvelle, puis reprend à partir de l’octet atteint grâce à Range. Nous avons eu des téléchargements d’une heure de cette façon, sans aucun problème.

♥ 0

Traduit de English par IA ·

Ça fonctionne sur deux unités de test et une unité sur le terrain. J’ai utilisé la moitié supérieure de la flash plus un bootloader de 16 Ko. Le premier essai a échoué parce que j’avais mis fw_title du paquet à « irr_stm32 » et l’ESP32 vérifiait la présence d’un tiret ; le statut est donc resté bloqué sur Queued. Après l’avoir nommé correctement, la mise à jour est passée à UPDATED avec la nouvelle current_fw_version.

Timestamps in UTC or it didn't happen.
♥ 0
6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager