繁体   English   中英

STM32 - QSPI Flash Read Only Problem In Memory Mapped Mode

[英]STM32 - QSPI Flash Read Only Problem In Memory Mapped Mode

STM32F7中,代码从内部 flash(默认)运行,我们可以从内部 flash 读取/写入数据。

我的问题是:我想使用外部QSPI flash 执行代码(内存映射模式)。 同样在此模式下,我想在QSPI flash 中执行代码时使用相同的QSPI flash 进行数据存储(即保存一些设置)。但这是不可能的,因为 ST 在其参考文档( AN4760 )中指出:

    In Memory-mapped mode the QUADSPI allows the access to the external 
memory for read operation through the memory mapped address region 
(from 0x9000 0000 to 0x9FFF FFFF) and allows the external memory to 
be seen just like an internal memory.

在不退出 memory 映射模式的情况下,是否有解决我的问题(将数据写入QSPI闪存)的方法?

是否可以将QSPI flash 分成两部分? 一个用于 memory 映射模式,另一个仅用作读/写数据。

注意:我不想从外部 flash 跳转到内部 flash 写入数据,然后再次跳转到外部 flash 执行代码。

任何帮助,将不胜感激。

谢谢。

不,这是不可能的。 FLASH memory,如果之前写过,必须擦除,这时需要进入write模式,写入memory。 FLASH memory总是写慢。

memory 映射模式通常用于运行来自 QSPI flash 的代码,或简化读取访问。

我知道这是一篇较旧的帖子,但供将来参考:

您需要停止执行外部 flash 才能写入它。 也许通过将一个小代码块复制到 RAM 或从内部 flash 执行。然后跳转到执行该代码。 该代码可以从 memory 映射模式禁用外部 flash,将数据写入其中,然后将其切换回 memory 映射模式。 显然,在此期间,您需要禁用任何相关中断,并确保没有访问映射到 flash 的 memory。还要特别注意不要擦除和覆盖外部 flash 中的代码,除非您当然愿意!

这是一个类似于写入内部 flash 的过程,当您在写入时无法从它执行。

您可以通过写入 quadspi 寄存器来写入 flash。 参见 https 中的 qspi_write_cmd_addr_data() ://github.com/micropython/micropython/blob/master/ports/stm32/qspi.c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM