RK3588 嵌入式调试复盘|MIPI DSI + FUSB302 PD 供电干扰雪花屏问题

> 合规前置说明:本文仅为个人自用设备、公开内核日志、公开芯片手册层面的现象复盘与 EMI 原理分析,不涉及固件逆向、提取私有源码、破解、泄露厂商未公开机密,不指责产品质量,仅记录嵌入式 Linux 调试踩坑过程。

摘要

RK3588 平台调试遇到一个时序依赖型雪花屏现象:U-Boot Logo 画面清晰,Type‑C PD 充电器上电开机,内核启动后屏幕雪花噪点;先进入系统桌面再插入同一个 PD 电源,屏幕正常、充电正常。 本文记录现象、日志定位、错误码含义、干扰机理、分层缓解方案,同时区分两个独立问题:PD EMI 雪花屏 / 升级系统后画面发虚 / U-Boot bootyl 命令带来的 cmdline 重复 root 参数。

一、现象记录

  1. U-Boot 阶段 Logo 输出清晰,说明 Panel 硬件、DSI 硬件链路本身无损坏。
  2. 复现条件:开机前插上 GaN PD 充电器,内核启动后出现雪花噪点;日志持续打印 fusb302_i2c_read: cannot read xxx, ret=-121、Start drp toggling、PD chip enter low power mode。
  3. 特殊时序:裸机开机,进入 Ubuntu 桌面稳定后,再接入同一款 PD 充电器,不再雪花,充电功能不受影响。
  4. 对照测试:使用原厂 12V DC 圆口电源开机,该雪花现象不复现。
  5. 充电链路与显示链路相互独立:雪花只是显示异常,电池充电流程正常完成。

-121 对应内核 EREMOTEIO:I2C 从机无应答,不是芯片永久性损坏,是总线噪声导致通信失败。 FUSB302:ON Semiconductor USB‑PD 控制器,负责 CC 检测、PD 协商、DRP 双角色轮询切换。

二、原理分析(MIPI DSI + EMI 时序窗口)

MIPI D-PHY 在上电初始化阶段会执行链路训练(Link Training),这个窗口时间很短、信号余量很低,对电源轨纹波、共模高频噪声非常敏感。

  • 窗口期脆弱:内核显示初始化链路训练期间,如果同时存在 PD 控制器 DRP 反复轮询、GaN 充电器高频开关噪声,噪声耦合进 I2C 总线与 MIPI 差分线,训练失败,锁死在错误参数 → 雪花。
  • 窗口期过后鲁棒性变强:链路训练成功、锁相稳定之后,再接入 PD 电源引入噪声,链路不容易被打垮。这就是 “后进系统再插电就正常” 的核心原因。

干扰分为两条路径:

  1. 传导干扰:Vbus 高频开关纹波通过主板电源树串入 MIPI、VOP 显示供电轨。
  2. 辐射干扰:氮化镓高频开关辐射耦合到 Type‑C 附近的 MIPI 差分走线、FUSB302 的 I2C 总线。

DC 12V 适配器不容易触发该问题:开关频率更低,EMI 抑制余量更好,不存在 CC 协商、DRP 持续轮询的扰动过程。

三、容易踩的判断误区

  1. ❌ 屏幕硬件损坏:U-Boot 阶段画面清晰,直接排除屏幕本体故障。
  2. ❌ 单纯内核 DRM 驱动 Bug:纯软件驱动 bug 一般不会严格依赖 “上电时序”,不会只在开机前置 PD 供电才触发。
  3. ❌ fusb302 报错是雪花的根本原因:噪声同源同时干扰 I2C 通信与 MIPI 训练;报错和雪花属于并发现象,不是简单的因果。
  4. ❌ 充电器本身故障:充电器在合规范围内,是板子 PCB 布局 EMI 余量紧张 + GaN 高频噪声的兼容性问题,不属于充电器失效。

四、分层缓解方案(从无成本到硬件、软件)

方案 1:使用习惯规避(零成本,优先推荐)

开机不提前插入 Type‑C PD,等系统进入桌面、显示链路稳定之后再接充电。 局限:上电不能直接 PD 供电。

方案 2:硬件滤波(卡扣式铁氧体磁环)

卡扣铁氧体磁环抑制高频共模噪声;

  • 安装位置:紧贴设备 Type‑C 插头一侧,不是充电器端;
  • 数量:优先 1 只测试,不是越多越好;
  • 预期:降低传导 + 辐射干扰,大概率改善,但不能保证 100% 消除;EMI 更好的 GaN(如华为 140W)会改善,但仍有概率需要磁环。

方案 3:内核参数软件规避(不刷机,内核 cmdline 黑名单)

启动阶段屏蔽 FUSB302 驱动,避免启动期 DRP 反复 toggling 扰动总线:

modprobe.blacklist=fusb302

副作用:失去 PD 高压协商、DRP 切换能力,Type‑C 只能 5V 充电。

更深层根治方案需要修改 DTS,延后 FUSB302 probe 时序,等 MIPI 链路训练完成之后再启动 PD 芯片;需要重新编译 DTB,属于固件修改范畴。

方案 4:更换电源

优先使用原厂 DC 圆口 12V 电源;或者传统非 GaN、开关频率低的适配器。

五、区分另外两个独立显示 / 引导问题(避免混淆)

  1. /proc/cmdline 重复 root 参数 根源:U-Boot 私有命令 bootyl 内部硬编码追加 root 参数,U-Boot 环境变量 bootargs 本身干净;U-Boot 下 nvme 扫描识别异常也是 bootyl 私有 NVMe 初始化接管导致。和雪花屏无关,独立引导问题。
  2. 升级系统后画面发虚、清晰度下降 U-Boot Logo 清晰,进入内核后观感模糊:属于 Wayland 合成、像素格式、缩放渲染层面问题,不是 PD EMI 噪声雪花,是另一类显示渲染问题。

六、验证测试顺序

  1. 原厂 DC 12V 开机,作为基准对照组;
  2. 同 C 线 + PD 充电器,加装磁环紧贴设备端,开机测试;
  3. 同一充电器,时序对照:先开机进系统,再插入电源;
  4. 更换不同 GaN 电源做对比验证。

七、小结

本次雪花屏本质:GaN PD 上电瞬间 + FUSB302 DRP 轮询带来的高频噪声,刚好撞上 MIPI DSI 链路训练脆弱窗口期,链路训练失败;链路稳定后再接入供电,抗噪声能力显著提升。

 

> 免责:所有调试操作仅在个人自有硬件上完成,本文内容仅供技术学习参考,不构成任何购买、改装建议。
本文仅为个人自有嵌入式设备调试学习记录,基于公开 Linux 内核日志、公开芯片 datasheet、EMI 基础原理分析;不构成产品质量判定、维权依据;不提供固件破解、逆向工程教程;文中所有操作仅适用于本人持有、拥有使用权的硬件。读者自行复现造成硬件损坏、供电故障等,由读者自行承担风险。

 

posted @ 2026-11-02 17:03  rgqancy  阅读(3)  评论(0)    收藏  举报