2026-04-27 03:00:48 +08:00
|
|
|
|
# ESP32-C3 OTA Relay
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
ESP32-C3FH4 OTA 中继固件,通过 WiFi / BLE 接收上位机 OTA 固件包,通过 SPI 转发给下位机(GD32)。
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
## 硬件平台
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
- **芯片:** ESP32-C3FH4 (RISC-V, 单核)
|
|
|
|
|
|
- **Flash:** 4MB
|
|
|
|
|
|
- **编译工具链:** ESP-IDF v6.0, riscv32-esp-elf
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
## 功能模块
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
| 模块 | 描述 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| `health_monitor` | 温度 + 电压 + WiFi RSSI 监控 |
|
|
|
|
|
|
| `ota_relay` | OTA 数据包接收与转发 |
|
|
|
|
|
|
| `wifi_ota` | WiFi OTA 服务器 (HTTP) |
|
|
|
|
|
|
| `ble_ota` | BLE OTA 服务器 (GATT) |
|
|
|
|
|
|
| `spi_master` | SPI 主站,与下位机通信 |
|
|
|
|
|
|
| `protocol` | CRC 校验 + AES 解密 |
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
## 目录结构
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
2026-04-27 03:00:48 +08:00
|
|
|
|
main/
|
|
|
|
|
|
├── CMakeLists.txt
|
|
|
|
|
|
├── core/main.cpp # 任务创建入口
|
|
|
|
|
|
├── relay/ota_relay.cpp # OTA 中继逻辑
|
|
|
|
|
|
├── transport/
|
|
|
|
|
|
│ ├── spi_master.cpp # SPI 主站
|
|
|
|
|
|
│ └── protocol.cpp # 协议层 (CRC/AES)
|
|
|
|
|
|
├── server/
|
|
|
|
|
|
│ ├── wifi_ota.cpp # WiFi OTA HTTP 服务器
|
|
|
|
|
|
│ └── ble_ota.cpp # BLE OTA GATT 服务器
|
|
|
|
|
|
└── monitor/
|
|
|
|
|
|
├── health_monitor.cpp # 健康监控
|
|
|
|
|
|
└── debug_log.cpp # UDP 调试日志
|
2026-04-27 00:42:26 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
## 任务配置 (单核 ESP32-C3)
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
所有任务固定运行在 CPU 核 0:
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
| 任务 | 优先级 | 栈大小 | 说明 |
|
|
|
|
|
|
|------|--------|--------|------|
|
|
|
|
|
|
| health_mon | configMAX_PRIORITIES - 4 | 4096 | 健康监控 |
|
|
|
|
|
|
| ota_relay | configMAX_PRIORITIES - 2 | 8192 | OTA 中继 |
|
|
|
|
|
|
| wifi_ota | configMAX_PRIORITIES - 3 | 8192 | WiFi OTA |
|
|
|
|
|
|
| ble_ota | configMAX_PRIORITIES - 3 | 8192 | BLE OTA |
|
2026-04-27 00:42:26 +08:00
|
|
|
|
|
2026-04-27 03:00:48 +08:00
|
|
|
|
## 待确认参数
|
|
|
|
|
|
|
|
|
|
|
|
- AES-128 主密钥 (MASTER_KEY_HERE)
|
|
|
|
|
|
- 搅伴算法种子 (SCRAMBLE_CONST_HERE)
|
|
|
|
|
|
- 芯片唯一码 (CHIP_UID_HERE)
|
|
|
|
|
|
- OTA Service UUID (需与 APP 侧协商)
|
|
|
|
|
|
|
|
|
|
|
|
## 编译
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
idf.py set-target esp32c3
|
|
|
|
|
|
idf.py build
|
|
|
|
|
|
idf.py flash monitor
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 调试日志
|
|
|
|
|
|
|
|
|
|
|
|
UDP 输出到上位机,默认 IP: `DEBUG_LOG_IP`,端口: `DEBUG_LOG_PORT`。
|