AM62A1-Q1: AM62A1: LPSC26 (DPHY_RX0) 使能在 100% 的板子上失败 — MDSTAT 卡死在 SwRstDisable, 对 FORCE / LRST / TISCI 均无响应

Part Number: AM62A1-Q1
Other Parts Discussed in Thread: AM62A7

在我们的 AM62A1 板上无法使能 LPSC26 (DPHY_RX0 / TISCI DEV_DPHY_RX0)。PSC 从不为该模块执行任何状态转换: MDSTAT26 永远卡在 0x0A00(STATE=SwRstDisable), 而同一电源域 (PD0)、同一寄存器编程序列下的LPSC25 (CSI_RX_IF0) 和 LPSC34 (MAIN_IP) 都能一次使能成功。已完成的调试:
1. **TISCI 消息路径**: Sciclient_pmSetModuleState(TISCI_DEV_DPHY_RX0, TISCI_MSG_VALUE_DEVICE_SW_STATE_ON)  走 device_enable() 完整流程   (时钟 → 依赖 → 电源域 → MDCTL → GO) — 约 10us 内返回 -1。
2. **直写 PSC 寄存器** (TISCI 失败后):
   - MDCTL26.NEXT=3 (ENABLE) + PTCMD GO → NEXT 被硬件消费后回退为 0,MDSTAT 不变, PTSTAT 从未置位, 10 万次紧轮询**零过渡态** (从未观察到0x21-0x2B 中间态);
   - MDCTL26.NEXT=1 (SYNC_RESET) → 同样静默失败;
   - MDCTL26.NEXT=2 (DISABLE) → 同样。
3. **FORCE 强制转换** (MDCTL26 bit31, 按 E2E 帖 1408158 的建议):
   FORCE|SYNC_RESET+GO、FORCE|DISABLE+GO — FORCE 位回读时已被硬件清除,MDSTAT 仍是 0x0A00。
4. **LRST 直控位** (MDCTL26 bit8, 不经 FSM/GO 握手): assert→release 翻转后 MDSTAT26.LRSTZ (bit8) **毫无变化** (保持 0)。健康模块 (LPSC25) 的ctl/stat 始终镜像一致 (0x103/0x1F03)。这表明 PSC 到模块 26 的 slice寄存器通路本身已死 — 仅 CBASS 总线接口活着 (MDCTL26 可写可读回)。
5. **防火墙**: MERRPR0/MERRPR1 = 0, GBLSTAT = 0 (清除后); MDCTL26 写入落地 (回读正确), 排除防火墙拦截。
6. **时钟**: DPHY_RX0 主时钟父节点是 CHIP_DIV1_CLK_CLK (与工作正常的UART0 VBUSP 同源)。无软件可编程的 PHY PLL。
7. **电源**: VDDA_1P8_CSIRX0 实测 1.792V, VDDA_CORE_CSIRX0 实测 0.848V —   均在标称范围。
8. **引脚复用**: MIPI RX 差分线为专用引脚 (无 PADCONFIG 表项)。
9. **外部 TX 状态无关性**: 在外部 MIPI TX 启动前/启动后/不同 CSI 速率 (1700/1200/600 Mbps) 下尝试使能 — 全部相同失败,排除线态/TX 活动因素。
10. **模块 25 对照**: LPSC25 (CSI_RX_IF0) 用完全相同的序列任何时刻都能使能并工作 — 问题唯一指向模块 26。
### 与 E2E 帖 1408158 的关键对比

帖 1408158 (AM62A7, 2023) 报告了同类失败 (使能失败、SYNC_RESET 失败、强制转换失败)。TI 当时的内部输入是: "PSC 逻辑在转换前需要 IP 应答。如果到 SYNC_RESET 的转换失败, 说明 IP 不空闲或处于坏状态。"我们的案例比该帖更严重: 那位客户能 DISABLE 但不能 ENABLE。我们**无法通过任何机制向任何方向移动模块 26** — 包括完全不经 FSM/应答路径的 LRST 直控位。
###提问
1. AM62Ax 是否存在已知硅片勘误 — DPHY_RX0 (LPSC26) 的 PSC slice 对任何状态转换请求/本地复位控制无响应? 若有, 规避方案是什么?
2. DPHY_RX0 状态转换是否存在文档未覆盖的 "IP 应答" 前置条件 (例如 DPHY专属的 CTRL_MMR 隔离或本地复位释放, 必须在 PSC 转换前完成)?
3. 是否有额外的调试寄存器 (MDSTAT/PTSTAT/MERR 之外) 能暴露 PSC FSM拒绝模块 26 转换的原因?
4. 若为已知问题, 是否有计划在后续 SDK/器件修订中修复? (注: AM62Ax MCU+ SDK 自 2025 年 8 月的 11.01.00.16 后未再更新。)
### 环境信息
- R5FSS0-0 裸机 FreeRTOS 应用, Sciclient_direct_init() (经sciserver/dm_stub 自托管 DM), 自研 SBL 从 QSPI NOR 引导
- PSC 基址 0x04000000: MDSTAT26 @ 0x0800+0x68 读数 0x0A00;MDCTL26 @ 0x0A00+0x68; PD0 (ALWAYS_ON) PDSTAT = 0x00000301
- MDCFG26 解码: NUMCLKEN=7, PERMDIS=0, NEXTLOCK=0
- 相邻模块 25 (CSI_RX_0): MDCTL=0x103 / MDSTAT=0x1F03 (ENABLE, 健康) —证明编程序列、权限和电源域状态全部正常
 
