2362072_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2362072_zh-CN

2362072_zh-CN

i.MX RT1176 中外部闪存执行冻结

你好!我正在为 i.MX RT1176 开发代码。我的代码通过外部闪存(型号 MX25UM51345G)和 XIP 运行,某些功能通过 RAM 运行。


启动工作正常,但执行大约 30 秒后处理器会死机。在连接调试器时,我发现 PC 被外部闪存中的一条指令卡住了(不一定是同一条指令或功能),而步进/恢复执行也无济于事(仍然卡在同一个 PC 上)。不产生故障。

我读取了 FlexSPI、SEMC 和 Cortex M-7 寄存器寄存器,但似乎一切正常。

核心冻结后,我可以强制 PC 进入 RAM(使用调试器),代码执行正常,直到代码尝试跳回闪存。 此外,在这种状态下从 RAM 执行的代码似乎能够读取闪存数据。


既然从闪存中读取数据是正常的,我想这可能是从闪存中获取指令的问题,但我不能肯定。即使是从闪存获取指令的问题,我也不知道该如何调试。

如有任何帮助,将不胜感激。


i.MX-RT1170

i.MXRTRe: External flash execution freeze in i.MX RT1176谢谢您的建议。

我研究过是否可能存在你所说的冲突,但我的代码都没有向外部闪存写入、配置、发送 IP 命令等。



我还检查了 FLEXSPI 模块中的 INTR 寄存器,以确保在系统试图执行闪存中的指令时卡住之前没有产生错误,结果也没有产生错误。有没有办法(寄存器或位)检查是否发生了碰撞?在我不修改闪存的情况下,会发生这种碰撞吗(比如说预取和指令取入碰撞?)

谢谢
Re: External flash execution freeze in i.MX RT1176

嗨,@isstivenalive

感谢您对 NXP MIMXRT 系列的关注!

根据您描述的症状,MCU 似乎运行正常。RAM 中的代码运行正常,系统可以从闪存读取数据和向闪存写入数据,但 XIP 却卡住了。 我认为目前最可能的根本原因是 AHB 预取/缓存与运行期间在同一 XIP 闪存上执行的 IP 命令、LUT/模式更新或擦除/写入操作之间发生了冲突。请检查是否在类似操作中出现问题。

如果需要在系统运行时对同一 XIP Flash 进行任何 IP 命令或配置更改,则必须将代码加载到 SRAM 中才能执行。 使用单个闪存设备时,闪存在繁忙时不会对进一步的访问做出响应。它还指出,与闪存写入相关的代码应从内部 SRAM 运行,应禁用中断以避免意外访问 Flash,并且 LUT 更新需要重置软件以避免冲突问题。

有一个最简单的故障排除方法:首先禁用所有闪存操作,然后只运行 XIP,看看是否能解决之前的问题。有关详情,请参阅此 AN:https://www.nxp.com/docs/en/application-note/AN12564.pdf

致以最诚挚的问候,
Gavin


Re: External flash execution freeze in i.MX RT1176

嗨,@isstivenalive

我不知道有专用 FlexSPI 寄存器位报告 “预取/指令提取冲突”。INTR 只报告已定义的错误/超时,因此干净的 INTR 并不能完全排除 XIP 读路径问题。

在这种情况下,下一个疑点应该是纯 XIP 读路径条件:FlexSPI AHB 预取/缓存行为、Cortex-M7 推测/缓存行取回、MPU 内存属性、FlexSPI 采样时钟/DQS/DLL 时序余量,以及八进制 DDR 闪存的 LUT/虚拟/模式配置。

为了缩小范围,请尝试以下测试。

  1. 禁用 FlexSPI AHB 预取

    这只是为了先进行调试,检查挂起是否与 AHB 预取/缓冲区行为有关。
  2. 减少 FlexSPI 根时钟/串行时钟

    如果问题在较低的时钟消失,则更多地指向 DQS/DLL 采样余量、电路板级信号完整性或虚拟周期时序。
  3. 暂时禁用指令缓存/数据缓存或查看 MPU 属性

  4. 重新检查 AHB 读取 LUT 和闪存时序配置

  5. 检查挂起后的 FlexSPI 状态

致以最诚挚的问候,
Gavin


タグ(1)
評価なし
バージョン履歴
最終更新日:
‎05-12-2026 02:29 AM
更新者: