Repository navigation
嵌入式工具箱 v1.21.1:交付体检修正(verify v1.16.1 / lookup v1.11.0)
嵌入式工具箱 v1.21.1:交付体检修正(verify v1.16.1 / lookup v1.11.0)
这一版是"上架前全面体检"的修正版:修掉 1 个规则误报、补齐闭环提示、消除静默与陈旧文案。
功能面(查/验能力)与 v1.21.0 相同,行为更严谨。
一、E13 覆盖判定修正(重要)
- 初版 E13(v1.16.0)只要"寄存器含写 1 清零(oneToClear)位域"就报——体检时正样本集
EXTI->PR |= EXTI_PR_P0 | EXTI_PR_P1;(唯一 W1C 位 P0 已被掩码提到)被误报。 - 修正为只有当写 1 清零位未被本次写入掩码覆盖时才报:读改写会把"没被掩码提到、但当前
已置位"的标志顺带清零(写 1 = 清零),这才是真正会丢中断的情形;掩码明确提到的位是代码
本意要动的,不算误伤。- 会报:
UART0->UARTICR |= 0x10;(UARTICR 有 TXIC/RTIC 两个 W1C 位,只提到 TXIC);
EXTI->PR |= EXTI_PR_P0;(P1..P15 未提到)。 - 不会报:
UART0->UARTICR = 0x10;(直写);UART0->UARTICR |= TXIC_Msk | RTIC_Msk;
(掩码覆盖全部 W1C 位);ADSR |= ADF_Msk;(唯一 W1C 位被提到)。 - 未判定:读改写掩码无法静态求值(如
REG |= flags;变量)——无法确认覆盖范围,不猜。
- 会报:
- 正样本集回到 0 报(55 文件 117 处写入)。
二、闭环提示(lookup v1.11.0)
lookup寄存器视图新增"读改写提示":写 1 清零寄存器会显示"读改写会把读回时已置位的标志
一并写回(写 1 = 清零),可能顺带清掉没提到的标志;清标志请直写目标标志"——与核验器 E13
的next命令("查看该寄存器的写语义")形成闭环。decode --write/set的 oneToClear 提示同步精确化(原为通用"可能误改状态位")。
三、消除静默与陈旧文案(verify v1.16.1)
--define坏值不再静默:值明显无法求值(不含任何标识符 → 不可能引用其它宏)时给警告
"该宏按未定义处理"。verify rules、verify --help、README 的"E01–E11"陈旧文案全部更新为"E01–E13"。
四、全面体检记录(交付上架前)
- CLI 边界矩阵 50 用例:两工具全部子命令 + 异常输入(文件/SVD 不存在、SVD 是目录、
非 XML/截断 SVD、无参数、未知子命令、坏地址/坏值、字段不存在、坏--headers、坏
--define、空文件、BOM+CRLF、GBK 注释、中文/空格路径、空目录、补丁文件不存在)——
退出码与 JSON 有效性全部符合预期,错误信息带[E_*]代码与提示。 - 闭环命令逐字执行:E13 finding 的
next(结构化{tool, args, reason})逐字跑通,
lookup 输出写语义与读改写提示。 - 安装副本:中性目录运行正常(无 cwd 依赖)。
- 交付文件扫描:无绝对路径泄漏(D:\ / C:\Users)、无 eval/exec/compile 等禁用 API、
仅标准库。 - 语料零回归:九生态(ESP-IDF 224/0/34/190、TI 363/0/300/63、libopencm3 366/3/287/76、
AVR 33/0/2/31、SAMD 49/0/22/27、Renesas 36/0/26/10、Silabs 309/0/218/91、NXP 3/0/1/2)+
pico-sdk 47/0/14/33 全部与上版一致。 - 405 项测试全过;召回 229/229;性能 0.030s/1000 行(目标 ≤ 2.0s)。
安装(不变)
- Claude Code:
/plugin marketplace add liujycode/embedded-toolkit后/plugin install embedded-toolkit@embedded-toolkit - 其他 Agent:
npx skills add liujycode/embedded-toolkit