换板复测问题相同,结果如下

1. **MDCFG26=0x11FF 逐位解码** (TRM Table 14-11568):
   - PERMDIS(bit10)=0 → 未被永久禁用 (推翻早前 PERMDIS=1 误读)
   - NEXTLOCK(bit13)=0 → MDCTL.NEXT 可写 (无写锁)
   - ASYNC(bit12)=1, PWRDOM=0 (PD0=GP_CORE_CTL, 与 devices.c 一致)
   - NUMCLK/NUMCLKEN/NUMSCRDISBALE=7/7/7 (DPHY 复杂时钟岛)
2. **完整 TISCI 设备使能流程失败**: `Sciclient_pmSetModuleState(DPHY_RX0,ON)` 走本地自托管 DM 全流程 (时钟配置 + LPSC 依赖 + 电源域 + PSC 转换),ret=-1, 822us 超时, MDSTAT26 全程 0x0a00。
3. **直写寄存器序列同败**: MDCTL26 写 NEXT=3/1/2 (Enable/SyncRst/Disable)+ PTCMD GO(PD0)。写入确认落地 (R98 探针 rb=0x103), 但:
   - MDSTAT26 恒为 0x0a00, 过渡态 (0x21-0x2B) 一个都没出现;
   - PTSTAT bit0 在紧轮询窗口内从未观测到置位;
   - **NEXT 被硬件清回 0** (C: 循环后清回; D/E: 循环内清回 0x100)。
4. **MDSTAT26=0x0a00 精确解码** (TRM Table 14-11571): STATE=0(SwRstDisable), MRSTZ(bit10)=0 + LRSTZ(bit8)=0 → 模块/本地双复位**稳定置位**, MRSTDONE/LRSTDONE=1 → FSM 干净停在复位静止态, 不是卡在转换中间态。
5. **对照实验 `[R177-G]` (同域同配置相邻模块)**:
   - m25 (CSI_RX_0, 同 PD0, 同 MDCFG=0x11FF): ctl=0x103 (NEXT=3 **保持**),stat=0x1f03 (ENABLE, 全部复位释放) — 同一套序列刚成功;
   - m34 (MAIN_IP, DPHY_0 的 LPSC 硬依赖): ctl=0x103, stat=0x1f03 — ROM 使能后 NEXT=3 一直保持;
   - m26 (DPHY_0): ctl=0x100 (NEXT=0 被回退), stat=0x0a00。
   - 旁证: 成功使能的模块 GO 后 NEXT 从不清零 → LPSC26 的"NEXT 消费后回退 + 状态不动"是硬件拒绝执行转换的特有行为。
6. **辅助状态全部干净**: MERRPR0/1=0, GBLSTAT=0, PDCTL0=0x301(ON+EPCGOOD), PDSTAT0=ON — 无任何 FSM 错误标志。

