Skip to main content

Cómo Flashear el Firmware Nativo

El indicador SenseCAP tiene dos MCUs, ESP32-S3 y RP2040. Este tutorial proporciona una guía completa para ayudar al desarrollador a comenzar, incluyendo el flasheo del firmware nativo de fábrica listo para usar y la actualización de dispositivos enviados temprano al firmware más reciente.

La actualización de firmware es particularmente aplicable en dos escenarios:

  1. Si compraste un producto sin firmware OpenAI antes de junio de 2023, con versión de firmware 1.0.0, puedes descargar y actualizar al firmware más reciente que incluye funcionalidad OpenAI. El firmware más reciente se puede descargar desde aquí.
  2. Si has desarrollado una aplicación y deseas flashear un firmware personalizado, puedes seguir el tutorial proporcionado a continuación.

En resumen, necesitas este tutorial porque:

  1. Tienes un firmware que necesitas flashear en el ESP32-S3 o RP2040.
  2. Has modificado el código y necesitas compilarlo y flashearlo al dispositivo.

Vamos a comenzar con este tutorial.

Preparación

Para comenzar, todo lo que necesitas es tu SenseCAP Indicator y una computadora Windows/Mac/Linux.

Obtener el Firmware Nativo

El firmware de envío predeterminado del SenseCAP Indicator es completamente de código abierto tanto para ESP32-S3 como para RP2040.

Tienes dos opciones para obtener el Firmware Listo para Usar:
  • Código fuente: Antes de flashearlo, tienes la opción de modificar el código según tus requisitos. Necesitarás una cadena de herramientas(ESP-IDF, Arduino) para compilarlo.
  • Firmware: Flashea directamente el archivo binario precompilado sin necesidad de modificación o compilación de código. Usando herramientas como Esptool y Flash Download Tools.

Código Fuente

Firmware

Para ESP32-S3

ESP-IDF

ESP-IDF (Espressif IoT Development Framework) es un marco de desarrollo de software proporcionado por Espressif Systems para diseñar firmware y aplicaciones específicamente para sus series de microcontroladores ESP32 y ESP8266. Para más información, puedes consultar la Guía de Programación ESP-IDF

Si has optado por compilar el código fuente en firmware, necesitarás el ESP-IDF para realizar el proceso de compilación.

Nota:

La versión ESP-IDF debe ser mayor que v5.0. Si estás usando una versión anterior, necesitarás actualizarla a la versión más reciente.

Para usuarios nuevos, este video puede ayudarte a entender mejor los pasos a continuación:

Instalación de Cadena de Herramientas

Documentación Oficial de Espressif: Configuración Estándar de Cadena de Herramientas para Windows

Opción 1: Usando el Instalador Sin Conexión

Para usuarios de Windows, tienes la opción de descargar el instalador sin conexión ESP-IDF directamente. Aquí tienes un enlace de descarga directa: 🖱️Descargar Instalador Sin Conexión v5.1.1

Opción 2: Usando el Script Recomendado

Navega a Usando el Símbolo del Sistema

Compilación del Proyecto y flasheo

Si optas por compilar el código fuente en firmware, necesitarás el ESP-IDF para realizar el proceso de compilación.

Para compilar, flashear y monitorear tu proyecto, ejecuta el siguiente comando:

cd  <your_sdk_path>/examples/indicator_basis/
idf.py -p PORT build flash monitor
tip

Sin PORT, el IDF seleccionará automáticamente el puerto disponible.

Hasta este punto, escribiendo el comando idf.py -p PORT flash, el firmware ha sido flasheado exitosamente en el ESP32-S3.

Esptool

ESPtool - GitHub es una utilidad de código abierto basada en Python que proporciona una forma independiente de la plataforma para comunicarse con el cargador de arranque ROM en los chips Espressif.

Esptool puede ser usado como parte de tu script de Python. En esta guía, usaremos el software empaquetado disponible en la página de lanzamientos de Esptool. Elige el software que corresponda al sistema operativo de tu computadora.

Usando Esptool para Flashear

Se proporcionan dos scripts que muestran cómo utilizar efectivamente Esptool para flashear firmware en microcontroladores ESP32-S3.

Nota:

Ten en cuenta que los scripts proporcionados están adaptados para sistemas operativos Windows. Si estás usando un sistema operativo diferente, necesitarás adaptar los scripts para que se ajusten a tu entorno.

El script merge.bat es particularmente útil ya que consolida inteligentemente el cargador de arranque, la tabla de particiones y los binarios base del indicador en un solo archivo de firmware. Una vez fusionado, este firmware puede ser flasheado sin problemas en el ESP32-S3 usando el script flash.bat. Cuando se te solicite, ingresa el puerto COM correspondiente a tu dispositivo, y el proceso de flasheo se iniciará. La operación completa puede resumirse de la siguiente manera:

