"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo implementar la función OTA para ESPith SDK x (controlador programable por script)

Cómo implementar la función OTA para ESPith SDK x (controlador programable por script)

Publicado el 2024-11-01
Navegar:536

Como dispositivo de Internet de las cosas que admite conexión remota a Internet, la actualización OTA local o remota también es una función importante del controlador de programación de scripts, porque no hay garantía de que el relé esté completamente libre de errores, que se encuentran en el uso de errores, si no hay una interfaz de actualización OTA, es difícil permitir a los clientes actualizar el firmware a través del puerto serie, el controlador solo se puede actualizar de nuevo a la fábrica, el costo es alto y el impacto es grande. &&&]

Además, el cliente puede tener algunas funciones personalizadas que no se pueden lograr mediante la programación china y necesita actualizar el firmware del controlador para lograrlas.

Estas dos situaciones deben resolverse mediante la función OTA local o remota.

Estos días dedicamos un poco de tiempo a completar esta función, ahora resumida de la siguiente manera:

(1) El FLASH de ESP8266 puede almacenar dos firmwares con el nombre user1.bin a user2.bin, y las direcciones de los dos firmwares están determinadas por el programa de arranque boot.bin almacenado en la dirección 0x0000, y las direcciones de almacenamiento son diferentes para diferentes capacidades de flash.
Por ejemplo, ESP8266-01S con capacidad Flash de 1 Mbyte, la dirección de almacenamiento es 0x01000 y 0x81000 respectivamente, mientras que ESP8266-07S con capacidad FLASH de 4 Mbyte, la dirección de almacenamiento es 0x01000 y 0x101000 respectivamente.

(2) a través de la función system_upgrade_userbin_check valor de retorno para obtener el programa actual que se está ejecutando user1.bin o user2.bin, actualización del firmware, a otra área de almacenamiento de firmware para escribir el firmware completo, por ejemplo, si se almacena la ejecución actual en el 0x1000 del user1.bin, luego a la dirección 0x81000(ESP8266-01S) o 0x101000 (EPS8266-07S) para escribir el firmware user2.bin, después de escribir, y luego a través de la función system_upgrade_flag_set (0x02) para informar que la escritura del SDK está completa, el SDK establece los parámetros del sistema, de modo que cuando el inicio del ESP8266 arranque en otro firmware.

3) La práctica oficial recomendada es descargar el firmware al servidor en la nube en la memoria a través del protocolo http. No utilicé este programa, principalmente debido a dos consideraciones: en primer lugar, si este programa ha sido verificado rigurosamente y si hay suficiente consideración en la validación de datos para evitar la actualización a ladrillo, lo dudo. En segundo lugar, este programa requiere que el controlador pueda conectarse a una red externa para descargar firmware desde un servidor, lo cual no es fácil de hacer.

Actualmente estoy usando Delphi para desarrollar un conjunto de software de actualización de firmware, el software como cliente TCP para conectarse directamente al controlador, o conectarse a la puerta de enlace TCP del servidor en la nube y luego transferirlo al controlador, y luego de acuerdo con el 512 bytes para un marco de datos para enviar el firmware al controlador.

A continuación, este conjunto de lógica se puede transferir al servidor, el cliente puede abrir la página web a través del navegador para enviar el firmware al controlador.

4) La integridad de los datos se verifica completamente, el primer cuadro de datos realiza la suma de verificación crc32, el firmware se escribe en la memoria flash y luego se lee para compararlo con el valor escrito y al mismo tiempo calcular el valor. de crc32, y la computadora superior para enviar el valor de crc32 en comparación con los datos de lectura y escritura son los mismos, y también el mismo valor de crc, se considera que el marco de datos se escribió exitosamente;

Al mismo tiempo, se toma el valor crc32 de cada cuadro de datos y luego se agrega el valor crc32 para obtener un valor crc32 total. En comparación con el valor crc32 total enviado por la computadora host, el valor es el mismo antes de llamar a la función system_upgrade_flag_set( 0x02) para permitir que el SDK cambie al firmware de arranque.

(5) Escriba en dos áreas de firmware diferentes del firmware user1.bin, user2.bin no es lo mismo, para el desarrollo del SDK de RTOS, debe modificar el valor de la variable Makefile APP para generar user1.bin, user2 .bin, respectivamente, la computadora host de acuerdo con el controlador para volver a la ejecución actual del firmware del área de almacenamiento, seleccione otra área de almacenamiento del firmware enviado al controlador. La computadora host selecciona el firmware en la otra área de almacenamiento de acuerdo con el área de almacenamiento del firmware actualmente en ejecución devuelto por el controlador.

Si se utiliza el mismo firmware en ambas áreas de almacenamiento, el ESP8266 no podrá iniciarse normalmente.

How to implement OTA function for ESPith SDK x(script programmable controller)

How to implement OTA function for ESPith SDK x(script programmable controller)

Declaración de liberación Este artículo se reproduce en: https://dev.to/zhangzhuyue/how-to-implement-ota-function-for-esp8266-with-sdk-2xxscript-programmable-controller-a60 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3