bda7ab2b50
批 2(用户授权改名 + 「新名要一眼看懂」裁定)
- 16 个有歧义模块码单词化,共 1,146 处随 scripts/rename_ids.py 改写:
AI→ADCIN、AH→ADCHEALTH、PS→PROTSET、PE→PROTELEM、PH→PHASOR、
TS→TIMESYNC、VL→VOLLOCK、NP→NANDPORT、CFG→CONFIG、CLK→SYSCLK、
WD→WATCHDOG、STO→STORAGE、SH→SHA256、FA→FTPAUTH、FR→FREQ、104→IEC104
- 不动 NET/GD5F/RTC/SOE/UI/ADC/LOG/RS485/TOOL(已是单词、芯片名或业界通用词,
改了纯属 churn)
- 别名按全局登记:这批字面量已完全限定(TC-<码>-<nnn>),不存在裸形多义
- 映射表存档 scripts/rename_maps/batch2.json 作审计轨迹;§6 模块码表同步
连带修门禁(关键教训)
- 模块码涨到 9 位(ADCHEALTH/WATCHDOG)后,候选正则与族正则的 {0,4} 上界
会让改名后的号**整批从门禁眼里消失**:实测编号字面量从 8271 掉到 7315、
悬空假降 490 处。已放宽到 {0,9} 并写进 §6 注记
- 结论:改名批次必须连带复核识别面,只改数据不改判据 = 静默放行;
这次是靠「可判定比例跌破基线即失败」那条线拦下来的
现状与遗留
- 校验 1 未登记前缀 0 处;可判定比例 82.71%(基线 82.6%,只涨不跌成立)
- 遗留:7 个模块的「单元测试说明.md」仍缺(PROTSET 116、NANDPORT 109、
PROTELEM 65、FREQ 48、FTPAUTH 45、SHA256 25、SOE 14 处悬空)——改名不解决
缺文档,处置方式待议
- 遗留:T-2/T-3/T-4/T-6 历史任务号悬空(别名表未收全,属本工具批次漏项)
- 未改任何 C/H 可编译语义(仅注释与宏名内的编号),故不需 @build
Drivers/BSP/GD5F2GQ5UE/ — GD5F2GQ5UE SPI NAND 驱动 + FTL
256MB SPI NAND Flash 驱动,以及之上的 FTL(Flash 转换层,
nand_ftl.c)—— 提供逻辑块映射、坏块管理、磨损均衡。再上层是 dhara(坏块/磨损算法)与 FatFs。
文件一览
| 文件 | 作用 |
|---|---|
gd5f2gq5ue.c/h |
NAND 芯片底层驱动:读/写/擦除、页/块管理、ID 与状态查询 |
nand_ftl.c/h |
FTL 层:逻辑地址 → 物理地址映射、坏块表、磨损均衡 |
硬件接口
- SPI1:PE0 CS / PB3 SCK / PB4 MISO / PB5 MOSI / PB8 WP / PE1 HOLD
三层存储栈
FatFs(文件系统)
↓
dhara(坏块管理 + 磨损均衡算法,Lib/dhara/)
↓
nand_ftl.c(本目录,FTL 适配)
↓
gd5f2gq5ue.c(本目录,芯片驱动)
↓
GD5F2GQ5UE 芯片
⚠️ 改本驱动前必读陷阱
| 陷阱 | 说明 |
|---|---|
| FatFs 打开模式 | FA_OPEN_APPEND(0x30) 不含 FA_WRITE(0x02)——追加写必须 FA_WRITE|FA_OPEN_APPEND,否则 f_write 恒返 FR_DENIED(7) |
| FatFs 文件名 | 严格 8.3 短名、不得以点开头(.fschk 会 FR_INVALID_NAME,纯 RAM 判定不碰盘);自愈逻辑严禁把名字类错误归入"卷损坏"触发集 |
f_write 簇分配失败返回 FR_OK + 短写 |
判失败必须校验写回字节数(无错误码) |
| 禁用 C 库堆分配 | MicroLIB 堆仅 512B,malloc 必返回 NULL;用 pvPortMalloc/vPortFree |
完整台账见
docs/问题记录/GD5F2GQ5UE_Trap_Records.md。
相关文档
- 存储架构:
docs/架构设计/STM32F4-Base存储架构说明.md - 测试指南:
docs/测试说明/GD5F2GQ5UE_Test_Guide.md - 容量恢复:
docs/测试说明/存储维护与容量恢复.md