EMS 知识库
首页 / knowledge/代码解析/索引/功能索引

common / data / user 功能反查索引

覆盖源文件:35 个(common/ 22 个、data/ 10 个、user/ 3 个)。文档本体见 docs/knowledge/代码解析/common/、docs/knowledge/代码解析/data/、docs/knowledge/代码解析/user/。 用法:在「想找的功能」列里搜关键词,即可定位到源文件。

固件升级文件解析与格式转换

覆盖「云端下发固件文本 → 拆成地址/数据 → 按目标设备协议重新组帧下发」这一链路的公共解析层。三个使用者:midware/evc/evc_upgrade.c(充电桩)、midware/meter/bb_update.c(电表)、midware/inverter/kelong/kelong_upgrade.c(科隆逆变器),以及 BMS 侧的 midware/bms/alpha/battery_upgrade.c(走 S-Record)。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
Intel HEX 固件一行文本怎么拆成长度/地址/记录类型/数据/校验hex_parsecommon/hex_file_parse.c../../common/hex_file_parse.c.md
HEX 解析结果结构体、记录类型码枚举、解析状态枚举在哪定义HEX_FILE_T、HEX_CODE、PARSE_STATE_Ecommon/hex_file_parse.h../../common/hex_file_parse.h.md
哪些设备的固件升级走 .hex 文本解析hex_parse(调用方 evc_upgrade / bb_update / kelong_upgrade)common/hex_file_parse.c../../common/hex_file_parse.c.md
Motorola S-Record(.s19)一行怎么解析parsing_upgrade_filecommon/s19.c../../common/s19.c.md
BMS 电池固件升级逐行取数、按 CAN 协议分包下发parsing_upgrade_file(调用方 battery_upgrade.c 的 SEND_UPGRADE_DATA 状态)common/s19.c../../common/s19.c.md
S19 解析状态枚举与包结构定义在哪S19_FILE_PASRE_STATUS_E、S19_FILE_PASRE_PCKcommon/s19.h../../common/s19.h.md
ASCII 十六进制串转成二进制字节流(固件数据解码)hex_ascii_to_bincommon/convert.c../../common/convert.c.md
单个十六进制字符转 4 位半字节ascii_to_hexcommon/convert.c../../common/convert.c.md
云端下发的 32 字符 MD5 十六进制串还原成 16 字节hex_ascii_to_bincommon/convert.c../../common/convert.c.md
十六进制转换函数的原型声明在哪个头文件ascii_to_hex、hex_ascii_to_bincommon/convert.h../../common/convert.h.md

加密与摘要算法

EMS 里唯一的 AES、MD5、自有流式加密与「一机一密」密钥派生实现,全部是纯计算、无状态工具函数,由调用任务同步执行。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
EMS 与充电桩加密通信用的 AES 实现在哪AESInit、AESEncrypt、AESDecryptcommon/aes.c../../common/aes.c.md
AES 密钥长度怎么选(AES-128/192/256)、ECB/CBC 模式AESInit、AES_data_Init、AESInfo_tcommon/aes.c../../common/aes.c.md
AES 加解密是否支持就地操作、CBC 链式模式AESEncrypt、AESDecryptcommon/aes.c../../common/aes.c.md
充电桩「一机一密」协商用的公钥常量、AES 上下文全局数组PUBLIC_KEY、AESInfo_t、aesInfo[]、aes_key[]common/aes.h../../common/aes.h.md
动态登录密码 / 服务器配置校验值用哪个哈希MD5Init、MD5Update、MD5Finalcommon/md5.c../../common/md5.c.md
固件镜像摘要比对,判断 Boot / EMS / 各设备固件要不要刷写MD5Init、MD5Update、MD5Final(调用方 ems_boot_handle / ems_download / upd_download)common/md5.c../../common/md5.c.md
MD5 上下文结构体(栈上分配、可重入)在哪定义MD5_CTXcommon/md5.h../../common/md5.h.md
私有/自建服务器明文传输时,协议帧数据域的混淆算法Encrypt、decryptcommon/simple_encryption.c../../common/simple_encryption.c.md
什么条件下才启用简单加密(TLS 之外的兜底私密性)Encrypt、decrypt(见 midware/ethernt/ethernet.c 服务器表)common/simple_encryption.c../../common/simple_encryption.c.md
流式加密解密必须严格字节同步(错一字节后面全乱)Encrypt、decryptcommon/simple_encryption.h../../common/simple_encryption.h.md
Wi-Fi 一机一密 8 位接入密钥怎么算出来alpha_generate_pwdcommon/alpha_generate_pwd.c../../common/alpha_generate_pwd.c.md
易联(E-Linker)模组写密钥流程alpha_generate_pwd(调用方 e_linker_wifi.c)common/alpha_generate_pwd.c../../common/alpha_generate_pwd.c.md
一机一密密钥缓冲长度常量(含 \0)ALPHA_GENERATE_PWD_LENGTH、alpha_generate_pwdcommon/alpha_generate_pwd.h../../common/alpha_generate_pwd.h.md

