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_parse | common/hex_file_parse.c | ../../common/hex_file_parse.c.md |
| HEX 解析结果结构体、记录类型码枚举、解析状态枚举在哪定义 | HEX_FILE_T、HEX_CODE、PARSE_STATE_E | common/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_file | common/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_PCK | common/s19.h | ../../common/s19.h.md |
| ASCII 十六进制串转成二进制字节流(固件数据解码) | hex_ascii_to_bin | common/convert.c | ../../common/convert.c.md |
| 单个十六进制字符转 4 位半字节 | ascii_to_hex | common/convert.c | ../../common/convert.c.md |
| 云端下发的 32 字符 MD5 十六进制串还原成 16 字节 | hex_ascii_to_bin | common/convert.c | ../../common/convert.c.md |
| 十六进制转换函数的原型声明在哪个头文件 | ascii_to_hex、hex_ascii_to_bin | common/convert.h | ../../common/convert.h.md |
加密与摘要算法
EMS 里唯一的 AES、MD5、自有流式加密与「一机一密」密钥派生实现,全部是纯计算、无状态工具函数,由调用任务同步执行。
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| EMS 与充电桩加密通信用的 AES 实现在哪 | AESInit、AESEncrypt、AESDecrypt | common/aes.c | ../../common/aes.c.md |
| AES 密钥长度怎么选(AES-128/192/256)、ECB/CBC 模式 | AESInit、AES_data_Init、AESInfo_t | common/aes.c | ../../common/aes.c.md |
| AES 加解密是否支持就地操作、CBC 链式模式 | AESEncrypt、AESDecrypt | common/aes.c | ../../common/aes.c.md |
| 充电桩「一机一密」协商用的公钥常量、AES 上下文全局数组 | PUBLIC_KEY、AESInfo_t、aesInfo[]、aes_key[] | common/aes.h | ../../common/aes.h.md |
| 动态登录密码 / 服务器配置校验值用哪个哈希 | MD5Init、MD5Update、MD5Final | common/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_CTX | common/md5.h | ../../common/md5.h.md |
| 私有/自建服务器明文传输时,协议帧数据域的混淆算法 | Encrypt、decrypt | common/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、decrypt | common/simple_encryption.h | ../../common/simple_encryption.h.md |
| Wi-Fi 一机一密 8 位接入密钥怎么算出来 | alpha_generate_pwd | common/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_pwd | common/alpha_generate_pwd.h | ../../common/alpha_generate_pwd.h.md |
CRC 校验
全工程「凡是帧/记录需要校验和」的统一入口:MID 层各设备通信帧、网络层收发报文、数据层落盘结构(配置页、故障日志、网络事件日志、断电续传记录)都用这几个函数。
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| Modbus CRC16 怎么算(初值 0xFFFF) | GetCrcCode_Modbus | common/crc.c | ../../common/crc.c.md |
| 初值为 0x0000 的反射 CRC16 | GetCrcCode_IBM | common/crc.c | ../../common/crc.c.md |
| 可以自己指定初值的反射 CRC16 | GetCrcCode_CRC16 | common/crc.c | ../../common/crc.c.md |
| 8 位 Dallas/Maxim(CRC-8/MAXIM)校验 | GetCrcCode_8_MAXIM | common/crc.c | ../../common/crc.c.md |
| 分段/流式累加计算 CRC(传中间值继续迭代一字节) | get_data_crc_check | common/crc.c | ../../common/crc.c.md |
| CRC 查表用的静态只读表在哪 | wCRC8_Table、wCRCTable、auchCRCHi、auchCRCLo | common/crc.c | ../../common/crc.c.md |
| 有哪些模块在调用通用 CRC(数据层、中间件层、网络层) | GetCrcCode_Modbus、GetCrcCode_8_MAXIM、get_data_crc_check | common/crc.h | ../../common/crc.h.md |
JSON 报文取值
不是完整 JSON 解析器,而是把 JSON 当普通字符串用 strstr() 抠字段。入站解析的唯一公共入口,json_get_value() 全工程外部调用点约 260 处(几乎都在 net/server.c 的 handle_special_cmd() 系列里)。
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 从云端/上位机下发的 JSON 里抠一个带引号的字符串字段 | json_get_value | common/json.c | ../../common/json.c.md |
| 从 JSON 里抠一个不带引号的数值字段 | json_get_int_len_input | common/json.c | ../../common/json.c.md |
| 判断一个字符串是不是 JSON 报文(首尾大括号粗校验) | json_check | common/json.c | ../../common/json.c.md |
| 把 "YYYY/MM/DD HH:MM:SS" 形式的时间串拆成年/月/日/时/分/秒 | json_get_time_value_from_fw_temp | common/json.c | ../../common/json.c.md |
| 取值时带长度保护(防目的缓冲溢出)的变体 | json_get_value_check_len_input、json_get_int_len_input | common/json.c | ../../common/json.c.md |
| 定义了但头文件没声明、且全工程没人调用的 JSON 取值函数 | json_check_value | common/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_exe | common/usmart/usmart.c | ../../common/usmart/usmart.c.md |
| USMART 初始化(TIMER3 时基、默认显示进制) | usmart_init | common/usmart/usmart.c | ../../common/usmart/usmart.c.md |
| 函数执行耗时怎么测(0.1 ms 单位) | usmart_get_runtime、usmart_reset_runtime | common/usmart/usmart.c | ../../common/usmart/usmart.c.md |
| TIMER3 溢出中断驱动 usmart 周期扫描 | TIMER3_IRQHandler | common/usmart/usmart.c | ../../common/usmart/usmart.c.md |
| 内置系统命令 help / list / id / hex / dec / runtime | usmart_sys_cmd_exe | common/usmart/usmart.c | ../../common/usmart/usmart.c.md |
| 调试自测函数(打印 TIMER3 的 CNT/ARR) | usmart_test | common/usmart/usmart.c | ../../common/usmart/usmart.c.md |
按绝对地址读写内存(默认不编译,受 USMART_USE_WRFUNS 控制) | read_addr、write_addr | common/usmart/usmart.c | ../../common/usmart/usmart.c.md |
整行实参解析,把参数按类型打包进 parm[] | usmart_get_fparam、usmart_get_aparm | common/usmart/usmart_str.c | ../../common/usmart/usmart_str.c.md |
| 从函数声明串解析裸函数名与形参个数 | usmart_get_fname | common/usmart/usmart_str.c | ../../common/usmart/usmart_str.c.md |
| 第 num 个参数在参数缓冲里的起始偏移 | usmart_get_parmpos | common/usmart/usmart_str.c | ../../common/usmart/usmart_str.c.md |
| 文本转数字(自动识别十进制 / 0X 前缀十六进制) | usmart_str2num | common/usmart/usmart_str.c | ../../common/usmart/usmart_str.c.md |
| 自实现的 strcmp/strcopy/strlen(注意语义与标准库不同) | usmart_strcmp、usmart_strcopy、usmart_strlen | common/usmart/usmart_str.c | ../../common/usmart/usmart_str.c.md |
| USMART 函数注册表 / 设备实例结构体与行为开关宏 | _m_usmart_nametab、_m_usmart_dev、MAX_PARM、PARM_LEN | common/usmart/usmart.h | ../../common/usmart/usmart.h.md |
| 文本解析层有哪些函数被声明(有 3 个实现未声明) | usmart_get_fparam、usmart_get_aparm、usmart_str2num | common/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() 在哪、上电先做什么 | main | user/main.c | ../../user/main.c.md |
| 15 个应用任务在哪里创建、优先级怎么排 | start_task(OSTaskCreateExt 批量创建) | user/main.c | ../../user/main.c.md |
| 串口/采样/掉电信号量与快调度事件标志组在哪创建 | event_init | user/main.c | ../../user/main.c.md |
| 各任务运行计数/状态结构在哪定义 | g_t_task_run_status | user/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_EVENT | DEBUG_OS_EVENT | user/main.h | ../../user/main.h.md |
| 固件型号 + 软件版本号 + 编译时间字符串在哪 | BUILD_INFO | user/version.c | ../../user/version.c.md |
防止 BUILD_INFO 被链接器优化掉的引用函数(当前不参与编译) | keep_build_info | user/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_code | data/data.c | ../../data/data.c.md |
| EMS 故障位序号枚举(30 个故障位)与三种访问视图 | EMS_FAULT_E、EMS_FAULT_U、EMS_TAB_T、g_t_ems_info | data/data.h | ../../data/data.h.md |
| 恢复出厂设置怎么触发、为什么延时 40 s 才软复位 | factory_reset、factory_reset_handle | data/data.c | ../../data/data.c.md |
| 清电表与 CT 累计电量 | meter_reset | data/data.c | ../../data/data.c.md |
| 能量统计清零(逆变器/电池/BMS 能量) | energy_reset、energy_reset_handle | data/data.c | ../../data/data.c.md |
| 自定义配置复位 | custom_info_reset、custom_info_reset_handle | data/data.c | ../../data/data.c.md |
| EMS 软复位请求 | set_ems_reset、ems_reset_handle | data/data.c | ../../data/data.c.md |
| 擦除断电续传运行数据 | resume_flash_reset、erase_flash_handle | data/data.c | ../../data/data.c.md |
| EEPROM 硬件/软件 读写故障怎么汇总成 EMS 故障位 | eeprom_fault_handle、clear_eeprom_fault_temp | data/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_data | data/fault_warn_log/fault_warn_log.c | ../../data/fault_warn_log/fault_warn_log.c.md |
| 一条故障记录怎么进 RAM 缓存、什么时候刷进 Flash | save_error_log_data_to_cache、save_error_log_data_to_flash | data/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_end | data/fault_warn_log/fault_warn_log.c | ../../data/fault_warn_log/fault_warn_log.c.md |
| 云平台确认收到日志后怎么推进发送指针(ACK) | set_error_log_data_send_ok_true | data/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_len | data/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_code | data/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_code | data/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_string | data/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_save | data/fault_warn_log/fault_warn_log.c | ../../data/fault_warn_log/fault_warn_log.c.md |
| 整片擦除故障日志(工厂复位用) | error_log_data_clear、erase_error_log | data/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_flag | data/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_flag | data/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_T | data/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_END | data/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_data | data/net_event_log/net_event_log.c | ../../data/net_event_log/net_event_log.c.md |
| 事件日志读取成 JSON 文本上报 | read_event_log_data | data/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_init | data/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_stNetEventLogInfo | data/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_flash | data/net_event_log/net_event_log.c | ../../data/net_event_log/net_event_log.c.md |
| 事件记录写入越过环尾时怎么回绕 | write_event_log_data_to_flash | data/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_data | data/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_U | data/system_config/system_config.h | ../../data/system_config/system_config.h.md |
| 上电时怎么把全部配置从 Flash 恢复进 RAM(失败回退出厂值) | system_info_restore | data/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_init | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 逻辑配置(充放电策略)出厂值与恢复、老版本字段兜底 | logic_config_info_init、logic_config_info_restore | data/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 及对应 restore | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 电表配置出厂值与恢复、分相累计电量 | meter_config_info_init、meter_config_info_restore | data/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_restore | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 逆变器配置出厂值与恢复(型号、硬件版本、安全法规) | inverter_config_info_init、inverter_config_info_restore | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 网络配置(IP / DHCP 方式)出厂值与恢复 | net_info_init、net_ip_method_init、net_info_restore | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| Modbus 配置出厂值与恢复(地址、波特率、Sunspec 版本) | modbus_config_info_init、modbus_config_info_restore | data/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_restore | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 能量统计(发电/用电/充放电量)出厂值与恢复 | energy_info_init、energy_info_restore、save_energy_data | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 干接点(Dry Node)配置出厂值与恢复 | dry_node_info_init、dry_node_info_restore | data/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_restore | data/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_restore | data/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_restore | data/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_flag | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 配置改完怎么异步落盘(保存队列 + 去重位图) | save_job_init、save_job_post、save_job_pend、SaveJob_Q | data/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_data | data/system_config/system_config.c | ../../data/system_config/system_config.c.md |
| 保存去重位图用的原子操作(LDREX/STREX)在哪 | atomic_check_and_set_bit、atomic_clear_bit | data/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_ASSERT | data/system_config/system_config.h | ../../data/system_config/system_config.h.md |
| 功能开关位(系统功能 / 设备功能 / 并机设备功能)联合体在哪 | SYSTEM_FUNCTION1_U、SYSTEM_FUNCTION2_U、DEVICE_FUNCTION_U、PARALLELISMDEVICE_FUNCTION_U | data/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_save | data/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_data | data/resume_data/flash/flash_data_store.c | ../../data/resume_data/flash/flash_data_store.c.md |
落盘记录的二进制布局与记录大小(ParaTab 400 B / ParaTab2 398 B) | ParaTab、ParaTab2 | data/resume_data/flash/flash_data_store.h | ../../data/resume_data/flash/flash_data_store.h.md |
| 运行数据在 SPI Flash 里占哪段地址(写指针备份区 + 主区 + 扩展区) | FlashDataAddr、FlashDataAddrInfo | data/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_init | data/resume_data/flash/flash_data_store.c | ../../data/resume_data/flash/flash_data_store.c.md |
| 模块初始化与 CSV 表头构建 | store_data_init、store_search_title_pack_csv | data/resume_data/flash/flash_data_store.c | ../../data/resume_data/flash/flash_data_store.c.md |
| 云端下发「Resume」指令后补报历史数据的主循环 | resume_data_handle | data/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_end | data/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_addr | data/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_NAME | data/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_data2 | data/resume_data/flash/flash_data_store.c | ../../data/resume_data/flash/flash_data_store.c.md |
| 上电发现「有头无尾」残包时怎么处理(是否擦整片) | verify_end_code | data/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_Current | data/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_info | data/resume_data/flash/flash_data_store.c | ../../data/resume_data/flash/flash_data_store.c.md |
| 导出缓冲与断点续传任务描述结构 | resume_buff_sdram、RESUME_BUFFER_T | data/resume_data/flash/flash_data_store.h | ../../data/resume_data/flash/flash_data_store.h.md |
| 调试打印当前查找到的一条记录全部字段 | show_search_data | data/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和无调用点而不参与实际业务链路,已在对应小节标注。