47ffe1bd5433d9b999e9a9d55609e88624f34909
添加了HTTP接口用于转发CAN帧,包括/can/send POST接口用于发送CAN帧, 以及/can/status GET接口用于查询CAN通道状态。同时集成了SPI master驱动 以支持与GD32之间的CANFD通信,并定义了完整的CAN帧格式和通道管理机制。 BREAKING CHANGE: 移除了OTA上位机工具脚本
ESP32-C3 OTA Relay
ESP32-C3FH4 OTA 中继固件,通过 WiFi / BLE 接收上位机 OTA 固件包,通过 SPI 转发给下位机(GD32)。
硬件平台
- 芯片: ESP32-C3FH4 (RISC-V, 单核)
- Flash: 4MB
- 编译工具链: ESP-IDF v6.0, riscv32-esp-elf
功能模块
| 模块 | 描述 |
|---|---|
health_monitor |
温度 + 电压 + WiFi RSSI 监控 |
ota_relay |
OTA 数据包接收与转发 |
wifi_ota |
WiFi OTA 服务器 (HTTP) |
ble_ota |
BLE OTA 服务器 (GATT) |
spi_master |
SPI 主站,与下位机通信 |
protocol |
CRC 校验 + AES 解密 |
目录结构
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 调试日志
任务配置 (单核 ESP32-C3)
所有任务固定运行在 CPU 核 0:
| 任务 | 优先级 | 栈大小 | 说明 |
|---|---|---|---|
| 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 |
待确认参数
- AES-128 主密钥 (MASTER_KEY_HERE)
- 搅伴算法种子 (SCRAMBLE_CONST_HERE)
- 芯片唯一码 (CHIP_UID_HERE)
- OTA Service UUID (需与 APP 侧协商)
编译
idf.py set-target esp32c3
idf.py build
idf.py flash monitor
调试日志
UDP 输出到上位机,默认 IP: DEBUG_LOG_IP,端口: DEBUG_LOG_PORT。
Languages
C++
93.5%
C
5.4%
CMake
0.7%
Python
0.4%