CRC 校验

全工程「凡是帧/记录需要校验和」的统一入口:MID 层各设备通信帧、网络层收发报文、数据层落盘结构(配置页、故障日志、网络事件日志、断电续传记录)都用这几个函数。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
Modbus CRC16 怎么算(初值 0xFFFF)GetCrcCode_Modbuscommon/crc.c../../common/crc.c.md
初值为 0x0000 的反射 CRC16GetCrcCode_IBMcommon/crc.c../../common/crc.c.md
可以自己指定初值的反射 CRC16GetCrcCode_CRC16common/crc.c../../common/crc.c.md
8 位 Dallas/Maxim(CRC-8/MAXIM)校验GetCrcCode_8_MAXIMcommon/crc.c../../common/crc.c.md
分段/流式累加计算 CRC(传中间值继续迭代一字节)get_data_crc_checkcommon/crc.c../../common/crc.c.md
CRC 查表用的静态只读表在哪wCRC8_Table、wCRCTable、auchCRCHi、auchCRCLocommon/crc.c../../common/crc.c.md
有哪些模块在调用通用 CRC(数据层、中间件层、网络层)GetCrcCode_Modbus、GetCrcCode_8_MAXIM、get_data_crc_checkcommon/crc.h../../common/crc.h.md

JSON 报文取值

不是完整 JSON 解析器,而是把 JSON 当普通字符串用 strstr() 抠字段。入站解析的唯一公共入口,json_get_value() 全工程外部调用点约 260 处(几乎都在 net/server.c 的 handle_special_cmd() 系列里)。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
从云端/上位机下发的 JSON 里抠一个带引号的字符串字段json_get_valuecommon/json.c../../common/json.c.md
从 JSON 里抠一个不带引号的数值字段json_get_int_len_inputcommon/json.c../../common/json.c.md
判断一个字符串是不是 JSON 报文(首尾大括号粗校验)json_checkcommon/json.c../../common/json.c.md
把 "YYYY/MM/DD HH:MM:SS" 形式的时间串拆成年/月/日/时/分/秒json_get_time_value_from_fw_tempcommon/json.c../../common/json.c.md
取值时带长度保护(防目的缓冲溢出)的变体json_get_value_check_len_input、json_get_int_len_inputcommon/json.c../../common/json.c.md
定义了但头文件没声明、且全工程没人调用的 JSON 取值函数json_check_valuecommon/json.c../../common/json.c.md
JSON 报文长度基准宏、5 个取值函数的声明在哪MAX_LEN_JSON_CONNENT、json_get_value 等common/json.h../../common/json.h.md

串口在线调试(USMART)

ALIENTEK USMART V3.1 串口调试组件,可用「函数名(参数,...)」文本直接调用固件里的已注册函数并回显返回值与耗时。注意 DEBUG_SUMART 当前为 0(midware/debug/shell_usmart.h:13),发布固件里整个组件编译后为空。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
串口输入函数名就能调用固件函数(调试通道主扫描入口)usmart_scan、usmart_cmd_rec、usmart_execommon/usmart/usmart.c../../common/usmart/usmart.c.md
USMART 初始化(TIMER3 时基、默认显示进制)usmart_initcommon/usmart/usmart.c../../common/usmart/usmart.c.md
函数执行耗时怎么测(0.1 ms 单位)usmart_get_runtime、usmart_reset_runtimecommon/usmart/usmart.c../../common/usmart/usmart.c.md
TIMER3 溢出中断驱动 usmart 周期扫描TIMER3_IRQHandlercommon/usmart/usmart.c../../common/usmart/usmart.c.md
内置系统命令 help / list / id / hex / dec / runtimeusmart_sys_cmd_execommon/usmart/usmart.c../../common/usmart/usmart.c.md
调试自测函数(打印 TIMER3 的 CNT/ARR)usmart_testcommon/usmart/usmart.c../../common/usmart/usmart.c.md
按绝对地址读写内存(默认不编译,受 USMART_USE_WRFUNS 控制)read_addr、write_addrcommon/usmart/usmart.c../../common/usmart/usmart.c.md
整行实参解析,把参数按类型打包进 parm[]usmart_get_fparam、usmart_get_aparmcommon/usmart/usmart_str.c../../common/usmart/usmart_str.c.md
从函数声明串解析裸函数名与形参个数usmart_get_fnamecommon/usmart/usmart_str.c../../common/usmart/usmart_str.c.md
第 num 个参数在参数缓冲里的起始偏移usmart_get_parmposcommon/usmart/usmart_str.c../../common/usmart/usmart_str.c.md
文本转数字(自动识别十进制 / 0X 前缀十六进制)usmart_str2numcommon/usmart/usmart_str.c../../common/usmart/usmart_str.c.md
自实现的 strcmp/strcopy/strlen(注意语义与标准库不同)usmart_strcmp、usmart_strcopy、usmart_strlencommon/usmart/usmart_str.c../../common/usmart/usmart_str.c.md
USMART 函数注册表 / 设备实例结构体与行为开关宏_m_usmart_nametab、_m_usmart_dev、MAX_PARM、PARM_LENcommon/usmart/usmart.h../../common/usmart/usmart.h.md
文本解析层有哪些函数被声明(有 3 个实现未声明)usmart_get_fparam、usmart_get_aparm、usmart_str2numcommon/usmart/usmart_str.h../../common/usmart/usmart_str.h.md
调试代码当前是否参与编译(DEBUG_SUMART 开关)DEBUG_SUMART(midware/debug/shell_usmart.h:13)common/usmart/usmart.c../../common/usmart/usmart.c.md

启动流程与固件版本

固件唯一入口、全部任务与信号量的创建点,以及可被发布脚本反查的版本字符串。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
固件入口 main() 在哪、上电先做什么mainuser/main.c../../user/main.c.md
15 个应用任务在哪里创建、优先级怎么排start_task(OSTaskCreateExt 批量创建)user/main.c../../user/main.c.md
串口/采样/掉电信号量与快调度事件标志组在哪创建event_inituser/main.c../../user/main.c.md
各任务运行计数/状态结构在哪定义g_t_task_run_statususer/main.c../../user/main.c.md
中断与任务之间同步用的信号量句柄声明在哪(extern 单例)main.h 里的 8 个信号量 + 1 个事件标志组(extern)user/main.h../../user/main.h.md
串口 ISR / 掉电 EXTI / CT 采样中断 从哪拿到信号量句柄user/main.h 的 extern 句柄(被 20 个源文件引用)user/main.h../../user/main.h.md
事件对象调试宏 DEBUG_OS_EVENTDEBUG_OS_EVENTuser/main.h../../user/main.h.md
固件型号 + 软件版本号 + 编译时间字符串在哪BUILD_INFOuser/version.c../../user/version.c.md
防止 BUILD_INFO 被链接器优化掉的引用函数(当前不参与编译)keep_build_infouser/version.c../../user/version.c.md
从产出的 .bin 反查是哪份源码、什么时候编译BUILD_INFO(读取方 net/ems.c 的 fill_send_info())user/version.c../../user/version.c.md

EMS 故障字与复位请求

data/data.c 是「系统数据任务 + 全局复位请求分发器」:把耗时的 Flash 擦除/重初始化从按键、网络、Modbus 等上下文中剥离,改为置标志、由低频任务串行执行。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
系统数据任务在哪、多久跑一次task_system_data(等掉电信号量,500 tick 超时周期)data/data.c../../data/data.c.md
EMS 侧故障字怎么置位、怎么整字读取ems_set_fault_bit、ems_read_fault_codedata/data.c../../data/data.c.md
EMS 故障位序号枚举(30 个故障位)与三种访问视图EMS_FAULT_E、EMS_FAULT_U、EMS_TAB_T、g_t_ems_infodata/data.h../../data/data.h.md
恢复出厂设置怎么触发、为什么延时 40 s 才软复位factory_reset、factory_reset_handledata/data.c../../data/data.c.md
清电表与 CT 累计电量meter_resetdata/data.c../../data/data.c.md
能量统计清零(逆变器/电池/BMS 能量)energy_reset、energy_reset_handledata/data.c../../data/data.c.md
自定义配置复位custom_info_reset、custom_info_reset_handledata/data.c../../data/data.c.md
EMS 软复位请求set_ems_reset、ems_reset_handledata/data.c../../data/data.c.md
擦除断电续传运行数据resume_flash_reset、erase_flash_handledata/data.c../../data/data.c.md
EEPROM 硬件/软件 读写故障怎么汇总成 EMS 故障位eeprom_fault_handle、clear_eeprom_fault_tempdata/data.c../../data/data.c.md
复位请求接口的函数原型在哪声明meter_reset、factory_reset、set_ems_reset 等 6 个data/data.h../../data/data.h.md

故障 / 告警日志

以固定采样快照差分的方式,把 EMS/BMS/逆变器/充电桩/电表-BB 箱的故障位、告警位、保护位变化翻译成带时间戳的故障码记录,写入 SPI Flash 环形区,并同时供给云平台上传与 LCD 历史界面。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
故障/告警日志模块的周期总入口(谁在调它)error_log_data_handle(由 task_system_data 每轮调用)data/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
故障位变化怎么被检测出来(13 组位域差分扫描)save_error_log_datadata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
一条故障记录怎么进 RAM 缓存、什么时候刷进 Flashsave_error_log_data_to_cache、save_error_log_data_to_flashdata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
故障日志打包成 CSV 帧上传云平台upload_error_log_data_package、pack_error_log_data_enddata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
云平台确认收到日志后怎么推进发送指针(ACK)set_error_log_data_send_ok_truedata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
LCD 历史故障界面读取最近 N 条记录get_history_error_log_data(上限 50 条)data/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
LCD 主界面滚动故障码 FIFO 怎么压入/移除/读取put_errcode、release_errcode、get_show_errcode、lcd_get_errcode_buf_lendata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
LCD 主界面故障码是否需要刷新判定lcd_get_errcode_buf_judgment_flag、update_lcd_mainui_app_show_error_codedata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
BMS / 逆变器 / 附件(充电桩)显示掩码怎么合成package_display_error_code、get_bms_display_error_code、get_inv_display_error_code、get_accessories_display_error_codedata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
故障码翻译成 CSV 字段(设备类型 / 子类型 / 等级 / 状态)get_error_device_type_string、get_error_device_subtype_string、get_error_level_string、get_error_state_stringdata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
故障日志模块初始化、地址三扇区恢复与地址备份error_log_data_init、error_log_data_addr_restore、error_log_data_addr_savedata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
整片擦除故障日志(工厂复位用)error_log_data_clear、erase_error_logdata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
EEPROM 页读写故障标志怎么置位/取用set_eeprom_fault_flag、get_eeprom_hardware_read_fault_flag、get_eeprom_hardware_write_fault_flag、get_eeprom_software_read_fault_flag、get_eeprom_software_write_fault_flagdata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
电池加热故障标志怎么置/清/读set_bat_heat_fault_flag、read_bat_heat_fault_flagdata/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md
故障码常量表、落盘记录结构体、LCD 故障码 FIFO 类型在哪定义ERROR_CODE_E、ERROR_DEVICE_TYPE_E、ERROR_TYPE_E、STORE_ERROR_LOG_DATA_T、ERRCODE_FIFO_T、ERROR_LOG_TABLE_Tdata/fault_warn_log/fault_warn_log.h../../data/fault_warn_log/fault_warn_log.h.md
故障日志 Flash 分区地址与环形区大小(备份扇区 + 396 KB)ERROR_LOG_DATA_RECORD_ADDR、ERROR_LOG_DATA_RECORD_ENDdata/fault_warn_log/fault_warn_log.h../../data/fault_warn_log/fault_warn_log.h.md

网络 / 系统事件日志

把以太网链路、DHCP、DNS、Socket、心跳失败、心跳复位、OSQ 处理失败、EthTask/EMSTask 超时、严重故障复位共 10 类系统事件按「置位码/清零码」配对写入 Flash 事件日志环形区。当前版本整个模块已编译但无调用点(触发源在 midware/ethernt/ethernet.c)。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
以太网 / DHCP / DNS / Socket / 心跳失败等系统事件怎么检测并落盘scan_system_event、save_event_log_datadata/net_event_log/net_event_log.c../../data/net_event_log/net_event_log.c.md
事件日志读取成 JSON 文本上报read_event_log_datadata/net_event_log/net_event_log.c../../data/net_event_log/net_event_log.c.md
事件日志模块初始化(地址恢复 + 事件码表生成)event_log_init、event_log_addr_init、event_log_tab_initdata/net_event_log/net_event_log.c../../data/net_event_log/net_event_log.c.md
事件日志 Flash 分区地址、11 字节记录结构(0x55AA + CRC16)、写指针备份EVENT_LOG_ADDR_START、EVENT_LOG_ADDR_END、g_stNetEventLogInfodata/net_event_log/net_event_log.h../../data/net_event_log/net_event_log.h.md
事件记录写指针三元冗余表决恢复event_log_addr_init、write_event_log_addr_to_flashdata/net_event_log/net_event_log.c../../data/net_event_log/net_event_log.c.md
事件记录写入越过环尾时怎么回绕write_event_log_data_to_flashdata/net_event_log/net_event_log.c../../data/net_event_log/net_event_log.c.md
网络模块在哪里写事件状态位g_stNetEventLogInfo(写方 midware/ethernt/ethernet.c)data/net_event_log/net_event_log.h../../data/net_event_log/net_event_log.h.md
事件日志模块对外只暴露哪些函数(其余为内部使用)event_log_init、scan_system_event、read_event_log_datadata/net_event_log/net_event_log.h../../data/net_event_log/net_event_log.h.md

配置持久化(EEPROM 模拟 Flash 页)

data/system_config/ 是全部配置数据的落盘与还原中枢:出厂值初始化、上电恢复、异步保存调度三件事,页面固定在内部 Flash 4071~4095 号 4 KB 扇区。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
各类配置分别存在 Flash 的哪一页(4071~4095 页分配表)SYSTEM_STARTE_PAGE、SYSTEM_DATA_BACKUP_PAGE、MESSAGES_SIZE、SYSTEM_MESSAGES_PAGE_ID_Udata/system_config/system_config.h../../data/system_config/system_config.h.md
上电时怎么把全部配置从 Flash 恢复进 RAM(失败回退出厂值)system_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
恢复出厂设置时写哪些页、调用链是什么24 个出厂值初始化函数(如 logic_config_info_init、meter_config_info_init、bat_config_info_init)data/system_config/system_config.c../../data/system_config/system_config.c.md
SN / 安装商密码 / 语言页的出厂值与恢复system_sn_init、system_sn_restore、ui_info_initdata/system_config/system_config.c../../data/system_config/system_config.c.md
逻辑配置(充放电策略)出厂值与恢复、老版本字段兜底logic_config_info_init、logic_config_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
时间控制 14 段充放电配置的 3 组扩展页logic_config_extend1_info_init、logic_config_extend2_info_init、logic_config_extend3_info_init 及对应 restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
电表配置出厂值与恢复、分相累计电量meter_config_info_init、meter_config_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
电池配置与电池扩展(12 节单体版本/平台/SN)bat_config_info_init、bat_config_info_restore、bat_extend_config_info_init、bat_extend_config_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
逆变器配置出厂值与恢复(型号、硬件版本、安全法规)inverter_config_info_init、inverter_config_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
网络配置(IP / DHCP 方式)出厂值与恢复net_info_init、net_ip_method_init、net_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
Modbus 配置出厂值与恢复(地址、波特率、Sunspec 版本)modbus_config_info_init、modbus_config_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
CT 配置校准表与 CT 累计电量ct_config_info_init、ct_config_info_restore、ct_energy_info_init、ct_energy_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
能量统计(发电/用电/充放电量)出厂值与恢复energy_info_init、energy_info_restore、save_energy_datadata/system_config/system_config.c../../data/system_config/system_config.c.md
干接点(Dry Node)配置出厂值与恢复dry_node_info_init、dry_node_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
EVC 一代充电桩配置与充电参数(优先级/相数/电流)evc_config_info_init、evc_config_info_restore、evc_setting_info_init、evc_setting_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
EVC 二代 4 路充电桩配置的出厂值与恢复evc_ii_single_config_info1_init、evc_ii_single_config_info2_init、evc_ii_single_config_info3_init、evc_ii_single_config_info4_init 及对应的 evc_ii_single_config_info1_restore、evc_ii_single_config_info2_restore、evc_ii_single_config_info3_restore、evc_ii_single_config_info4_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
自定义配置页与它的备份页(4088 / 4090)system_custom_info_init、system_custom_info_restore、system_custom_backup_info_init、system_custom_backup_info_restoredata/system_config/system_config.c../../data/system_config/system_config.c.md
4095 系统备份页与 4071/4075/4077 的互救逻辑system_backup_info_init、system_backup_info_restore、get_backup_data_refresh_flagdata/system_config/system_config.c../../data/system_config/system_config.c.md
配置改完怎么异步落盘(保存队列 + 去重位图)save_job_init、save_job_post、save_job_pend、SaveJob_Qdata/system_config/system_config.c../../data/system_config/system_config.c.md
保存任务队列由谁真正消费(每 500 ms 拉一次写 Flash)system_config_data_save(由 task_system_data 调用)data/system_config/system_config.c../../data/system_config/system_config.c.md
一次性投递能量/CT 电量/电表三页保存任务save_energy_datadata/system_config/system_config.c../../data/system_config/system_config.c.md
保存去重位图用的原子操作(LDREX/STREX)在哪atomic_check_and_set_bit、atomic_clear_bitdata/system_config/system_config.c../../data/system_config/system_config.c.md
落盘结构体(基础参数/自定义参数/系统备份)的内存布局与扇区对齐约束SYSTEM_BASE_PARA_T、STSTEM_CUSTOM_PARA_T、SYSTEM_BACKUP_TABLE_T、STATIC_ASSERTdata/system_config/system_config.h../../data/system_config/system_config.h.md
功能开关位(系统功能 / 设备功能 / 并机设备功能)联合体在哪SYSTEM_FUNCTION1_U、SYSTEM_FUNCTION2_U、DEVICE_FUNCTION_U、PARALLELISMDEVICE_FUNCTION_Udata/system_config/system_config.h../../data/system_config/system_config.h.md
出厂初始化 / 上电恢复 / 异步保存三组函数原型在哪声明出厂初始化函数(如 logic_config_info_init、evc_ii_single_config_info4_init)、system_info_restore、save_job_post、save_energy_data、system_config_data_savedata/system_config/system_config.h../../data/system_config/system_config.h.md

