通过QSPI外接flash实现片上程序执行时如何擦、写flash其他位置

2019-12-09 19:24发布

    目前使用的平台是STM32H750,内部flash比较小,只有128KByte,使用QSPI连接外部flash,在内部flash中烧写Boot,初始化QSPI,工作在内存映射模式,跳转到外部flash的程序中。这里有几个疑问!

    下图是外部flash的划分,其中分为4个部分,运行的代码是保存在“Code area”中,在这个程序执行的过程中,我需要对“Param area”区域中的部分参数进行读、擦、写;以及在固件更新的过程中,从以太网接收升级的固件,放到“FW buffer”区域中缓存,这期间就涉及到flash的擦、写。

    TIM截图20190130093355.jpg (28.69 KB, 下载次数: 0) 下载附件 2019-1-30 09:34 上传

    从我目前的了解来看,一旦“Code area”中的指令开始运行,这是QSPI已经工作在内存映射模式,这个模式下仅可以进行flash读操作(由CPU自动执行)。在上述举例的2种情况均涉及到擦、写,这2中操作需要在间接模式(即indrect mode)下进行,那就需要退出内存映射模式,而一旦退出,“Code area”中的指令将无法继续执行。

    我在CubeMX下找到STM32H7系列的SDK,里面的例程也没有看到这种操作。不知道有哪位做过类似的操作,具体应该如何操作?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。