STM32-内存映射模式下的QSPI Flash只读问题

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?