RK3588 嵌入式调试复盘|MIPI DSI + FUSB302 PD 供电干扰雪花屏问题
> 合规前置说明:本文仅为个人自用设备、公开内核日志、公开芯片手册层面的现象复盘与 EMI 原理分析,不涉及固件逆向、提取私有源码、破解、泄露厂商未公开机密,不指责产品质量,仅记录嵌入式 Linux 调试踩坑过程。
摘要
RK3588 平台调试遇到一个时序依赖型雪花屏现象:U-Boot Logo 画面清晰,Type‑C PD 充电器上电开机,内核启动后屏幕雪花噪点;先进入系统桌面再插入同一个 PD 电源,屏幕正常、充电正常。 本文记录现象、日志定位、错误码含义、干扰机理、分层缓解方案,同时区分两个独立问题:PD EMI 雪花屏 / 升级系统后画面发虚 / U-Boot bootyl 命令带来的 cmdline 重复 root 参数。
一、现象记录
- U-Boot 阶段 Logo 输出清晰,说明 Panel 硬件、DSI 硬件链路本身无损坏。
- 复现条件:开机前插上 GaN PD 充电器,内核启动后出现雪花噪点;日志持续打印
fusb302_i2c_read: cannot read xxx, ret=-121、Start drp toggling、PD chip enter low power mode。 - 特殊时序:裸机开机,进入 Ubuntu 桌面稳定后,再接入同一款 PD 充电器,不再雪花,充电功能不受影响。
- 对照测试:使用原厂 12V DC 圆口电源开机,该雪花现象不复现。
- 充电链路与显示链路相互独立:雪花只是显示异常,电池充电流程正常完成。
-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 电源引入噪声,链路不容易被打垮。这就是 “后进系统再插电就正常” 的核心原因。
干扰分为两条路径:
- 传导干扰:Vbus 高频开关纹波通过主板电源树串入 MIPI、VOP 显示供电轨。
- 辐射干扰:氮化镓高频开关辐射耦合到 Type‑C 附近的 MIPI 差分走线、FUSB302 的 I2C 总线。
DC 12V 适配器不容易触发该问题:开关频率更低,EMI 抑制余量更好,不存在 CC 协商、DRP 持续轮询的扰动过程。
三、容易踩的判断误区
- ❌ 屏幕硬件损坏:U-Boot 阶段画面清晰,直接排除屏幕本体故障。
- ❌ 单纯内核 DRM 驱动 Bug:纯软件驱动 bug 一般不会严格依赖 “上电时序”,不会只在开机前置 PD 供电才触发。
- ❌ fusb302 报错是雪花的根本原因:噪声同源同时干扰 I2C 通信与 MIPI 训练;报错和雪花属于并发现象,不是简单的因果。
- ❌ 充电器本身故障:充电器在合规范围内,是板子 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、开关频率低的适配器。
五、区分另外两个独立显示 / 引导问题(避免混淆)
- /proc/cmdline 重复 root 参数 根源:U-Boot 私有命令
bootyl内部硬编码追加 root 参数,U-Boot 环境变量 bootargs 本身干净;U-Boot 下 nvme 扫描识别异常也是 bootyl 私有 NVMe 初始化接管导致。和雪花屏无关,独立引导问题。 - 升级系统后画面发虚、清晰度下降 U-Boot Logo 清晰,进入内核后观感模糊:属于 Wayland 合成、像素格式、缩放渲染层面问题,不是 PD EMI 噪声雪花,是另一类显示渲染问题。
六、验证测试顺序
- 原厂 DC 12V 开机,作为基准对照组;
- 同 C 线 + PD 充电器,加装磁环紧贴设备端,开机测试;
- 同一充电器,时序对照:先开机进系统,再插入电源;
- 更换不同 GaN 电源做对比验证。
七、小结
本次雪花屏本质:GaN PD 上电瞬间 + FUSB302 DRP 轮询带来的高频噪声,刚好撞上 MIPI DSI 链路训练脆弱窗口期,链路训练失败;链路稳定后再接入供电,抗噪声能力显著提升。
> 免责:所有调试操作仅在个人自有硬件上完成,本文内容仅供技术学习参考,不构成任何购买、改装建议。
本文仅为个人自有嵌入式设备调试学习记录,基于公开 Linux 内核日志、公开芯片 datasheet、EMI 基础原理分析;不构成产品质量判定、维权依据;不提供固件破解、逆向工程教程;文中所有操作仅适用于本人持有、拥有使用权的硬件。读者自行复现造成硬件损坏、供电故障等,由读者自行承担风险。

浙公网安备 33010602011771号