如何解决STM32-内存映射模式下的QSPI Flash只读问题
在STM32F7
中,代码从内部闪存运行(默认),我们可以从内部闪存读取数据/向内部闪存写入数据。
我的问题是:我想使用外部QSPI
闪存执行代码(内存映射模式)。
同样在此模式下,我想在QSPI
闪存中执行代码时,将相同的QSPI
闪存用于数据存储(即保存一些设置)。但这是不可能的,因为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.
在不退出内存映射模式的情况下,是否可以解决我的问题(将数据写入QSPI
闪存)?
是否可以将QSPI
闪存分为两部分?一种用于内存映射模式,另一种仅用于向其读取/写入数据。
注意:我不想从外部闪存跳到内部闪存以写入数据,然后又跳到外部闪存以执行代码。
任何帮助将不胜感激。
谢谢。
解决方法
您可以通过写入Quadspi寄存器来写入Flash。请参见https://github.com/micropython/micropython/blob/master/ports/stm32/qspi.c
中的qspi_write_cmd_addr_data() ,否,这是不可能的。如果必须先擦除FLASH存储器,则必须先擦除它,然后您需要进入Wirte模式并写入存储器。 FLASH存储器总是写慢。
内存映射模式通常用于从QSPI闪存运行代码,或简化读取访问。
,我知道这是一篇较旧的帖子,但供将来参考:
您需要停止在外部闪存之外执行才能写入它。也许通过将一个小代码块复制到 RAM 或从内部闪存执行。然后跳转到执行该代码。该代码可以从内存映射模式禁用外部闪存,将数据写入其中,然后将其切换回内存映射模式。显然,在此期间您需要禁用任何相关中断并确保没有访问内存映射闪存。还要特别注意不要擦除和覆盖外部闪存中的代码,除非您当然愿意!
这是一个类似于写入内部闪存的过程,当您在写入内部闪存时无法从中执行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。