Firmware: OTA client, dual-board build (devkit/XIAO), version reporting, XIAO fixes
Build and push server image / build-and-push (push) Successful in 36s
Build and push server image / build-and-push (push) Successful in 36s
- version.txt + esp_app_desc_t version reporting (X-Frame-Version header); new ota_update.c checks the server's advertised version against the running one and streams+applies an update via esp_https_ota, gated by bootloader rollback (marks the image valid only after a full successful cycle, so a bad update can't brick a wall-mounted frame). - Dual-OTA partition tables: partitions.csv (8MB dev board, 2MB slots) and new partitions_xiao.csv (4MB XIAO, 1.875MB slots -- the dev board's table doesn't fit the XIAO's flash). New build_for_board.sh gives each board its own build dir + generated sdkconfig via SDKCONFIG_DEFAULTS layering, so switching boards never clobbers the other's config. - fetch_photo_info()/fetch_face_labels() were using the short reachability-check timeout even though the manage-menu path can be the first (cold, TLS-handshake-paying) request of a wake cycle -- switched to the longer fetch timeout to stop spurious ESP_ERR_HTTP_CONNECT failures. - XIAO: the RF switch that selects onboard vs. external antenna (GPIO3/14) isn't initialized by plain ESP-IDF the way Seeed's Arduino package does it, leaving WiFi unable to reliably reach the antenna at all -- new board_antenna.c powers the switch and selects the onboard antenna, gated behind FRAME_XIAO_ANTENNA_INIT (on by default in sdkconfig.xiao). Also remaps the EPD DC/RST/BUSY pins, since the dev board's defaults (GPIO9/10/11) aren't physically exposed on the XIAO.
This commit is contained in:
+25
-6
@@ -22,12 +22,31 @@ idf.py -p PORT flash monitor
|
||||
|
||||
(`Ctrl-]` exits the monitor.)
|
||||
|
||||
The committed [`sdkconfig.defaults`](sdkconfig.defaults) pins an 8MB flash
|
||||
size and a custom [`partitions.csv`](partitions.csv) (2MB app partition --
|
||||
the default "single app" ~1MB partition runs out of room once the HTTP
|
||||
client, TLS, and vendored fonts/QR library are linked in). If your board
|
||||
has less flash, you'll need to shrink the app partition and drop features
|
||||
to fit.
|
||||
The commands above target the dev board this project is built against
|
||||
(ESP32-C6-DevKitC-1, 8MB flash) -- the committed
|
||||
[`sdkconfig.defaults`](sdkconfig.defaults) pins that flash size and a
|
||||
custom [`partitions.csv`](partitions.csv) with dual OTA app partitions (2MB
|
||||
each; see [OTA updates](#ota-updates) below), since the default "single
|
||||
app" ~1MB partition runs out of room once the HTTP client, TLS, and
|
||||
vendored fonts/QR library are linked in.
|
||||
|
||||
### Building for the Seeed XIAO ESP32-C6 (production board)
|
||||
|
||||
The XIAO has only 4MB of flash, which doesn't fit the dev board's two 2MB
|
||||
OTA slots -- it needs its own partition table
|
||||
([`partitions_xiao.csv`](partitions_xiao.csv), 1.875MB slots) and flash-size
|
||||
setting. Rather than hand-editing `sdkconfig` back and forth between boards,
|
||||
use [`build_for_board.sh`](build_for_board.sh), which builds each board into
|
||||
its own directory with its own generated config, so switching back and forth
|
||||
never clobbers the other:
|
||||
|
||||
```
|
||||
./build_for_board.sh xiao build
|
||||
./build_for_board.sh xiao flash monitor -p PORT
|
||||
```
|
||||
|
||||
(`./build_for_board.sh devkit ...` does the same for the dev board --
|
||||
equivalent to a plain `idf.py`, just consistent with the XIAO invocation.)
|
||||
|
||||
## Configuration (`idf.py menuconfig`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user