Cómo usar un módulo Wi-Fi ESP8266 para actualizar un microcontrolador STM32 con FOTA

Divide y conquistaras.

Tareas de alto nivel:

  1. Obtenga el archivo de firmware y guárdelo en el sistema de archivos flash ESP.
  2. Coloque STM en modo de actualización de firmware.
  3. Enviar firmware de ESP a STM.
  4. Salga de actualizar / restablecer STM.

Necesitará una comprensión de lo siguiente:

  1. Todos los detalles de la actualización del firmware.
    1. Cómo invocar el modo de actualización.
    2. En qué medios de comunicación (i2c, SPI, UART, etc.) el STM espera recibir datos de archivos de actualización. (Probablemente sea seguro asumir que lo espera sobre UART, ya que el método habitual de actualizarlo seguramente de PC a STM).
    3. Qué protocolo de transferencia espera el STM.
  2. Transferencia de datos a / desde ESP
    1. He escrito el código NodeMCU / Lua que es capaz de descargar archivos de la web usando HTTP y recibir archivos a través de WiFi, enviados (usando un archivo javascript que escribí) desde una PC de escritorio. El único límite de tamaño es el espacio disponible.
    2. Enviar datos de archivos a través de UART no es difícil, [en este caso] siempre que sepa lo que espera el STM.

El escenario que imaginé es: ESP está conectado a WiFi y está configurado con URL para determinar si la actualización está disponible y para adquirirla. Luego, bajo un conjunto de condiciones, inicia y completa el proceso de actualización. Dado que ambos dispositivos comparten una tierra, solo se necesitan dos cables (a menos que STM utilice control de flujo, en cuyo caso, cuatro cables) sin incluir la alimentación.

Nunca he visto un STM32 pero son lo suficientemente baratos y se ven bastante interesantes. He trabajado mucho con ESP8266.

¿Estás interesado en colaborar? Podríamos crear un proyecto en GitHub, obtendrá todos los detalles de la actualización y le proporcionaré el código base de NodeMCU y podrá ajustarlo a sus necesidades. Envíame un PM si te interesa.

Puedo sugerir una forma práctica, adecuada para la mayoría de los controladores STM32.

Ate ESP8266 a STM32 por pasadores:
ESP serie a STM32 USART, que admite el gestor de arranque (seguro, recuerde – RX a TX, y TX a RX, como de costumbre para cualquier MCU 2 hablando entre sí).
ESP GPIO al pin de reinicio STM32 y pines de configuración BOOT.

Luego, cuando necesite flashear stm32, jale los pines BOOT al estado requerido (para habilitar el cargador de arranque UART), luego jale hacia abajo RESET y suéltelo. En este momento, STM32 espera datos sobre USART. Puede usar ESP como un simple puente en serie, puede almacenar en ESP spiffs una nueva imagen de flash STM, si ESP flash puede encajar, o incluso simplemente extraer la actualización a través de http y flash en vivo.
Después de que termine de parpadear, simplemente devuelva los pines BOOT al estado normal y presione reiniciar nuevamente, para que STM se reinicie al modo normal.