Guía de actualización de firmware
Cómo compilar, empaquetar y publicar nuevas versiones del firmware para los tres tipos de dispositivos.
1
Dispositivos y su firmware
Cada dispositivo tiene su propio proyecto ESP-IDF y binarios independientes
End Device — XIAO ESP32-C6
Lector RFID de puerta. Repo: ED-C6/ · Binario principal: escuela_conectada.bin
Border Router — ESP32 WROOM
Puente Thread ↔ WiFi ↔ Cloud. Repo: BR-ESP32/ · Binario principal: esp_ot_br.bin
Radio Co-Processor — XIAO ESP32-C6
Radio IEEE 802.15.4 del Border Router. Repo: RCP_C6/ · Binario principal: esp_ot_rcp.bin
2
Compilar nuevo firmware
Requiere ESP-IDF 5.4 instalado y activado
Activa el entorno ESP-IDF antes de compilar:
source ~/esp/esp-idf/export.sh
End Device (ED-C6/)
# Desde la raíz del proyecto cd ED-C6 idf.py build
Border Router (BR-ESP32/)
cd BR-ESP32 idf.py build
Radio Co-Processor (RCP_C6/)
cd RCP_C6 idf.py build
3
Copiar binarios al instalador
Los binarios deben copiarse a platform/apps/flasher/firmware/
Copiar los 3 dispositivos de una vez
# End Device cp ED-C6/build/bootloader/bootloader.bin platform/apps/flasher/firmware/ed/ cp ED-C6/build/partition_table/partition-table.bin platform/apps/flasher/firmware/ed/ cp ED-C6/build/escuela_conectada.bin platform/apps/flasher/firmware/ed/ # Border Router cp BR-ESP32/build/bootloader/bootloader.bin platform/apps/flasher/firmware/br/ cp BR-ESP32/build/partition_table/partition-table.bin platform/apps/flasher/firmware/br/ cp BR-ESP32/build/esp_ot_br.bin platform/apps/flasher/firmware/br/ # Radio Co-Processor cp RCP_C6/build/bootloader/bootloader.bin platform/apps/flasher/firmware/rcp/ cp RCP_C6/build/partition_table/partition-table.bin platform/apps/flasher/firmware/rcp/ cp RCP_C6/build/esp_ot_rcp.bin platform/apps/flasher/firmware/rcp/
4
Publicar binarios en Cloudflare R2
Los binarios se sirven desde R2. No hay que hacer git push para actualizar firmware.
Subir los 3 firmwares a R2 (desde EscuelaConectada/)
# End Device wrangler r2 object put escuela-conectada/firmware/ed/latest/bootloader.bin --file ED-C6/build/bootloader/bootloader.bin wrangler r2 object put escuela-conectada/firmware/ed/latest/partition-table.bin --file ED-C6/build/partition_table/partition-table.bin wrangler r2 object put escuela-conectada/firmware/ed/latest/escuela_conectada.bin --file ED-C6/build/escuela_conectada.bin # Border Router wrangler r2 object put escuela-conectada/firmware/br/latest/bootloader.bin --file BR-ESP32/build/bootloader/bootloader.bin wrangler r2 object put escuela-conectada/firmware/br/latest/partition-table.bin --file BR-ESP32/build/partition_table/partition-table.bin wrangler r2 object put escuela-conectada/firmware/br/latest/esp_ot_br.bin --file BR-ESP32/build/esp_ot_br.bin # Radio Co-Processor wrangler r2 object put escuela-conectada/firmware/rcp/latest/bootloader.bin --file RCP_C6/build/bootloader/bootloader.bin wrangler r2 object put escuela-conectada/firmware/rcp/latest/partition-table.bin --file RCP_C6/build/partition_table/partition-table.bin wrangler r2 object put escuela-conectada/firmware/rcp/latest/esp_ot_rcp.bin --file RCP_C6/build/esp_ot_rcp.bin
Los binarios en R2 se sirven de inmediato. El instalador web descarga siempre la versión
latest/ sin necesidad de redeploy.
5
Referencia de binarios y offsets
Offsets usados en los manifests para esp-web-tools
| Dispositivo | Archivo | Offset | Notas |
|---|---|---|---|
| End Device ESP32-C6 |
bootloader.bin |
0x0000 |
C6 arranca desde 0x0 |
partition-table.bin |
0x8000 |
||
escuela_conectada.bin |
0x10000 |
App principal | |
| Border Router ESP32 |
bootloader.bin |
0x1000 |
ESP32 arranca desde 0x1000 |
partition-table.bin |
0x8000 |
||
esp_ot_br.bin |
0x10000 |
App principal | |
| RCP ESP32-C6 |
bootloader.bin |
0x0000 |
C6 arranca desde 0x0 |
partition-table.bin |
0x8000 |
||
esp_ot_rcp.bin |
0x10000 |
Radio co-processor |
Al flashear el RCP: el Border Router debe estar apagado o el XIAO C6 desconectado del ESP32 durante el flash. Reconecta el cable UART después de completar el proceso y reinicia el Border Router.