硬件:
- i.MX8MQ(REV A0),基于 EVK 设计的定制板
- QSPI 或非:Micron MT25QL256A(32MB,3.3V,四路连接)
- 电路板支持包。Yocto Scarthgap、NXP 电路板支持包。、U-启动 2024.04 (u-启动-imx)
目标:从 FlexSPI 或非闪存启动启动加载程序(SPL + ATF + U-Boot)。
内核和根文件系统仍然保留在 eMMC 上。
有效的方法:
- U-启动(通过 uuu SDP/SDPV 加载到 RAM 中)运行正常
- “sf probe”正确检测到闪存:mt25ql256a,32 MiB
- U-启动 可以可靠地读取和写入闪存(已通过
“sf protect unlock”之后的回读测试验证)
- 镜像版本使用了 IMXBOOT_TARGETS = "flash_evk_flexspi"
闪存布局(已通过读取芯片数据验证):
0x000000:FCFB 标头 - “qspihdr 检查”报告
“在 Q(F)SPI 中找到启动配置头”
标签 = 42464346,版本 = 56010000
0x001000: IVT - d1 00 20 41,入口 = 0x007E1000,
boot_data = 0x007E0FE0,self = 0x007E0FC0
0x060000:U-Boot 正确的 FIT(d00dfeed),匹配
CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000
问题:
启动开关设置为 QSPI/FlexSPI 启动,并使用 USB 电缆
物理断开连接后,板无法启动。什么都没有
打印在串口控制台上(SPL 横幅从未出现),并且
ROM 回退到串行下载模式:
uuu -lsusb
2:1 MX8MQ SDP:0x1FC9 0x012B NXP 闪存
BT_FUSE_SEL 未熔断;启动配置通过 GPIO 完成。
启动引脚。
我已经尝试过:
- 两种标头格式:scripts/qspi_header(c0ffee01 标签)和
scripts/fspi_header(FCFB 标签)。修复了 soc.mak,使其
flash_evk_flexspi 使用偏移量为 0 的 fspi_header。
- 改变 FCFB 参数:sflashA1Size、serialClkFreq(50MHz -> 20MHz),
dataSetupTime/dataHoldTime,sflashPadType
- "uuu -b qspi"(官方内置脚本)
- "qspihdr update safe" 和 "qspihdr init
- 完全擦除闪存与写入完整图像:
启动行为基本相同(SDP 出现于之后)。
(约 1.6 秒 vs 约 1.8 秒),这表明 ROM 可能没有被读取。
完全不开闪光灯。
问题:
1.i.MX8MQ 启动 ROM 是否支持从串行 或非 卡启动
是否支持通过 FlexSPI 进行闪存刷新?我拥有的参考手册部分
列出了与非闪存和 SD/MMC 作为引导设备,但我无法
找到列出的 FlexSPI/QSPI 或非。i.MX8MM/8MN 文档似乎
可以描述一下,但我不太确定 8MQ。
2. 如果支持,预期的闪存布局具体是什么?
当 FCFB 为真时,IVT 应该位于偏移量 0x400 还是 0x1000?
位于 0x0 处?
3. 应选择正确的 BOOT_MODE / BOOT_CFG 组合。
i.MX8MQ 上采用 FlexSPI 或非 启动?
4. 关于 REV A0 硅片,是否存在任何已知的勘误?
FlexSPI 启动?
谢谢!