d59c2198eb
新增 App/algo/adc_input.c/h(L1 采集与预处理层,落实 L1-3/L1-4):
- L1-4 语义通道映射表 k_adc_map[]:UA/UN/IA → TPAFE buf[6]/[5]/[2];
UB/UC/IB/IC/IN/TEMP → STM32 ADC1 CH14/3/6/1/2/5。消费侧一律经
adc_input_raw() 按语义取数,不写死下标(V0.2 改版只改表内容)。
- L1-3 STM32 ADC1 9 通道软件触发顺序扫描:HAL_ADC_Start + 逐通道
PollForConversion/GetValue(EOC_SINGLE_CONV + 无 DMA,可逐通道轮询)。
- adc_input_poll() 统一"TPAFE 原子快照 + STM32 扫描";
adc_input_init() 做映射自检(STM32 映射通道必落在扫描序列内,否则
返回 -1),挡住"映射到不扫描的通道 → 恒读陈旧值"的静默错。
集成:
- adc_task.c 取数改走 L1 层(首帧日志补全 8 路 + 温度;心跳增
adc1_rc/adc1_err 观测 STM32 侧健康度)。
- app_main.c 在 tpafe5160_init() 之后调 adc_input_init(),失败记
SYSLOG_SELFTEST("ADC map fault")。
- Keil 工程挂 adc_input.c 并加 ../App/algo 包含路径。
- 文档同步:继电保护规划 §1.2/§3.1(L1-3/L1-4 改 ✅)、ADC通道映射说明
§7/§8/§9、产品需求 §5.9/§9、架构总览 §7、AGENTS.md、App/README.md、
App/task/README.md、新增 App/algo/README.md、boot_log_data 清单。
验证:
- @build 0 错 0 警;镜像无源文件新于 hex。
- 台架 @test PASS:ADC input layer init OK、adc1_rc=0/adc1_err=0
(30 s ≈27 万次转换零超时)、seq 仍 1000.0 Hz、adc 栈峰值
528→584 B(余 71%)、回读一致、零 [ERR]/HardFault。
证据 docs/测试说明/boot_log_data/20261010_prod_adc_l1_boot_log.txt
- 内存快照已刷新(Flash 269,404→270,712 B)。
MDK-ARM/ — Keil MDK-ARM v5 工程与构建/烧录/探针脚本
唯一工具链:Keil MDK-ARM v5(ARMCC,C99)。本目录含工程文件、启动文件、 命令行构建/烧录脚本,以及台架探针与判读脚本。
关键文件
| 文件/目录 | 作用 |
|---|---|
STM32F407-Demo.uvprojx |
Keil 工程文件(源文件清单、编译选项、目标配置) |
STM32F407-Demo.uvoptx |
Keil 用户选项(调试器、断点等) |
startup_stm32f407xx.s |
启动文件(Heap_Size EQU 0x200(512B)在此限定) |
build.bat |
@build 命令行编译(退出码 0=0 错 0 警;日志 build_log.txt) |
download.bat |
烧录(UV4 路径) |
reset.bat |
复位/烧录(ST-LINK_CLI,见下) |
构建与烧录
# 编译(相对路径,勿用绝对路径)
& "MDK-ARM\build.bat" # 退出码 0 = 0 errors, 0 warnings
# 烧录 + 复位运行(推荐路径)
& "MDK-ARM\reset.bat" flash <文件.hex|.bin>
# 仅复位
& "MDK-ARM\reset.bat"
⚠️ 烧录铁律
reset.bat flash=ST-LINK_CLI -c SWD -P <文件> -Rst -Run——-Rst -Run不可省略! 裸-P会报Programming Complete,但目标核处于异常状态时写入并不落地(芯片内容不变)- 烧录后必须回读校验:
ST-LINK_CLI -c SWD -CmpFile <文件> 0x08000000(No difference found才算真写入) - 本机 3 线接线(nRST 未接),只重启不烧录用
reset.bat无参
台架探针与判读脚本
| 脚本 | 作用 |
|---|---|
bench_verdict.py |
台架判读(把运行结果判为 PASS/FAIL) |
ftp_freeze_probe.py |
FTP 上传+回读哈希(真实路径冻结探针) |
ftp_abort_probe.py |
FTP 中止场景探针(Trap 23) |
ftp_retr_abort_probe.py |
FTP RETR 中止探针 |
tcp_reconnect_probe.py |
TCP 快速复连探针(Trap 22) |
audit_runs.py / audit_tcpclient.py |
运行记录审计 / TCP 客户端审计 |
check_crecipe_content.py |
检查创建配方内容 |
子目录
| 目录 | 内容 |
|---|---|
RTE/ |
Keil Run-Time Environment 配置 |
DebugConfig/ |
调试会话配置 |
STM32F407-Demo/ |
构建输出(.o/.axf/.map 等,产物不提交) |
bench_diag/ |
台架诊断数据 |
retracted_bench_20260922/ |
已撤回的台架数据(存证) |
⚠️ 注意
- 工具路径经
DTU_*环境变量解析(DTU_KEIL_UV4= UV4.exe 完整路径,DTU_STLINK_CLI= ST-LINK_CLI.exe 完整路径;换机设变量即可,无需改脚本;契约见docs/环境与部署/本地工具路径环境变量方案.md) - 本目录被 pre-commit 门禁排除
- 启动文件的
Heap_Size = 512B是自研代码禁用malloc的根因(见AGENTS.md)
相关文档
- 烧录/复位:
docs/测试说明/ST-LINK_CLI_复位使用说明.md - 构建与验证:根
AGENTS.md「构建与验证」章 - 测试流程:
docs/测试说明/自动化测试流程.md