👁 339
问题现象
Orange Pi 6+ 热重启(reboot)后卡在 Logo 画面,冷启动(拔电重插)正常。
根因分析
SE_FW warm boot 路径不初始化 QSPI 控制器 → 热启时读不到 SPI NOR → 卡 Logo
证据:
- SE_FW 有
service_warm_boot_entry和service_cold_boot_entry两条路径 - Cold boot 时
cdns_xspi clock/reset done→ QSPI 正常初始化 - Warm boot 时可能跳过 QSPI 初始化 → QSPI 状态异常 → 读不到固件
修复方案(按推荐度排序)
方案 A:Linux 内核参数 reboot=cold ⭐⭐⭐
在 OPi6+ 的 Linux 中添加内核参数,强制走 cold reset 路径:
# 编辑 /boot/extlinux/extlinux.conf 或 EFI 变量
# 在 APPEND 行添加 reboot=cold
临时测试:
echo cold > /sys/kernel/reboot_mode # 如果存在
reboot
方案 B:PMIC Power Cycle ⭐⭐
通过 PMIC 触发完全断电重启(等效拔电源):
# 需要找到 PMIC 的 reset 寄存器
# TI PMIC5475 有 3 组,可能通过 I2C 操作
# 具体地址需要查 OPi6+ 的设备树或原理图
方案 C:修改 FV2 FvLength ⭐
虽然不能解决热启问题,但能防止 NVRAM 越界写入:
# 把 FV2 @ 0x3FE0E0 的 FvLength 从 0x200000 改为 0x1F20
# 这样 UEFI 不会写 0x400000+ 的加密 DXE 区域
方案 D:找 CIX/OrangePi 要新版 BIOS ⭐⭐⭐
SE_FW 版本是 2025 年 9 月的(2.0.2025W36.01),BIOS 是 2026 年 1 月的(BiosV1.4-W20260130),可能已经有更新修复此 bug。
补充方案
如果以上方案都不方便立即操作,还可以:
- 生成修改 FV2 FvLength 的 BIOS 镜像(防 NVRAM 越界)
- 写一个 Linux 脚本在 reboot 前 reset QSPI 控制器
- 搜索 OPi6+ 官方论坛看有没有热启问题的讨论
💖 打赏支持
如果这篇文章帮到了你,欢迎打赏支持
微信扫一扫,赞赏支持
发表回复