移除固定的包间延迟配置 `OTA_PACKET_DELAY_MS`,采用基于SPI Link v2 CREDIT背压的动态节奏控制,在SpiMaster中通过remoteCredit==0时wait/拒发 实现流量控制,提高OTA传输稳定性。 refactor(stack): 统一任务栈大小配置并添加CPU统计功能 - 在app_config.h中集中定义所有任务栈大小常量,基于实测水位优化分配 - 新增monitor/cpu_stats.cpp组件,提供1Hz FreeRTOS CPU占用采样 - 更新main.cpp中的任务创建使用新的栈大小常量 - 调整health_monitor和ota_relay等任务的栈分配 perf(ota): 改进ESP32和GD32 OTA分区预擦策略 - ESP32 OTA从边写边擦改为整分区预擦模式,避免写入时的扇区擦除阻塞 - GD32 OTA在prepare阶段进行整分区预擦,提升后续写入吞吐量 - 优化OTA协调器状态管理,修复FINALIZING状态残留问题 fix(log): 改进UDP日志发送的堆内存管理 - 当堆内存不足时记录UDP发送跳过的告警信息到ring buffer - 降低UDP发送跳过的内存阈值从10KB到6KB - 降低日志排水最小内存阈值从8KB到4KB docs(readme): 更新OTA配置参数文档说明 移除已废弃的OTA_PACKET_DELAY_MS参数,更新包间节奏控制说明为 基于CREDIT背压机制的描述。
54 lines
2.8 KiB
CMake
54 lines
2.8 KiB
CMake
# ESP32-C3 OTA 中继项目 - 主组件构建配置
|
||
idf_component_register(
|
||
SRCS
|
||
"core/main.cpp" # 程序入口 (app_main)
|
||
"ota/esp32_ota_core.cpp" # ESP32 本机 OTA 核心(分区写入/SHA验证)
|
||
"ota/ota_coordinator.cpp" # OTA 多通道协调器(状态机/互斥)
|
||
"relay/ota_relay.cpp" # GD32 SPI OTA 中继状态机
|
||
"storage/gd32_flash_store.cpp" # GD32 Flash 存储抽象层(H1 提取)
|
||
"server/wifi_ota.cpp" # WiFi HTTP OTA 服务器
|
||
"server/http_handlers.cpp" # HTTP 路由处理(H2 从 wifi_ota 提取)
|
||
"server/ble_ota.cpp" # BLE GATT OTA 服务器
|
||
"monitor/health_monitor.cpp" # 系统健康监控(温度/RSSI/堆内存/栈水位主动巡检)
|
||
"monitor/cpu_stats.cpp" # 1Hz FreeRTOS CPU 占用采样任务
|
||
"monitor/can_feedback_task.cpp" # CAN 1Hz 反馈轮询任务(0xC1)
|
||
"monitor/debug_log.cpp" # 三路调试日志(UART/UDP/环形缓冲)
|
||
"monitor/task_stack_check.cpp" # 任务栈水位指标收集(health_mon 巡检 + /system/status 共享)
|
||
"monitor/stack_overflow_hook.cpp" # FreeRTOS 栈溢出钩子(canary 触发时 UART 硬写告警)
|
||
INCLUDE_DIRS
|
||
"."
|
||
"core"
|
||
"ota"
|
||
"relay"
|
||
"storage" # GD32 Flash 存储抽象层头文件
|
||
"server"
|
||
"monitor"
|
||
"include" # 公共头文件(app_config.h, version.h)
|
||
REQUIRES
|
||
transport # M5: 传输层组件(SPI/CANFD/协议)
|
||
app_update # ESP32 OTA API
|
||
cjson # JSON 解析/生成
|
||
esp_driver_tsens # 温度传感器驱动
|
||
esp_driver_uart # UART 驱动(调试日志)
|
||
esp_wifi # WiFi STA/AP 模式
|
||
esp_netif # 网络接口层
|
||
esp_event # 事件循环
|
||
esp_partition # Flash 分区操作
|
||
esp_timer # 高精度定时器
|
||
esp_http_server # HTTP OTA 服务器
|
||
esp_blockdev # Flash 块设备
|
||
nvs_flash # NVS 存储(OTA 元数据)
|
||
freertos # RTOS 内核
|
||
mbedtls # SHA-256 / AES 加密
|
||
bt # NimBLE BLE 协议栈
|
||
)
|
||
|
||
# 每次构建时自动刷新 version.h(BUILD_TIME / GIT_HASH)
|
||
add_custom_target(version_header ALL
|
||
COMMAND ${CMAKE_COMMAND}
|
||
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||
-DOUTPUT_FILE=${CMAKE_CURRENT_SOURCE_DIR}/include/version.h
|
||
-P ${CMAKE_SOURCE_DIR}/cmake/gen_version_script.cmake
|
||
COMMENT "Refreshing version.h"
|
||
VERBATIM
|
||
) |