Files
STM32F4-Base/.gitignore
T
wandering1 1355dbe1b1 fix(cfg): 配置热重载吞段缺陷修复 + 两点标定工具链与台架实测落档
修复运行期改配置被打回出厂值的缺陷:cfg_file_poll() 按段循环复用同一
份读缓冲,而 s_parse() 通过 s_split_line()/s_key_value() 就地改写缓冲
(把换行与等号换成 NUL)。第一个段解析完,缓冲里已没有键值行,后续 7
个段静默保持出厂值;随后 run_par_store_save() 又把这份出厂值写回
config.ini,用户的标定值被永久覆盖。开机路径 cfg_file_load() 只解析一
轮,所以该缺陷长期不可见,只在运行中改配置时发作。

- s_parse() 改为非破坏性:入参 const char *,逐行 memcpy 到栈缓冲
  (CFG_LINE_TEST_MAX + 1)后再交给会破坏缓冲的解析子函数;超长行跳
  过(保存侧已拒绝落盘超长受管键行)。
- 新增 TC-CONFIG-063:同时改两段内容,断言第二个注册段也重载成功、
  含负值 INT 键存活,把「热重载吞段」钉成机器面。

新增两点标定台架工具链(test/host/):
- cal_two_point.py:整数算术镜像 adc_cal_two_point(),支持单路模式与
  从执行卡 CALDATA 表批量求解(--from-doc),带合法带与零点自检拦截。
- cal_write.py:复用 iec104_master 作库,经 104 定值段写 r 后写 b 并
  读回校验,是所有写入的唯一入口。

adc_task 的 meas: 心跳行精度提到 4 位小数,标定读数需要。

文档:新增《采样数据校正全流程》(端到端导航)与《ADC 两点标定执行
流程》(台架执行卡,含 CALDATA 可填表);ADC通道映射说明新增 §7.3 台
架实测结果(UA 554.687914、IA 29.634259,出厂默认值保持不变);配置
文件设计说明新增解析器契约 v1.19;采集与算法层设计说明 §13 系列与
README 索引同步。

台架实测:UA r=554.687914(出厂 1000.0 偏大 1.80 倍,根因是接线分压
使 PT 一次侧只拿到一半电压,实测与参数算定 606.06 只差 8.5%)、IA
r=29.634259(与出厂 29.4118 只差 0.76%,反证链路未算错)。UN 按用户
裁定本轮不标定,保护闭锁(vl=0x11)是预期行为,未伪造 VALID。

同时入库 .dsh/roles 角色定义(原被 .gitignore 挡住)。
2026-11-13 01:35:58 +08:00

185 lines
6.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Keil MDK - Build artifacts
*.o
*.d
*.crf
*.axf
*.hex
*.map
*.lnp
*.dep
# Keil UV4 预处理列表文件("Generate preprocessed source file" 选项产生的构建中间物,勿入库)
*__i
*._ia
*.build_log.htm
*.htm
*.log
*.lst
*.dep
.workbuddy-ai/
# Keil MDK - Build log (regenerated by keil_build.py)
MDK-ARM/build_log.txt
# legacy: download.bat removed 2026-10-10; entry kept so stale leftovers on
# other machines do not surface as untracked files
MDK-ARM/download_log.txt
MDK-ARM/err.txt
MDK-ARM/out.txt
MDK-ARM/ret.txt
# Keil MDK - IDE settings (user-specific)
*.uvoptx
*.uvguix.*
# Keil MDK - Debug config
*.dbgconf
# Keil MDK - RTE auto-generated
MDK-ARM/RTE/
# STM32CubeMX (keep .ioc, it's the project source)
# *.ioc
# CubeMX 重生成时自动产生的旧文件备份(Src/Backup/、Inc/Backup/)——
# 纯本地临时物,内容 = 重生成前的快照;入库只会造成无意义的提交抖动
Src/Backup/
Inc/Backup/
# Visual Studio / IDE
.vs/
.vscode/
*.suo
*.njsproj
*.sln
*.suo
*.user
*.opensdf
*.cache
# Windows
Thumbs.db
ehthumbs.db
*.tmp
*.temp
# Linux / Mac
.DS_Store
# LVGL - Unused directories (only src/ is compiled)
Lib/lvgl/demos/
Lib/lvgl/tests/
Lib/lvgl/docs/
Lib/lvgl/libs/
Lib/lvgl/scripts/
Lib/lvgl/env_support/
Lib/lvgl/examples/
Lib/lvgl/.github/
Lib/lvgl/.devcontainer/
Lib/lvgl/zephyr/
Lib/lvgl/xmls/
Lib/lvgl/configs/
# LVGL - Build system files not needed for Keil
# NOTE: Lib/lvgl/CMakeLists.txt is REQUIRED by the PC simulator (simulator/),
# so it is tracked despite being a build-system file. Do not re-ignore it.
Lib/lvgl/CMakePresets.json
Lib/lvgl/component.mk
Lib/lvgl/idf_component.yml
Lib/lvgl/Kconfig
Lib/lvgl/library.json
Lib/lvgl/library.properties
Lib/lvgl/lvgl.mk
Lib/lvgl/lvgl.pc.in
Lib/lvgl/SConscript
Lib/lvgl/sconscript
# LVGL PC Simulator - build artifacts
simulator/build/
sim_dbg.log
# 模拟器宿主侧产物(lvgl_sim.exe / 测试脚本在 CWD 生成,不入库):
# sim_config.ini = net_cfg_load 首启工厂默认落盘;sim_*.log = syslog 后端宿主文件
sim_config.ini
sim_run.log
sim_selftest.log
# LVGL PC Simulator - screenshot outputs (generated, see simulator/i1_to_png.py)
simulator/shot*.png
simulator/shot*.bin
simulator/*.ppm
simulator/__pycache__/
# LVGL PC Simulator - SDL2 SDK (downloaded, see docs/UI 设计/LVGL模拟器部署与使用说明.md §3.1 与 docs/项目部署环境要求.md 第 3 步)
simulator/SDL2/
# Binary / large files
*.bin
# 主机侧单元测试产物(MSVC 中间物;test/host/**/run_unit_test.py 正常写 %TEMP%,
# 但手工直接调 cl.exe 调试时可能落在 CWD。统一兜底忽略)
*.obj
*.exe
*.pdb
*.ilk
# 内容页像素黄金参考 ref/*.bin **已入库**(2026-10-22):整目录不入库时,任何新克隆 /
# 新工作树跑 ui-golden 都必然 FAIL(缺基准),这条像素回归就只在老机器上真实存在。
# 交叉验证:两份各自独立构建的 lvgl_sim(不同构建目录、相隔 11 天的代码)对同一批 ref
# 逐字节一致 → 渲染可复现,基线可入库。派生的目检 PNG 仍是本地产物,继续忽略:
simulator/tests/ref/*.png
# ⚠ 上面第 115 行的全仓 `*.bin` 兜底(挡模拟器的 sim_netcfg.bin 之类运行产物)会连入库的
# 黄金参考一起挡掉 → 必须显式反选;反选只有排在 `*.bin` **之后**才生效(.gitignore 后者覆盖前者)
!simulator/tests/ref/*.bin
# 架构图 PNG 预览(源为 docs/images/*.svg,PNG 本地渲染生成,不入库)
docs/images/*.png
*.pyc
# Python venv (unified env, see AGENTS.md "Python 环境"; rebuild via requirements.txt)
.venv/
# Serial assistant runtime state (daemon log/meta, local runtime artifacts)
.dsh/skills/serial-assistant/scripts/state/
# agent 会话草稿(2026-10-14 定):提交信息草稿 / 门禁输出 / 台架日志 / 一次性改名
# 脚本 / 故障注入 patch —— 一律不入库,**而且不落仓库根**(写进 ci-artifacts/ 或系统临时
# 目录:2026-10-28 清理仓库根时那里堆着四个一次性计数改名脚本 + 一份提交信息草稿,全是
# 未跟踪的 ?? —— 一次 git add -A 就进历史;仓库根只留工程配置与生成器输入两份 .txt)。
# 判据三条,命中任一就不值得留:
# ① 能重跑的(门禁输出、日志);② 内容已在 git 历史里的(已合并实现的过程 diff);
# ③ 离开已丢弃的任务分支就跑不通的(依赖 NET_FAULT_INJECT 的注入产物)——
# 这种提交进去是"看着有证据、实际不可复现"的假证据,**方法应沉淀成文档文字**
# (见 docs/网络/网络自愈架构设计.md §5.2 E18/E19)。
# ⚠ .dsh/skills/ 是**入库的项目知识**(skills = 子域方法论),必须放行。
.dsh/*
!.dsh/skills/
!.dsh/roles/
# 记忆工具(Mnemon)本地状态:项目文档索引 documents/ + 运行时记忆
# runtime/MEMORY.md、USER.md、memories.json。**只留本机、不进版本库**
# (2026-10-11 定):记忆是按机器/按人累积的私有状态,入库会让每次记忆
# 写入都变成提交抖动,还可能带出本机绝对路径与个人偏好。
.mnemon/
# CI 运行时产物(.gitea/workflows/ci.yml 的 S3 步骤在 runner 工作区落盘的日志;
# 零依赖存档方案——落在工作区目录而非上传 artifact,故必须忽略以免误提交)
# 子进程环境残缺时 Windows 会按字面量建目录(本会话实测两次复发:UV4 / 字体
# 工具在缺 SystemDrive、ProgramData 的环境里于仓库根创建
# %SystemDrive%/ProgramData/Microsoft/Windows/Caches/*.db,约 1 MB 字体缓存库)。
# 与"一次性中间产物不进 .gitignore"那条教训不同:这是任何一条道随时可能再生的环境
# 副产物,不兜住就会被某次 git add -A 带进历史。正解仍是继承完整环境跑这类工具。
%SystemDrive%/
ci-artifacts/
# 提交信息草稿的兜底反选(上一条草稿块的「不入库」靠人自觉把文件写进 ci-artifacts/,
# 但 `git commit -F` 那份文件随手落在仓库根就会以 ?? 出现,被某次 add -A 带走):
# 正文已经进了 commit message,落盘副本零信息量 → 根目录锚定挡掉这个命名。
/commitmsg*.txt
# DSH worktree 插件(dsh-task-worktree)把任务树建在**仓库内**这个命名空间下,与
# @task skill 的仓外 _wt/ 两套并存。这一行必须**先由我们自己写好**:插件首次 create
# 会往 .gitignore 追加分毫不相同的字面量(ensureIgnored 见同名规则即跳过),但那等于
# 在会话中途改这份受控文件——门禁 diff 里冒出一行"不是我加的"最坑人。
# 该目录同时登记进了 check_doc_links / gen_refgraph / check_layer_deps 的排除面
# (整份仓库副本不能进全库扫描);细节 → .dsh/skills/task-worktree/SKILL.md
.dsh-worktrees/
.obsidian/