merge.bat
esptool.exe --chip esp32s3 ^
merge_bin -o sensecap_indicator_basis_v1.0.0.bin ^ # Target file name
--flash_mode dio ^
--flash_size 8MB ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin

Alternativamente, si prefieres flashear archivos binarios individuales en lugar de fusionar archivos antes de flashear, puedes usar directamente el script just_flash.bat:

just_flash.bat
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin

Y para un proceso de flasheo directo usando el firmware fusionado:

flash.bat
esptool.exe --chip esp32s3 --port COMx --baud 921600 write_flash -z 0x0 indicator_basis_v1.0.0.bin

Presta mucha atención a la dirección de inicio (0x0), especialmente cuando no se fusionen binarios. Para archivos binarios separados, consulta las instrucciones en Herramientas de Descarga Flash para archivos binarios separados. Seguir estas pautas asegura un flasheo sin errores.

Para utilizar estos scripts, guarda el código en archivos de texto separados llamados merge.bat y flash.bat dentro de la carpeta del proyecto. Este enfoque organizacional simplifica el acceso y uso.

Al emplear estos scripts, optimizas tanto la preparación del firmware como las etapas de flasheo, contribuyendo a un proceso más fluido y confiable.

├── indicator_basis
│ ├── CMakeLists.txt
│ ├── build
│ ├── docs
│ ├── main
│ ├── partitions.csv
│ ├── sdkconfig
│ └── .defaults
│ └── flash.bat
│ └── merge.bat
  1. Fusiona los binarios usando merge.bat.
  2. Flashea el firmware fusionado usando flash.bat.

Flasheando Firmware

Para flashear firmware, puedes usar el script flash.bat proporcionado. Este script está diseñado para simplificar el proceso de flashear tu firmware en el microcontrolador ESP32-S3.

Mostrar código de flash.bat
@echo off
setlocal
cd /d "%~dp0"
:: Set Chip
set chip=esp32s3
:: Set Baud
set baud=921600
:: List COM ports
echo Available ports and devices:
echo.
for /F "tokens=* delims=" %%A in ('wmic path Win32_PnPEntity get Name ^| findstr /C:"COM" ^| findstr /C:"CH340"') do (
echo %%A
)
:: Prompt for port
:chooseport
echo.
echo Please enter the COM port to use (e.g., COM5):
set /p port=
:: Check if chosen port is valid and contains "CH340"
for /F "tokens=* delims=" %%A in ('wmic path Win32_PnPEntity get Name ^| findstr /C:"%port%" ^| findstr /C:"CH340"') do (
set device=%%A
goto :flash
)
echo Port %port% not found
goto :chooseport
:flash:: Print chosen parameters
echo.
echo You have chosen:
echo Chip: %chip%
echo Port: %port% - %device%
echo Baud: %baud%
@REM echo Press any key to continue to...
@REM pause >nul
:: Run esptool for the single file
esptool.exe --chip %chip% --port %port% --baud %baud% write_flash -z 0x0 indicator_basis_v1.0.0.bin
if ERRORLEVEL 1 (
echo Flashing with the single file failed with error %ERRORLEVEL%.
goto :end
)
:: End of script
:end
endlocal

Fusión de Binarios

El script merge.bat proporcionado puede usarse para fusionar los archivos binarios necesarios en un solo archivo de firmware. Este script simplifica el proceso y asegura una fusión correcta para un flasheo exitoso, lo que te permite flashear un solo archivo bin en lugar de flashear archivos separados.

Mostrar código de merge.bat
@echo off
SETLOCAL
SET CurrentDir=%cd%
SET ScriptDir=%~dp0
SET CurrentDir=%CurrentDir:~0,-1%
SET ScriptDir=%ScriptDir:~0,-1%
IF NOT "%CurrentDir%"=="%ScriptDir%" (
cd /d "%ScriptDir%"
)
esptool.exe --chip esp32s3 ^
merge_bin -o indicator_basis_v1.0.0.bin ^
--flash_mode dio ^
--flash_size 8MB ^
0x0 ../../build/bootloader/bootloader.bin ^
0x8000 ../../build/partition_table/partition-table.bin ^
0x10000 ../../build/indicator_basis.bin
ENDLOCAL

Flash Download Tools (Solo Windows)

Flash Download Tools se utilizan para programar o flashear firmware en microcontroladores de las series ESP8266 y ESP32. Proporcionan una interfaz gráfica de usuario (GUI) para que los usuarios puedan flashear firmware fácilmente en los microcontroladores ESP.

Sigue los pasos para flashear un firmware precompilado:

Descarga: Flash Download Tools (solo para Windows)

  • Paso 1: Haz doble clic en el archivo .exe para entrar a la interfaz principal de la herramienta.

  • Paso 2: Selecciona las siguientes opciones:

