Files
ai_soc_sw/.ai/knowledge/patterns.md
T
tupingr 3d43cd87d5 feat: 项目架构重构 - hwd32h757芯片成片测试及SDK开发
- 从errlens模板(3角色)重构为1人+Arch AI+Worker AI(2角色)
- 去掉review仓库/QA AI/Dev AI分离,Worker AI统一负责开发+测试
- 新增33个功能单元目录(Test/cases/),按P0-P6七阶段bring-up
- 新增SDK驱动层骨架(Drivers/CMSIS/HAL_Driver/BSP)
- Arch AI/Worker AI角色不绑定特定AI平台,任何AI可随时接手
- 5个ADR:测试驱动SDK演进、HAL/LL双层、分阶段bring-up、单仓库、角色可替换
- 参考errlens的分层信息架构:dashboard→card→task,token预算控制
2026-05-27 16:37:52 +08:00

53 lines
1.9 KiB
Markdown

# 可复用模式
## 目的
记录开发过程中发现的可持续复用的模式和做法。
---
## P-001: 测试→LL→HAL 提炼路径
**上下文**: 每个功能单元从寄存器测试到最终 SDK 驱动的演进
**问题**: 测试代码和 SDK 驱动如何衔接,避免重复劳动
**方案**: 三步提炼路径:
1. **寄存器测试代码** → 直接操作寄存器地址和位域,验证功能正确性
2. **LL 层提炼** → 将测试中的寄存器操作封装为内联函数+宏,零开销
3. **HAL 层封装** → 在 LL 层之上加句柄+状态机+回调,高抽象可移植
**关键约束**: 测试代码必须结构化(用宏封装寄存器操作,不用硬编码地址),否则提炼成本极高
**何时用**: 每个功能单元完成后
**何时不用**: 纯软件功能(无寄存器操作)
---
## P-002: 勘误驱动规避
**上下文**: 芯片 bring-up 中发现的硅缺陷
**问题**: 如何让 SDK 驱动自动规避已知勘误
**方案**:
1. 勘误记录在 Test/errata/ 中,结构化格式(影响外设、触发条件、规避方法)
2. LL 层代码中在受影响操作处加 workaround 注释
3. HAL 层代码中自动执行规避逻辑(对调用方透明)
**何时用**: 发现勘误后立即记录,LL/HAL 代码同步更新
**何时不用**: 确认无硅缺陷的功能
---
## P-003: 跨 AI 上下文交接
**上下文**: 不同 AI 可能在不同时间、不同平台介入同一项目
**问题**: 如何确保任何 AI 随时能接手
**方案**:
1. AGENTS.md 是通用上下文锚点
2. dashboard.md 记录当前状态,任何 AI 读到即知全貌
3. task 文件自包含(输入/输出/约束/验收),不依赖对话历史
4. Git commit 记录所有变更,Git 是唯一的历史来源
**核心原则**: 对话是易失的,文件是持久的。每个判断产生后立即写入文件。
**何时用**: 每次 AI 会话
**何时不用**: 无(这是基础模式,始终适用)