运行数据落盘与断点续传

data/resume_data/flash/ 每 60 秒把一百多个实时量打包成 400 字节记录写进 SPI Flash 主运行数据区,并按云端下发的「起始时间 + 时长」二分查找历史记录、转 CSV 补报。

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
每 60 秒把实时运行数据打包落盘(总调度)store_run_data、store_run_table1_data、store_run_table2_datadata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
落盘记录的二进制布局与记录大小(ParaTab 400 B / ParaTab2 398 B)ParaTab、ParaTab2data/resume_data/flash/flash_data_store.h../../data/resume_data/flash/flash_data_store.h.md
运行数据在 SPI Flash 里占哪段地址(写指针备份区 + 主区 + 扩展区)FlashDataAddr、FlashDataAddrInfodata/resume_data/flash/flash_data_store.h../../data/resume_data/flash/flash_data_store.h.md
写指针三扇区冗余备份与上电三取二恢复store_data_addr、store_data_addr_init、store_data_initdata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
模块初始化与 CSV 表头构建store_data_init、store_search_title_pack_csvdata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
云端下发「Resume」指令后补报历史数据的主循环resume_data_handledata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
断点续传发送状态机与分包send_search_data、Pack_search_data_to_csv、Pack_resume_data_buf_head_enddata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
按时间在 Flash 运行区做二分查找定位记录地址store_bin_search_data_addr、get_start_time_addr、get_end_time_addr、store_search_sector_first_head_addrdata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
一条记录转成一行 CSV 文本(字段名索引与表头)store_search_data_pack_csv、PARAMETER_INDEX_TABLE、GET_VARIABLE_NAMEdata/resume_data/flash/flash_data_store.h../../data/resume_data/flash/flash_data_store.h.md
记录完整性判定(起始码 AA55、00 B4 结束码、CRC16)packet_head、packet_end、read_search_data、read_search_data2data/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
上电发现「有头无尾」残包时怎么处理(是否擦整片)verify_end_codedata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
擦除整片运行数据区并重置写指针erase_run_data(上层入口 resume_flash_reset)data/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
断点续传状态机的读写接口Get_Resume_Status_Current、Set_Resume_Status_Currentdata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
云端下发的续传指令 ID 缓存(10 个槽)get_resume_cmd_id_code、set_resume_cmd_id_code、get_resume_index_length、g_resume_infodata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md
导出缓冲与断点续传任务描述结构resume_buff_sdram、RESUME_BUFFER_Tdata/resume_data/flash/flash_data_store.h../../data/resume_data/flash/flash_data_store.h.md
调试打印当前查找到的一条记录全部字段show_search_datadata/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md

文件清单核对

本范围共 35 个源文件,全部已在上面表格中出现(✓ 后括注所在小节的表格中对应行所归属的源文件路径)。

