En tant qu'appareil Internet des objets prenant en charge la connexion à distance à Internet, la mise à niveau OTA locale ou distante est également une fonction importante du contrôleur de programmation de script, car il n'y a aucune garantie que le relais soit totalement exempt de bogues, trouvés dans le Utilisation de bugs, s'il n'y a pas d'interface de mise à niveau OTA, il est difficile de permettre aux clients de mettre à niveau le micrologiciel via le port série, le contrôleur ne peut être mis à niveau qu'en usine, le coût est élevé, l'impact est grand. 🎜>
De plus, le client peut disposer de certaines fonctions personnalisées qui ne peuvent pas être obtenues via la programmation chinoise et devoir mettre à niveau le micrologiciel du contrôleur pour y parvenir.Ces deux situations doivent être résolues via la fonction OTA locale ou distante.
Ces jours-ci, nous avons passé un peu de temps à remplir cette fonction, désormais résumée comme suit :
(1) Le FLASH de l'ESP8266 peut stocker deux firmwares portant le nom user1.bin à user2.bin, et les adresses des deux firmwares sont déterminées par le programme de démarrage boot.bin stocké à l'adresse 0x0000, et les adresses de stockage sont différentes pour différentes capacités de flash.
Par exemple, ESP8266-01S avec une capacité Flash de 1 Mo, l'adresse de stockage est respectivement 0x01000 et 0x81000, tandis que ESP8266-07S avec une capacité FLASH de 4 Mo, l'adresse de stockage est respectivement 0x01000 et 0x101000.
3) La pratique officielle recommandée est de télécharger le firmware sur le serveur cloud vers la mémoire via le protocole http, je n'ai pas utilisé ce programme, principalement à cause de deux considérations, premièrement, si ce programme a été rigoureusement vérifié, et si il y a une prise en compte suffisante de la validation des données pour éviter de passer à la brique, j'en doute. Deuxièmement, ce programme nécessite que le contrôleur puisse se connecter à un réseau externe pour télécharger le firmware depuis un serveur, ce qui n'est pas facile à faire.
J'utilise actuellement Delphi pour développer un ensemble de logiciels de mise à niveau du micrologiciel, le logiciel en tant que client TCP pour se connecter directement au contrôleur, ou se connecter à la passerelle TCP du serveur cloud puis transféré au contrôleur, puis selon le 512 octets pour une trame de données pour transmettre le firmware au contrôleur.
Ensuite, cet ensemble de logique peut être porté sur le serveur, le client peut ouvrir la page Web via le navigateur pour transmettre le micrologiciel au contrôleur.
4) L'intégrité des données est entièrement vérifiée, la première trame de données fait la somme de contrôle crc32, le firmware est écrit sur le flash puis lu pour comparer avec la valeur écrite, et en même temps calculer la valeur de crc32, et l'ordinateur supérieur pour envoyer la valeur de crc32 par rapport aux données de lecture et d'écriture sont les mêmes, et aussi la même valeur du crc, on considère que la trame de données est écrite avec succès ;
En même temps, la valeur crc32 de chaque trame de données, puis la valeur crc32, pour obtenir une valeur crc32 totale, comparée à la valeur crc32 totale envoyée par l'ordinateur hôte, la valeur est la même avant d'appeler la fonction system_upgrade_flag_set ( 0x02) pour permettre au SDK de passer au firmware de démarrage.
Si le même firmware est utilisé dans les deux zones de stockage, l'ESP8266 ne pourra pas démarrer normalement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!