您好,
我们正在尝试在定制主板上的 QuadsPI NOR Flash IS25WP256 上启动 i.MXRT1176。我们连接内存的方式与 MIMXRT1170EVK 评估板上的连接方式相同(引脚 GPIO_SD_B2_05 至 11)。我们还将启动引脚设置为与评估板上的相同状态。
我编写了一个简单的"Hello world" 应用程序,在 M7 内核上运行。此应用程序可以在评估板上正确启动,但无法在我们的自定义板上启动。这两个板之间的唯一区别是我们的自定义板上的内存为32MB,评估板上的内存为16MB。
因此,我这样修改了 FCFB(在闪存中编程为 0x400):
davidjaouen_1-1770200704754.png
我将闪存大小更改为 32MB,并将 LUT 中的 READ命令 更改为使用具有 32 位地址的 READ命令(而不是足以容纳评估板上的闪存的 24 位地址)。
尽管进行了这些更改,但i.MXRT无法在我们的自定义主板上启动。
所以,我看了总线的信号。
启动 ROM 正确地从闪存中读取 FCFB(512 字节)并进行一些配置(写入启用、设置读取参数、读取状态寄存器)。根据 RM 中的记录,时钟频率为 30MHz。
此后,启动 ROM 进行 4 次读取访问,每次 64 字节,时钟频率为 133MHz(这确认了启动 ROM 读取 FCFB 并应用了设置)。但是,它会读取地址为 0x0000、0x0040、0x0080 和 0x00C0 的内存。这些是启动 ROM 的最后一次访问,而 M7 内核无法启动。我将 jLink 探针连接到 M7 内核,发现启动 ROM 在 0x223104 处陷入了无限循环。
我预计启动 ROM 会读取位于 0x1000 的 IVT 表,这样它就可以加载应用程序代码并开始执行。
我试着将时钟频率改为 30MHz(而不是 133MHz)。启动 ROM 以 30MHz 进行最后四次读取访问,但应用程序仍无法启动。
我做错了什么?
我被卡住了,希望得到任何帮助
戴维
你好,@davidjaouen、
看来问题可能与调试器有关,因为执行卡在地址0x223104,本页的 “RESET” 部分提到了该地址。请终止调试会话,然后清理并重建项目。然后,尝试在不进入调试模式的情况下运行应用程序,并将结果告诉我。
BR
Habib
嗨,哈比卜
谢谢您的回答。
不幸的是,我断开了调试器探头与主板的连接并进行了硬件RESET,但是 i.MXRT 仍然无法从闪存启动。
还有其他想法吗?
此致,
戴维
你好 Habib,
我们终于在 QSPI Flash 上制作了我们的定制板启动。问题出在 BOOT_CFG1[1] 引脚上,它是高电平而不是低电平。因此,启动 ROM 尝试启动加密映像,但我们的映像未加密。
感谢您的帮助。
戴维
你好@Habib_MS、
我遇到了同样的问题,即RESET/调试启动后目标保持在 0x002231 FC。但是,如果我重新启动主板,应用程序将从 QSPI 闪存启动并正常运行 。
我正在使用:
根据我的观察,该问题仅在调试器 RESET/调试启动期间出现,而不是在独立启动期间出现。
你能否建议正确的RESET/调试配置或解决方法来解决这个问题?
等待您的回复。
谢谢
纳根德拉-库马尔-S