Files

4.2 KiB

BSP 原理图 Pinmux 审核证据

根据用户提供的项目原理图与本 Skill 自动选择的内置芯片引脚表,生成可审核的项目 Pinmux CSV。CSV 是原理图到 BSP 配置的派生视图,不是修改 cvi_board_init.c、DTS/DTSI 或其他 BSP 源码的必需输入,也不能独立表达完整的方向、初值、Pad 电气和初始化顺序。

输入和输出

输入包括项目名称、项目原理图和可读取的 EmxRes 项目。按 内置 GPIO 资料目录读取 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,按其中的数据结构、有效电平规则和验收要求执行。

执行流程

  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 证据。