Files
firmware-lowlevel-development/skills/firmware-lowlevel-bsp-development/references/pinmux.md
T

47 lines
4.2 KiB
Markdown

# BSP 原理图 Pinmux 审核证据
根据用户提供的项目原理图与本 Skill 自动选择的内置芯片引脚表,生成可审核的项目 Pinmux CSV。CSV 是原理图到 BSP 配置的派生视图,不是修改 `cvi_board_init.c`、DTS/DTSI 或其他 BSP 源码的必需输入,也不能独立表达完整的方向、初值、Pad 电气和初始化顺序。
## 输入和输出
输入包括项目名称、项目原理图和可读取的 EmxRes 项目。按 [内置 GPIO 资料目录](builtin-gpio-pinout.md)读取 `buildEnvConfig.sh` 的 `EP_CHIP` 并选取对应 PINOUT;对已覆盖芯片不再要求用户提供 GPIO/FMUX 手册。项目名称没有明确给出时,从原理图标题栏、图号或文件名推导,并在交付时说明。内置目录未覆盖该芯片时才列为缺失输入并请求匹配资料。
需要 CSV 时,输出文件名为 `<项目名称>_pinmux.csv`。新 BSP 项目中的默认位置为 `doc/bsp_adaptation/inputs/`。清理文件名中的 `/\\:*?\"<>|`,将连续空白替换为下划线,保留可安全使用的中文。CSV 使用 UTF-8 BOM。
CSV 仅保留原理图中实际使用且拥有至少两种编号 FMUX 选择的信号引脚。表头及顺序严格为:
1. `引脚号`
2. `功能名称`
3. `引脚名称`
4. `有效电平`
5. `FMUX寄存器`
6. `FMUX当前值`
7. `FMUX默认值`
8. `FMUX_list`
生成表格前必须阅读 [workflow-and-schema.md](workflow-and-schema.md),按其中的数据结构、有效电平规则和验收要求执行。
## 执行流程
1. 识别原理图中的主芯片型号、器件号、封装和所有分单元页面;同时读取项目 `buildEnvConfig.sh` 的唯一 `EP_CHIP`。两者冲突时停止。
2. 提取主芯片所有实际连接的信号脚。排除电源、地、EPAD、明确 NC 和未连接脚,但不能因当前功能不是 GPIO 而排除。
3. 执行 `query_builtin_pinout.py --project <项目> --query <目标Pin或功能>`,从自动选择的内置表提取球位、Pad 名、FMUX 寄存器、默认值,以及每个编号对应的全部复用能力;查询 JSON 保存在 `doc/bsp_adaptation/inputs/chip_pinout_lookup.json`。
4. 以规范化 Pad 名为主键对齐原理图和手册,并用球位、封装和功能交叉检查。型号或封装不匹配时停止 CSV 生成,只交付资料差异和冲突清单;型号与封装已匹配但个别字段仍缺少证据时,才将该字段写为 `UNKNOWN` 或 `待确认` 并报告风险。
5. 根据 Pad 支持能力和原理图实际用途确定 `FMUX当前值`。网络名只是线索;网络名声称的功能不在该 Pad 复用表中时,保留手册事实并报告矛盾。
6. 只有当前目标功能为通用 GPIO 时才分析 `有效电平`。沿实际信号路径检查上下拉、反相器、三极管、MOS、驱动阵列、低有效命名和上电状态。明确时填 `高有效` 或 `低有效`,证据不足填 `待确认`;非 GPIO 一律填字符串 `null`。
7. 建立规范化 JSON,并执行:
`python3 scripts/bsp/build_pinmux_csv.py --input <normalized.json> --output-dir <交付目录>`
8. 检查脚本结果,回查寄存器、默认值、当前值、有效电平和所有资料冲突。只有型号与封装匹配且脚本验收通过时才把 CSV 作为审核证据;硬阻塞存在时停在 `investigating` 或 `blocked` 并交付冲突清单。
## 不可破坏的规则
- “实际使用”以真实电气连接为准,而不是仅凭网名或相邻文字。
- “多种 FMUX”要求 `FMUX_list` 中至少有两个不同编号项,例如 `0:GPIOA_1; 3:UART1_TX`。无编号的 MIPI、Audio、EPHY 等特殊模式可以记录,但不能单独满足筛选条件。
- `功能名称`写原理图网络名或可验证的板级用途;`引脚名称`写芯片 Pad 名;`引脚号`优先写 BGA 球位。
- `FMUX当前值`是实现原理图当前用途所需的编号,不是寄存器复位值;`FMUX默认值`必须来自匹配的芯片手册。
- GPIO 的 `待确认` 与非 GPIO 的 `null` 含义不同,不能混用;禁止猜测缺失事实。
- 型号或封装不匹配是生成门禁,不是可用 `UNKNOWN` 降级放行的普通字段缺失。
- 内置表路径、SHA-256、工作表名和 Excel 行号必须进入来源证据;目录名不能作为芯片或 Pinmux 证据。