NXP MCU 技术论坛
直播中

李娟

7年用户 1316经验值
私信 关注
[问答]

FLEXSPI_TransferBlocking是否需要禁用中断?

我发现我们的文件系统通过调用 FLEXSPI_TransferBlocking() 通过 flexspi 驱动程序擦除/写入闪存有一个非常奇怪的行为。
在我们的项目中,我们使用 RT1165 作为 MCU 并使用了两个 FLEXSPI。
FlexSPI 1 用于 XIP 闪存(执行代码),FlexSPI 2 用于文件系统闪存。
当问题发生时,我们的文件系统将一遍又一遍地在相同的块地址擦除/写入 flexspi2 闪存。似乎从闪存中读回的数据与写入闪存的数据不同。这就是说,由于未知原因,数据无法通过 FlexSPI 2 正确写入闪存,即使它可以通过调用 FLEXSPI_TransferBlocking() 返回 true。而且这个问题的发生率非常低。
有趣的是,如果我在 FLEXSPI_TransferBlocking() 中添加 DisableGlobalIRQ(),奇怪的问题将永远不会发生。
所以,我的问题是我们是否需要在 FLEXSPI_TransferBlocking() 中使用 DisableGlobalIRQ()?如果是,我们为什么需要它,是否有任何解释可以帮助澄清这个问题。
感谢和问候,
凯尔

PS:代码更改为 FLEXSPI_TransferBlocking()

更多回帖

发帖
×
20
完善资料,
赚取积分