- 0.1.5/0.1.6:刷机模式(flash_mode,最多 2 路,60 分钟可加钟)——窗口内顶高按 4450 mV 绝对值判、不断 VBUS - 0.1.7/0.1.8:反灌断 VBUS 阈值放宽到 -300 mA(adb reboot bootloader 过渡实测 -208 mA) - 0.1.9:WiFi 最多存 4 组,连不上轮换;NVS v1 自动迁移并双写(OTA 回滚仍能上网) - 0.1.10:热插拔进来的刀片重新初始化 PCA9555 + INA226(否则 VBUS 常开、电流恒读 0) - 0.1.11:i2cbus 嵌套检测改看本任务持锁(原全局标志让 key 随机回 busy、vbus 随机回 io) - 0.1.12:硬重启先断 VBUS,开机校验通过 60 s 后再接回(否则假重启 / 误判没开机 / 进关机充电) - 0.1.13:这一路被安全判据断电时一并退出刷机模式(事件 21 arg 254) 26 ctest 全绿;新增用例均先在旧代码上确认变红。板 B 已 OTA 到 0.1.13-c5 并实测。 Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
44 行
1.5 KiB
CMake
44 行
1.5 KiB
CMake
# ESP-IDF 侧的 main 组件。
|
|
# app_main.c / ulink_esp.c / mlink_esp.c / thermal_esp.c / ota_esp.c / warm_esp.c 是 ESP 专用;其余 .c 必须同时在宿主机上编得过
|
|
# (新增文件时两处都要加:这里 + host/CMakeLists.txt 的 PHONERAIL_CORE_SRCS)。
|
|
idf_component_register(
|
|
SRCS "app_main.c"
|
|
"ulink_esp.c"
|
|
"mlink_esp.c"
|
|
"version.c"
|
|
"rail.c"
|
|
"rail_cfg.c"
|
|
"i2cbus.c"
|
|
"slot.c"
|
|
"sched.c"
|
|
"tasks.c"
|
|
"chgmode.c"
|
|
"t_safety.c"
|
|
"t_actuator.c"
|
|
"t_thermal.c"
|
|
"evlog.c"
|
|
"cmd_json.c"
|
|
"cmd.c"
|
|
"cmd_exec.c"
|
|
"cmd_report.c"
|
|
"ulink.c"
|
|
"cmd_net.c"
|
|
"netcfg.c"
|
|
"mlink.c"
|
|
"bringup.c"
|
|
"ntc.c"
|
|
"thermal_esp.c"
|
|
"ota.c"
|
|
"ota_esp.c"
|
|
"warm_esp.c"
|
|
INCLUDE_DIRS "."
|
|
EMBED_TXTFILES "certs/evse_ca.pem"
|
|
REQUIRES phonerail_hal drv esp_driver_usb_serial_jtag
|
|
esp_wifi esp_netif esp_event esp_timer nvs_flash mqtt
|
|
esp_adc esp_driver_pcnt
|
|
app_update esp_http_client mbedtls)
|
|
|
|
# warm_esp.c 的能力标记(.rodata_custom_desc,镜像第 288 字节)没有代码引用它,
|
|
# 不加 -u 会被 --gc-sections 丢掉 —— 那样每个新固件都会被当成「不认接管」,EN 永远不锁(安全,但功能白做)。
|
|
target_link_libraries(${COMPONENT_LIB} INTERFACE "-u g_phonerail_caps")
|