源文件文档是否已在表中出现
common/aes.c../../common/aes.c.md已在表中出现(加密与摘要算法)
common/aes.h../../common/aes.h.md已在表中出现(加密与摘要算法)
common/alpha_generate_pwd.c../../common/alpha_generate_pwd.c.md已在表中出现(加密与摘要算法)
common/alpha_generate_pwd.h../../common/alpha_generate_pwd.h.md已在表中出现(加密与摘要算法)
common/convert.c../../common/convert.c.md已在表中出现(固件升级文件解析与格式转换)
common/convert.h../../common/convert.h.md已在表中出现(固件升级文件解析与格式转换)
common/crc.c../../common/crc.c.md已在表中出现(CRC 校验)
common/crc.h../../common/crc.h.md已在表中出现(CRC 校验)
common/hex_file_parse.c../../common/hex_file_parse.c.md已在表中出现(固件升级文件解析与格式转换)
common/hex_file_parse.h../../common/hex_file_parse.h.md已在表中出现(固件升级文件解析与格式转换)
common/json.c../../common/json.c.md已在表中出现(JSON 报文取值)
common/json.h../../common/json.h.md已在表中出现(JSON 报文取值)
common/md5.c../../common/md5.c.md已在表中出现(加密与摘要算法)
common/md5.h../../common/md5.h.md已在表中出现(加密与摘要算法)
common/s19.c../../common/s19.c.md已在表中出现(固件升级文件解析与格式转换)
common/s19.h../../common/s19.h.md已在表中出现(固件升级文件解析与格式转换)
common/simple_encryption.c../../common/simple_encryption.c.md已在表中出现(加密与摘要算法)
common/simple_encryption.h../../common/simple_encryption.h.md已在表中出现(加密与摘要算法)
common/usmart/usmart.c../../common/usmart/usmart.c.md已在表中出现(串口在线调试(USMART))
common/usmart/usmart.h../../common/usmart/usmart.h.md已在表中出现(串口在线调试(USMART))
common/usmart/usmart_str.c../../common/usmart/usmart_str.c.md已在表中出现(串口在线调试(USMART))
common/usmart/usmart_str.h../../common/usmart/usmart_str.h.md已在表中出现(串口在线调试(USMART))
data/data.c../../data/data.c.md已在表中出现(EMS 故障字与复位请求)
data/data.h../../data/data.h.md已在表中出现(EMS 故障字与复位请求)
data/fault_warn_log/fault_warn_log.c../../data/fault_warn_log/fault_warn_log.c.md已在表中出现(故障 / 告警日志)
data/fault_warn_log/fault_warn_log.h../../data/fault_warn_log/fault_warn_log.h.md已在表中出现(故障 / 告警日志)
data/net_event_log/net_event_log.c../../data/net_event_log/net_event_log.c.md已在表中出现(网络 / 系统事件日志)
data/net_event_log/net_event_log.h../../data/net_event_log/net_event_log.h.md已在表中出现(网络 / 系统事件日志)
data/resume_data/flash/flash_data_store.c../../data/resume_data/flash/flash_data_store.c.md已在表中出现(运行数据落盘与断点续传)
data/resume_data/flash/flash_data_store.h../../data/resume_data/flash/flash_data_store.h.md已在表中出现(运行数据落盘与断点续传)
data/system_config/system_config.c../../data/system_config/system_config.c.md已在表中出现(配置持久化(EEPROM 模拟 Flash 页))
data/system_config/system_config.h../../data/system_config/system_config.h.md已在表中出现(配置持久化(EEPROM 模拟 Flash 页))
user/main.c../../user/main.c.md已在表中出现(启动流程与固件版本)
user/main.h../../user/main.h.md已在表中出现(启动流程与固件版本)
user/version.c../../user/version.c.md已在表中出现(启动流程与固件版本)

说明:user/main.h 本身不声明任何函数,仅以 extern 暴露 8 个 uCOS-II 信号量句柄、1 个事件标志组句柄与宏 DEBUG_OS_EVENT,因此在其小节中以「句柄声明位置」的形式出现;common/usmart/* 与 data/net_event_log/* 在当前发布配置下分别因 DEBUG_SUMART == 0 和无调用点而不参与实际业务链路,已在对应小节标注。