OpciónParámetro
Chip Type
ESP32-S3
WorkMode
Develop
LoadMode
UART
  • Paso 3: Conecta el SenseCAP Indicator a tu portátil con un cable USB tipo C.

  • Paso 4: En la pestaña de descarga SPI, haz clic en "..." y navega hasta el firmware que acabas de descargar.

  • Paso 5: Configura el Flash SPI:

OpciónParámetro
VELOCIDAD SPI
40MHz
MODO SPI
DIO
  • Paso 6: Configurar el Panel de Descarga:
  • COM: Verifica los puertos en tu Administrador de Dispositivos, el USB-SERIAL es el correcto. (Aquí elegimos COM4)
  • Baud: 921600(valor recomendado)

Luego haz clic en START para comenzar el flasheo.

Cuando muestre FINISH, el flasheo del firmware se habrá completado.

Flash Download Tools para archivos binarios separados

En la guía mencionada anteriormente, el archivo binario "Default_Factory_Firmware_ESP32-S3.bin" fusiona tres binarios en uno.

Sin embargo, si estás usando ESP-IDF para construir firmware, flashear directamente un solo archivo podría resultar en errores. En su lugar, necesitarás encontrar tres archivos binarios separados que hayas construido y especificar las direcciones correctas (puedes usar tus propias direcciones) como sigue:

  • bootloader.bin ----> 0x0
  • partion-table.bin ----> 0x6800
  • termial_demo.bin ----> 0x10000

Para RP2040

Flashear por Arduino IDE

La Herramienta de Desarrollo RP2040 aprovecha Arduino para mejorar tu experiencia de codificación.

El Arduino IDE es software gratuito para codificar placas Arduino. Con su interfaz fácil de usar, puedes escribir y subir código fácilmente. Basado en una versión más simple de C++, ofrece librerías y ejemplos, haciéndolo excelente para principiantes.

Descarga:

  • Paso 1: Instalar Arduino IDE

  • Paso 2: Agregar la Placa Raspberry Pi Pico

Abre tu Arduino IDE, haz clic en Arduino IDE > Preferences, y copia la siguiente URL a Additional Boards Manager URLs:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Haz clic en Tools > Board > Board Manager.

Busca "indicator" e instala "Raspberry Pi Pico/RP2040" en el Board Manager

  • Paso 3: Añadir Librerías
Librerías de referencia

En el IDE de Arduino, puedes buscarla en el Library Manager, por ejemplo Seeed_Arduino_AHT20, y luego instalarla.

Haz clic para previsualizar la instalación offline

Para instalarla offline, puedes descargar el zip del repositorio desde GitHub, navegar a Sketch -> Include Library -> Add .ZIP Library, luego seleccionar las librerías que descargaste.

  • Paso 4: Conecta el dispositivo a tu PC con el cable USB Type-C proporcionado.

  • Paso 5: Selecciona la placa y el puerto

Busca "Indicator" y selecciona la placa Seeed INDICATOR RP2040 y selecciona el Puerto Serial usbmodem.

  • Paso 6: Abrir el archivo de código de ejemplo

Archivo -> Abrir, luego selecciona el archivo de código de ejemplo (archivo .ino).

Proporcionamos un archivo de código de ejemplo, puedes modificar el código según tus necesidades.

  • Paso 7: Verificar y cargar el archivo.

Aquí, hemos completado la construcción y flasheo (descarga) del firmware en el RP2040.

Flashear el archivo .uf2

  • Paso 1: Conecta el dispositivo a tu PC

Mantén presionado este botón interno usando una aguja, luego conecta el dispositivo a tu PC con el cable USB tipo-C proporcionado, suelta el botón una vez conectado.

  • Paso 2: Flasheo del Firmware

Después de que la conexión sea exitosa, tu PC mostrará un disco.

Copia el archivo .uf2 al disco, luego el disco se desconectará.

La actualización se ejecutará automáticamente.

Protocolo de Comunicación ESP32 & RP2040

ESP32 y RP2040 usan comunicación por puerto serie, utilizando el protocolo de comunicación cobs. La lista de comandos utilizados en la demostración es la siguiente:

El formato del comando consiste en el tipo de paquete y los parámetros del paquete.

Recursos

SDK ESP32 del SenseCAP Indicator

Demo RP2040 del SenseCAP Indicator

FAQ

¿Cómo distinguir el puerto serie?

Verifica el puerto en tu Administrador de Dispositivos

  • "USB Serial Device(COMx)" o "USB 串行设备" es para RP2040
  • "USB-SERIAL CH340" es para ESP32 En resumen, el puerto CH340 es para ESP32.

Actualizaciones Recientes

  • 2023-11-17
    • Se eliminó la sección de parcheo
  • 2023-08-25
    • Se hizo más clara la sección de Parcheo
  • 2023-07-25
    • Se agregó contenido para flashear firmware usando Esptool
  • 2023-05-29
    • Se agregó la sección de Parcheo

Soporte Técnico

¿Necesitas ayuda con tu SenseCAP Indicator? ¡Estamos aquí para asistirte!

Loading Comments...