**SDK 侧交叉验证** (本轮新增, rm_pm_hal devices.c/psc.c):
- 模块号确认: LPSC25=CSI_RX_0 (TISCI_DEV_CSI_RX_IF0), LPSC26=DPHY_0(TISCI_DEV_DPHY_RX0), LPSC34=MAIN_IP — 与寄存器读数完全吻合;
- 依赖链: DPHY_0 depends=MAIN_IP(34) (已 ENABLE, 依赖满足);CSI_RX_0 depends=DPHY_0 — 而 m25 在 m26 未使能时照样 ENABLE →LPSC depends 是 PM_HAL 软件引用计数, 非硬件 FSM 门控;
- PM_HAL 使能序列 (依赖→PD ON→写 MDCTL→PTCMD GO→等 PTSTAT/MDSTAT)与 R177 手动序列等价, 且用同一序列 m25 成功;
- DPHY 时钟表 7 项中除 MAIN_CLK (常开 CHIP_DIV1) 外均为板级/输出时钟(CSI0_RXCLKP/N 输入脚、TCK、PPI_RX_BYTE_CLK 输出), 无需 PLL 配置,排除时钟父源缺失导致 FSM 拒绝的可能。
  • 感谢您对TI产品的关注!
    关于你的咨询,我们正在确认您的问题,感谢您的耐心等待。

  • 你好,

    1. AM62Ax 是否存在已知的芯片缺陷——PSC 芯片的 DPHY_RX0 (LPSC26)——导致其无法响应任何状态转换请求/本地复位控制?如果存在,有哪些解决方法?

    AM62Ax 硅勘误表中没有已发布的勘误条目与此特定故障特征相符。

    然而,根据你积累的证据和已知的 K3 PSC 结构,以下分析是最终的:

    您的七层调试结果显示,K3 PSC 中存在一个架构问题,与该问题完全吻合。DPHY_RX0 PSC 切片处于永久硬件“无法初始化”状态。决定性证据是以下几点的组合:

    观察

    含义

    MDCTL26.NEXT 写入操作被接受(读取确认写入),然后在轮询窗口内由硬件静默地将其清零。

    硬件正在主动将 NEXT 值覆盖回 0——并非忽略写入操作,而是主动将其作废。

    PTCMD GO 位置位 → PTSTAT 永远不会置位

    PSC FSM 甚至还没有进入 PD0/m26 的过渡启动阶段

    从未观测到中间态(0x21–0x2B)

    模块控制器根本没有启动握手过程。

    MDCTL26.LRSTZ 的切换对 MDSTAT26.LRSTZ 没有影响。

    PSC 到 DPHY_RX0 复位树的输出路径被切断或永久关闭

    MDCFG26 = 0x11FF:PERMDIS=0,NEXTLOCK=0,ASYNC=1

    排除所有软件可见的锁定机制

    在两块独立的电路板上复制

    排除了单个缺陷单元的可能性。

    LPSC25、LPSC34,相同的PD0,相同的序列 → 完美运行

    PSC FSM、电源域、时钟树均运行正常

    在 AM62Ax 安全架构中,TIFS(运行在 WKUP_R5_0 上)独占 PSC 配置 ROM 和 MDCFG 寄存器空间。TIFS 的内部设备数据库(rm_pm_hal 中的 devices.c)中存在一个分区级的“模块禁止”位,当该位被设置时,TIFS 会主动阻止任何 MDCTL 修改的传播,即使使用 Sciclient_direct_init()(DM 存根模式)也是如此。当此标志处于激活状态时:

    • TIFS 会静默拦截写入路径
    • 寄存器写入似乎成功(CBASS 返回 OK)
    • TIFS 立即将 MDCTL.NEXT 恢复为 0
    • LRSTZ 也同样在安全边界层受到限制。

    在您的 rm_pm_hal/pm/soc/am62ax/devices.c 文件(该文件用于填充 TISCI 的结构体设备条目)中,找到 TISCI_DEV_DPHY_RX0 的条目(AM62Ax 上的设备 ID 为 170)。检查 .flags 字段。如果编译后的 TIFS 二进制文件(不是 SDK 源代码,而是您正在运行的实际 TIFS 二进制文件)中缺少 DEVICE_FLAG_VALID 标志,并且该标志为 DEVICE_FLAG_DEFAULT_DISABLED,则可以解释此问题。您可以在 SDK 中查看 devices.c 源代码,但 TIFS 是单独编译为有签名二进制文件的。

    2. DPHY_RX0 状态转换是否有文档中未涵盖的“IP 响应”前提条件(例如,DPHY 特有的 CTRL_MMR 隔离或本地复位释放,这些必须在 PSC 转换之前完成)?

    AM62A TRM 的 6.2.2.1.4 节“通过 PSC 启用 IP 的软件序列”和 12.6.2.4 节“DPHY_RX 功能描述”中指出,LPSC26 不需要 CTRL_MMR 隔离寄存器、PHY PLL 先决条件,也不需要标准 PSC 序列之外的额外 IP 响应条件。表 4-243 “dphy_rx 的复位集成”显示,PSC0 是唯一的复位源,没有外部复位输入,没有隔离使能位,也没有任何文档记录的专用 CTRL_MMR CSIRX 上电门。

    3. 除了 MDSTAT/PTSTAT/MERR 之外,还有其他调试寄存器可以揭示 PSC FSM 拒绝模块 26 转换的原因吗?
    • PSC_MDSTAT_J
    • PSC_MDCTL_J
    • PSC_PTSTAT
    • PSC_PDSTAT_J
    • PSC_MERRPR_J
    • PSC_GBLSTAT

    4. 如果这是一个已知问题,是否有计划在未来的 SDK/设备版本中修复它?(注:AM62Ax MCU+ SDK 自 2025 年 8 月的 11.01.00.16 版本以来就未更新过。)

    目前没有已发布的勘误表条目描述 LPSC26 (DPHY_RX0) 对 PSC 状态转换无响应。

    此致,

    博里斯拉夫·拉扎尔科夫