AlphaESS 平台 EMS 3.6 应用层代码解析
本目录是对 AlphaESS Platform EMS 3.6 储能管理系统固件应用层源码的逐文件解析,每个源文件(.c / .h)对应一份独立文档,共 191 份。
想快速定位某个功能在哪实现? 走
索引/README.md—— 那里有"自然语言功能 → 源文件"的反查表(1776 行)、5500+ 条函数/宏/全局变量符号索引,以及检索脚本。最快的一条命令(在
索引/目录下):node 工具/查找.js 削峰填谷
一、项目概况
| 项 | 内容 |
|---|---|
| 产品 | AlphaESS 平台 EMS 3.6(储能能量管理系统主控) |
| 版本 | V0.11.676(git 04e72700,提交说明"G3-S10申请版本号V0.11.676") |
| 主控 | GD32F407ZG(Cortex-M4) |
| 操作系统 | uCOS-II(抢占式,OS_TICKS_PER_SEC = 1000) |
| 工程 | Keil MDK,Target EMS_3_0,工程文件 user/EMS_3_0.uvprojx |
| 编译宏 | USE_STDPERIPH_DRIVER, GD32F407 |
| 机型 | 一台 EMS 可带多台逆变器,支持 6 家厂商协议 + 并机 + 油机 + 充电桩 + BMS |
一次完整的控制闭环可以概括为:
电表/CT/BMS/逆变器采样 ──► 各任务缓存到全局数据表 ──► logic/ 计算目标功率
▲ │
│ ▼
└──── 厂商协议组帧下发 ◄── 安规限值/并机/调度指令 ◄── 控制参数表
二、分层结构
user/ 主程序入口、任务创建、版本信息
├── main.c uCOS-II 启动、17 个任务的静态创建、信号量/标志组初始化
└── version.c 固件版本字符串(脚本可提取的固定格式)
logic/ 能量调度核心(业务大脑)
├── logic.c 总调度:采集汇总 → 序控模式优先级链 → 下发
├── ac_control.c AC 侧(交流耦合)功率控制
├── dc_control.c DC 侧(直流耦合)功率控制
├── dispatch.c 电网调度指令响应(DNSP / 南澳 CSIP / Sunspec)
├── handler_priority 强制充放电等优先级状态处理
├── generator.c 油机(柴油发电机)启停控制
├── csip_aus.c 澳洲 CSIP-AUS 需求响应
├── self_test.c 系统自检
└── math_tools.c 定点数格式化/解析工具
data/ 数据与持久化
├── data.c EMS 故障码聚合、各类复位
├── system_config/ 系统配置表(Flash 读写)
├── resume_data/flash 断电续传数据存储
├── fault_warn_log/ 故障告警日志
└── net_event_log/ 网络事件日志
midware/ 设备中间件(协议与设备适配)
├── inverter/ 逆变器:6 家厂商协议 + 并机 + PV 充电器
│ ├── alphaess/ ginlong/ goodwe/ inovance/ kelong/ set/
│ ├── inverter.c 统一抽象层/驱动门面(313 个函数)
│ └── parallel*.c 并机通信(CAN + SCI 双通道)
├── meter/ 电表/CT/BackupBox/油机控制器 + 升级
├── bms/ 电池管理:Alpha BMS 协议 + 加热/自锁定
├── evc/ 充电桩(EVC)
├── afci/ 电弧故障保护器
├── interface/ Modbus RTU/TCP、Sunspec、干接点、DRM
├── ethernt/ 以太网(W5500)+ 无线(WIFI/4G 棒)
├── auxiliary/ 辅助任务:电量积分统计、RTC、设备功能表
└── debug/ ATE 测试、板级测试、USMART 调试 shell
hmi/ 人机界面
├── lcd.c / led.c / key.c LCD 驱动、LED、按键
└── led/ 应用层 LED 逻辑与配置
net/ 网络应用层
├── ems.c 与云端 EMS 服务器的业务协议
├── server.c 服务器链路管理
├── ems_boot_handle.c 引导/上线流程
└── *_download.c 各设备固件升级下载分发
common/ 通用工具
├── aes/md5/simple_encryption/alpha_generate_pwd 加密与密钥
├── json.c / crc.c / convert.c 数据格式与校验
├── hex_file_parse.c / s19.c 固件升级文件解析
└── usmart/ 串口调试 shell
三、uCOS-II 任务模型
全部任务在 user/main.c 的 start_task() 中静态创建,数字越小优先级越高(uCOS-II 约定)。
| 任务 | 优先级 | 栈 | 周期/触发 | 职责 |
|---|---|---|---|---|
task_system_data | 7 | 512 | 500 ms(OSSemPend 超时值,非 OSTimeDlyHMSM) | 故障码聚合、各类复位 |
task_system_aux | 8 | 512 | 400 ms | 电量积分、RTC、看门狗喂狗 |
task_meter | 9 | 256 | 300 ms | 电表/CT/BackupBox 采样 |
task_inverter | 10 | 512 | 80 ms | 逆变器 SCI 通道收发包 |
task_bms | 11 | 256 | 100 ms | 电池 CAN 通信、加热控制 |
task_system_logic_control | 12 | 512 | 280 ms | 能量调度核心计算 |
task_interface_parse | 13 | 512 | 500 ms | 干接点/DRM/接口解析 |
task_ethernet_monitor | 14 | 256 | 500 ms | 网络链路监控 |
task_inverter_can | 15 | 256 | 30 ms | 逆变器 CAN 通道 + 并机 |
task_net_app | 16 | 512 | 25 ms | 云端通信业务 |
task_ethernet | 17 | 1024 | 5 ms | 以太网收发 |
task_sampling | 18 | 256 | ADC-DMA 信号量 | 模拟量采样 |
task_modbus_rtu | 19 | 256 | UART5 信号量 | Modbus RTU 从站 |
task_parallel_sci | 20 | 256 | 100 ms / UART3 信号量 | 并机 SCI 通道 |
task_hmi_parse | 21 | 512 | 10 ms 或 100 ms(见下) | 按键/LCD/LED |
task_usmart | 22 | 512 | 100 ms | 调试 shell(受 DEBUG_SUMART 门控) |
start_task | 30 | 256 | 一次 | 创建上述任务后自挂起 |
本表已于 2026-10-15 按源码实测修正。 原表(抄自
app_cfg.h注释)有 5 处与源码循环尾部实参不一致, 已改正:task_inverter100→80、task_inverter_can50→30、task_system_logic_control300→280、task_net_app30→25、task_ethernet_monitor1000→500。以源码为准。
task_hmi_parse的周期是条件编译 + 显示类型决定的(hmi/key.c:8956-8979): 字符屏(DISPLAY_LCD_CHARACTER_E)且机型宏不是GINLONG/GOODWE/KELONG/INVERTER_NULL时为 10 ms; 其余情况为 100 ms。本明文基线INVERTER_TYPE == INVERTER_NULL,走到#else分支 ⇒ 实际 100 ms。 所以「10 ms」只在特定机型 + 字符屏组合下成立,原表写死 10 ms 是不准确的。
同步原语(user/main.c 的 event_init()):
- 信号量:
g_t_uart0..5_rcv_sem(6 路串口收)、g_t_ct_sample_sem、g_t_power_down_sem - 标志组:
g_t_fast_dispatch_flag(逻辑与逆变器之间的快速调度握手,20 tick 超时)
四、跨模块核心全局变量
这些结构体是各模块之间的实际接口,几乎每个文件都直接读写:
| 变量 | 定义位置 | 说明 |
|---|---|---|
g_t_inv_info | midware/inverter/inverter.c | 逆变器总表:配置/运行/安规/控制/命令/参数/日志/AFCI |
g_t_logic_info | logic/logic.c | 调度总表:配置表 + 三张扩展配置表 + 控制参数 + 各模式中间量 |
g_t_bat_info | midware/bms/bms.c | 电池信息(SDRAM 定位,#pragma pack(1)) |
g_t_ems_info | data/data.c | EMS 故障位图 |
g_t_system_base_info、g_system_function_info、g_system_custom_info、g_system_msg_page_id | data/system_config/system_config.c | 系统基础参数 / 功能使能位 / 自定义参数 / 消息页号(Flash 持久化) |
g_t_logic_info.t_config_data | logic/logic.h:496 | 调度配置表 LOGIC_CONFIG_TAB_T。注意它不是独立全局量,而是 LOGIC_TABLE_T 的字段 |
g_t_energy_info | midware/auxiliary/system_aux.c | 电量统计数据 |
g_t_sunspec_mudbus | midware/interface/modbus/ | Sunspec 寄存器映射表(783 项) |
g_t_meter | midware/meter/meter.c | 电表/CT 数据表 |
五、文档结构
每份 .md 统一按 7 节组织:
- 文件职责 — 该文件在系统中做什么、处在数据流哪个环节、被谁驱动
- 关键数据结构与宏 — 结构体/枚举/位域/宏 一览表
- 函数清单 — 全部函数(含
static)及一句话说明,不做抽样 - 核心逻辑解析 — 状态机迁移条件、算法公式、协议帧格式、时序、全局变量读写
- 对外接口 — 导出的函数/全局变量与调用方,以及本文件调用的外部符号
- 依赖关系 — include 了什么、被谁 include
- 备注与风险点 — 可疑写法、魔法数、越界/竞态、死代码
六、静态分析发现的主要共性问题
以下均为源码静态阅读得出的结论,未做编译与板级验证,详情与行号见各文件文档第 7 节。
1. 编译期机型开关处于"全关闭"状态(影响面最大)
midware/inverter/inverter.h:172 定义 INVERTER_TYPE = INVERTER_NULL(0),而所有厂商分支写作
#if ((INVERTER_TYPE == INVERTER_MAX) || (INVERTER_TYPE == XXX_TYPE))。
按当前 EMS_3_0.uvprojx 的宏定义(仅 USE_STDPERIPH_DRIVER, GD32F407)展开,全部厂商分支与 INV_DC_CTRL/INV_AC_CTRL 都不参与编译。若实际量产工程在别处用 -D 覆盖,本节结论需相应修正。
2. 大量跨任务共享全局变量没有互斥保护
逆变器通信任务、CAN 任务、并机任务、net/server.c、hmi/key.c 都直接读写 g_t_inv_info 等结构体,全程未使用互斥量/临界区;system_aux.c 中还存在整表 memset 重建的竞态。
3. 栈/缓冲区越界(多处,且多为外部可控输入)
common/usmart/usmart.c—u8 data[50]接收最多 256 字节 UART 数据common/s19.c/common/hex_file_parse.c— 固件文件解析无长度上界midware/evc/evc_upgrade.c—u8_evc_ii_encryption_flag[buf[0]-1]在明文帧下索引 249midware/inverter/goodwe/goodwe_upgrade.c、inovance/inovance_upgrade.c— 均为 20 字节接收缓冲配无上限长度midware/inverter/ginlong/ginlong_comm_usart.c、alphaess/alphaess_comm_usart.c— 收帧长度未与缓冲容量交叉校验midware/interface/modbus/modbus.c— TCP 0x03 响应的字节数字段用u8接收,num_reg > 127时静默截断
4. 整数除零未做保护(多处)
各厂商升级模块的百分比函数、alphaess_comm_usart.c 的降载率计算、bms.c 的电流倍率计算等,分母来自可能为 0 的通信数据。
5. 油机启停逻辑存在死角
logic/generator.c 的 switch (GeneratorMode) 没有 default 分支,NONE_MODE(0) 与枚举空洞值 3 不命中任何 case,油机不会启停。
6. 硬编码凭证与密钥
hmi/key.c 的 ADMIN_PASSWORD / INSTALLER_PASSWORD 为硬编码口令且界面不可改;common/aes.h 的 PUBLIC_KEY 硬编码在头文件;common/simple_encryption.c 的密钥流算法全机共用同一密钥。
7. 条件编译造成的"死代码腐化"
DEBUG_SUMART、MODBUS_RTU_DEBUG、E_LINKER_4G_COMM_DEBUG、DEBUG_SYSTEM_AUX 等宏长期处于关闭状态,其包裹的代码已与主线脱节(有的改 1 就编译失败),generator_charge_energy_statistics 等整个函数被 #if 0 屏蔽但接口仍对外暴露。
七、覆盖范围说明
已解析(191 个文件)
| 模块 | 文件数 |
|---|---|
common/ | 22 |
data/ | 10 |
logic/ | 18 |
net/ | 20 |
hmi/ | 12 |
midware/ | 106 |
user/ | 3 |
| 合计 | 191 |
按需求排除的底层代码
UCOSII/(RTOS 内核)、HALLIB/(GD32 标准外设库)、hardware/、system/user/gd32f4xx_it.c、user/system_gd32f4xx.c、user/gd32f4xx_libopt.h(芯片启动/中断向量/时钟配置)midware/ethernt/lan/w5500.c/.h、wizchip_conf.c/.h(W5500 芯片驱动)midware/ethernt/wireless/wifi/WM6232PU.c/.h(WiFi 模组芯片驱动)hmi/ui/(77 个菜单界面文件,按要求不纳入)
八、文档索引
按源文件目录结构组织,. 为源码相对路径的镜像(如 midware/inverter/kelong/kelong_comm.c.md 对应 midware/inverter/kelong/kelong_comm.c)。
common/ (22 个文件)
aes.c.md— 源文件common/aes.caes.h.md— 源文件common/aes.halpha_generate_pwd.c.md— 源文件common/alpha_generate_pwd.calpha_generate_pwd.h.md— 源文件common/alpha_generate_pwd.hconvert.c.md— 源文件common/convert.cconvert.h.md— 源文件common/convert.hcrc.c.md— 源文件common/crc.ccrc.h.md— 源文件common/crc.hhex_file_parse.c.md— 源文件common/hex_file_parse.chex_file_parse.h.md— 源文件common/hex_file_parse.hjson.c.md— 源文件common/json.cjson.h.md— 源文件common/json.hmd5.c.md— 源文件common/md5.cmd5.h.md— 源文件common/md5.hs19.c.md— 源文件common/s19.cs19.h.md— 源文件common/s19.hsimple_encryption.c.md— 源文件common/simple_encryption.csimple_encryption.h.md— 源文件common/simple_encryption.husmart.c.md— 源文件common/usmart/usmart.cusmart.h.md— 源文件common/usmart/usmart.husmart_str.c.md— 源文件common/usmart/usmart_str.cusmart_str.h.md— 源文件common/usmart/usmart_str.h
data/ (10 个文件)
data.c.md— 源文件data/data.cdata.h.md— 源文件data/data.hfault_warn_log.c.md— 源文件data/fault_warn_log/fault_warn_log.cfault_warn_log.h.md— 源文件data/fault_warn_log/fault_warn_log.hnet_event_log.c.md— 源文件data/net_event_log/net_event_log.cnet_event_log.h.md— 源文件data/net_event_log/net_event_log.hflash_data_store.c.md— 源文件data/resume_data/flash/flash_data_store.cflash_data_store.h.md— 源文件data/resume_data/flash/flash_data_store.hsystem_config.c.md— 源文件data/system_config/system_config.csystem_config.h.md— 源文件data/system_config/system_config.h
hmi/ (12 个文件)
key.c.md— 源文件hmi/key.ckey.h.md— 源文件hmi/key.hlcd.c.md— 源文件hmi/lcd.clcd.h.md— 源文件hmi/lcd.hled.c.md— 源文件hmi/led.cled.h.md— 源文件hmi/led.happ_led.c.md— 源文件hmi/led/app_led.capp_led.h.md— 源文件hmi/led/app_led.happ_led_cfg.c.md— 源文件hmi/led/app_led_cfg.capp_led_cfg.h.md— 源文件hmi/led/app_led_cfg.hled_dev.c.md— 源文件hmi/led/led_dev.cled_dev.h.md— 源文件hmi/led/led_dev.h
logic/ (18 个文件)
ac_control.c.md— 源文件logic/ac_control.cac_control.h.md— 源文件logic/ac_control.hcsip_aus.c.md— 源文件logic/csip_aus.ccsip_aus.h.md— 源文件logic/csip_aus.hdc_control.c.md— 源文件logic/dc_control.cdc_control.h.md— 源文件logic/dc_control.hdispatch.c.md— 源文件logic/dispatch.cdispatch.h.md— 源文件logic/dispatch.hgenerator.c.md— 源文件logic/generator.cgenerator.h.md— 源文件logic/generator.hhandle_priority.c.md— 源文件logic/handle_priority.chandle_priority.h.md— 源文件logic/handle_priority.hlogic.c.md— 源文件logic/logic.clogic.h.md— 源文件logic/logic.hmath_tools.c.md— 源文件logic/math_tools.cmath_tools.h.md— 源文件logic/math_tools.hself_test.c.md— 源文件logic/self_test.cself_test.h.md— 源文件logic/self_test.h
midware/ (106 个文件)
afci_comm.c.md— 源文件midware/afci/afci_comm.cafci_comm.h.md— 源文件midware/afci/afci_comm.hafci_upgrade.c.md— 源文件midware/afci/afci_upgrade.cafci_upgrade.h.md— 源文件midware/afci/afci_upgrade.hsystem_aux.c.md— 源文件midware/auxiliary/system_aux.csystem_aux.h.md— 源文件midware/auxiliary/system_aux.hbattery_comm.c.md— 源文件midware/bms/alpha/battery_comm.cbattery_comm.h.md— 源文件midware/bms/alpha/battery_comm.hbattery_upgrade.c.md— 源文件midware/bms/alpha/battery_upgrade.cbattery_upgrade.h.md— 源文件midware/bms/alpha/battery_upgrade.hbms.c.md— 源文件midware/bms/bms.cbms.h.md— 源文件midware/bms/bms.hate.c.md— 源文件midware/debug/ate.cate.h.md— 源文件midware/debug/ate.hboard_test.c.md— 源文件midware/debug/board_test.cboard_test.h.md— 源文件midware/debug/board_test.hdebug.c.md— 源文件midware/debug/debug.cdebug.h.md— 源文件midware/debug/debug.hshell_usmart.c.md— 源文件midware/debug/shell_usmart.cshell_usmart.h.md— 源文件midware/debug/shell_usmart.hethernet.c.md— 源文件midware/ethernt/ethernet.cethernet.h.md— 源文件midware/ethernt/ethernet.hdhcp.c.md— 源文件midware/ethernt/lan/dhcp.cdhcp.h.md— 源文件midware/ethernt/lan/dhcp.hdns.c.md— 源文件midware/ethernt/lan/dns.cdns.h.md— 源文件midware/ethernt/lan/dns.hsocket.c.md— 源文件midware/ethernt/lan/socket.csocket.h.md— 源文件midware/ethernt/lan/socket.helink_parse.c.md— 源文件midware/ethernt/wireless/elink_parse.celink_parse.h.md— 源文件midware/ethernt/wireless/elink_parse.he_linker_wifi.c.md— 源文件midware/ethernt/wireless/wifi/e_linker_wifi.ce_linker_wifi.h.md— 源文件midware/ethernt/wireless/wifi/e_linker_wifi.hwireless_driver.c.md— 源文件midware/ethernt/wireless/wireless_driver.cwireless_driver.h.md— 源文件midware/ethernt/wireless/wireless_driver.hevc.c.md— 源文件midware/evc/evc.cevc.h.md— 源文件midware/evc/evc.hevc_ii.c.md— 源文件midware/evc/evc_ii.cevc_ii.h.md— 源文件midware/evc/evc_ii.hevc_upgrade.c.md— 源文件midware/evc/evc_upgrade.cevc_upgrade.h.md— 源文件midware/evc/evc_upgrade.hdrm.c.md— 源文件midware/interface/drm/drm.cdrm.h.md— 源文件midware/interface/drm/drm.hdry_node.c.md— 源文件midware/interface/dry_node/dry_node.cdry_node.h.md— 源文件midware/interface/dry_node/dry_node.hinterface.c.md— 源文件midware/interface/interface.cinterface.h.md— 源文件midware/interface/interface.hmodbus.c.md— 源文件midware/interface/modbus/modbus.cmodbus.h.md— 源文件midware/interface/modbus/modbus.hsunspec_business.c.md— 源文件midware/interface/modbus/sunspec_business.csunspec_business.h.md— 源文件midware/interface/modbus/sunspec_business.hsunspec_modbus.c.md— 源文件midware/interface/modbus/sunspec_modbus.csunspec_modbus.h.md— 源文件midware/interface/modbus/sunspec_modbus.halphaess_comm_can.c.md— 源文件midware/inverter/alphaess/alphaess_comm_can.calphaess_comm_can.h.md— 源文件midware/inverter/alphaess/alphaess_comm_can.halphaess_comm_usart.c.md— 源文件midware/inverter/alphaess/alphaess_comm_usart.calphaess_comm_usart.h.md— 源文件midware/inverter/alphaess/alphaess_comm_usart.halphaess_upgrade.c.md— 源文件midware/inverter/alphaess/alphaess_upgrade.calphaess_upgrade.h.md— 源文件midware/inverter/alphaess/alphaess_upgrade.hginlong_comm_can.c.md— 源文件midware/inverter/ginlong/ginlong_comm_can.cginlong_comm_can.h.md— 源文件midware/inverter/ginlong/ginlong_comm_can.hginlong_comm_usart.c.md— 源文件midware/inverter/ginlong/ginlong_comm_usart.cginlong_comm_usart.h.md— 源文件midware/inverter/ginlong/ginlong_comm_usart.hginlong_upgrade.c.md— 源文件midware/inverter/ginlong/ginlong_upgrade.cginlong_upgrade.h.md— 源文件midware/inverter/ginlong/ginlong_upgrade.hgoodwe_comm.c.md— 源文件midware/inverter/goodwe/goodwe_comm.cgoodwe_comm.h.md— 源文件midware/inverter/goodwe/goodwe_comm.hgoodwe_upgrade.c.md— 源文件midware/inverter/goodwe/goodwe_upgrade.cgoodwe_upgrade.h.md— 源文件midware/inverter/goodwe/goodwe_upgrade.hinovance_comm_can.c.md— 源文件midware/inverter/inovance/inovance_comm_can.cinovance_comm_can.h.md— 源文件midware/inverter/inovance/inovance_comm_can.hinovance_comm_usart.c.md— 源文件midware/inverter/inovance/inovance_comm_usart.cinovance_comm_usart.h.md— 源文件midware/inverter/inovance/inovance_comm_usart.hinovance_upgrade.c.md— 源文件midware/inverter/inovance/inovance_upgrade.cinovance_upgrade.h.md— 源文件midware/inverter/inovance/inovance_upgrade.hinverter.c.md— 源文件midware/inverter/inverter.cinverter.h.md— 源文件midware/inverter/inverter.hkelong_comm.c.md— 源文件midware/inverter/kelong/kelong_comm.ckelong_comm.h.md— 源文件midware/inverter/kelong/kelong_comm.hkelong_upgrade.c.md— 源文件midware/inverter/kelong/kelong_upgrade.ckelong_upgrade.h.md— 源文件midware/inverter/kelong/kelong_upgrade.hparallel.c.md— 源文件midware/inverter/parallel.cparallel.h.md— 源文件midware/inverter/parallel.hparallel_can.c.md— 源文件midware/inverter/parallel_comm/parallel_can.cparallel_can.h.md— 源文件midware/inverter/parallel_comm/parallel_can.hparallel_sci.c.md— 源文件midware/inverter/parallel_comm/parallel_sci.cparallel_sci.h.md— 源文件midware/inverter/parallel_comm/parallel_sci.hpvcharger.c.md— 源文件midware/inverter/pvcharger.cpvcharger.h.md— 源文件midware/inverter/pvcharger.hset_comm_can.c.md— 源文件midware/inverter/set/set_comm_can.cset_comm_can.h.md— 源文件midware/inverter/set/set_comm_can.hset_comm_usart_s5.c.md— 源文件midware/inverter/set/set_comm_usart_s5.cset_comm_usart_s5.h.md— 源文件midware/inverter/set/set_comm_usart_s5.hset_upgrade_s5.c.md— 源文件midware/inverter/set/set_upgrade_s5.cset_upgrade_s5.h.md— 源文件midware/inverter/set/set_upgrade_s5.hbackupbox.c.md— 源文件midware/meter/backupbox.cbackupbox.h.md— 源文件midware/meter/backupbox.hbb_update.c.md— 源文件midware/meter/bb_update.cbb_update.h.md— 源文件midware/meter/bb_update.hct.c.md— 源文件midware/meter/ct.cct.h.md— 源文件midware/meter/ct.hdiesel_generator.c.md— 源文件midware/meter/diesel_generator.cdiesel_generator.h.md— 源文件midware/meter/diesel_generator.hmeter.c.md— 源文件midware/meter/meter.cmeter.h.md— 源文件midware/meter/meter.hmeter_upgrade.c.md— 源文件midware/meter/meter_upgrade.cmeter_upgrade.h.md— 源文件midware/meter/meter_upgrade.h
net/ (20 个文件)
afci_download.c.md— 源文件net/afci_download.cafci_download.h.md— 源文件net/afci_download.hbms_download.c.md— 源文件net/bms_download.cbms_download.h.md— 源文件net/bms_download.hems.c.md— 源文件net/ems.cems.h.md— 源文件net/ems.hems_boot_handle.c.md— 源文件net/ems_boot_handle.cems_boot_handle.h.md— 源文件net/ems_boot_handle.hems_download.c.md— 源文件net/ems_download.cems_download.h.md— 源文件net/ems_download.hevc_download.c.md— 源文件net/evc_download.cevc_download.h.md— 源文件net/evc_download.hinv_download.c.md— 源文件net/inv_download.cinv_download.h.md— 源文件net/inv_download.hmeter_download.c.md— 源文件net/meter_download.cmeter_download.h.md— 源文件net/meter_download.hserver.c.md— 源文件net/server.cserver.h.md— 源文件net/server.hupd_download.c.md— 源文件net/upd_download.cupd_download.h.md— 源文件net/upd_download.h
user/ (3 个文件)
main.c.md— 源文件user/main.cmain.h.md— 源文件user/main.hversion.c.md— 源文件user/version.c