STM32H750使用QSPI-Flash实现片上程序执行出错【已解决】

2020-01-04 19:03发布

本帖最后由 wzd5230 于 2019-1-28 13:23 编辑

        项目中使用的MCU是STM32H750,core最高频率400MHz,内部flash只有128KB,是无法满足目前我们的应用的,遂考虑外部扩展存储,并且片上执行(因为内部RAM也只有1MB),扩展的方案有2个,其一,通过QSPI外扩串行Flash,该MCU支持QSPI外接存储设备的XIP功能;其二,通过FSMC接口,外接并行的norFlash,这种方式耗费MCU的引脚比较多。因此采用QSPI外接Flash的方式。
        目前在测试阶段,在MCU内部Flash中,包含了一个类似于Boot的程序,该程序初始化QSPI工作在内存映射模式,以及进行程序跳转。MCU的QSPI最高频率支持200MHz。外部Flash最高clock支持133MHz,已经包含了一个有效、可用的程序,该程序对某一IO口进行翻转。
        【遇到的问题】:
        1、QSPI的clock如果设置的比较高(>=50MHz),MCU就会进入hardfault_handler(),这可以理解,因为从Flash中读取的数据就是“指令”,指令不正确,肯定会出问题。如果QSPI的clock设置的比较低,如33MHz,那么是可以正常跳转,并且外部flash中的程序也执行了,IO正常翻转。
        2、【测试1】,仅配置QSPI工作在内存映射模式,并不进行跳转,这样可以直接使用指针去读取数据,并且可以在IAR的memory窗口直接看到flash所映射地址的数据。测试结果是QSPI低速时通过JLink可以查看到数据,使用指针也可以正常访问到数据。如果QSPI设置clock高了,直接MCU进入异常状态。
        3、【测试2】,将上述的【测试1】在一个STM32H743的评估板上验证(该板卡没有外接flash),即使QSPI的频率设置到100MHz,MCU也没有死,由于外部没有数据,映射的数据全为0xFF(我将SIO0..3直接接到VCC)。
        4、不使用QSPI的内存映射模式,而是使用最简单的间接模式,对Flash中的数据进行读取,测试发现,当QSPI的clock速度提高了,mcu也还是死机。
        5、还有很多其他的对比测试,我就不具体列出了。
        【咨询的问题】
        1、是否有使用过STMH750这一系列MCU的童鞋,我怀疑这个芯片的QSPI速度有限制,和STM32H743是不同的,当QSPI速度提升了,整个MCU进入异常。
        2、是否有哪位使用STMH750这个MCU,外部通过QSPI扩展Flash实现片上执行程序(其实是取指令)。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
Flyback
1楼-- · 2020-01-06 03:02
wzd5230 发表于 2019-1-28 17:32
区别在于这个函数HAL_QSPI_MspInit

CubeMX原始生成:

问题原来是出在 GPIO_SPEED_FREQ_VERY_HIGH 这里。

以前我也吃过cubemx这个io速度的亏,配置SDRAM和RGB接口需要兼顾速度和过冲,可能需要手动选择HIGH或者MEDIUM,对EMC测试来说,VERY-HIGH可能比较麻烦。
wzd5230
2楼-- · 2020-01-06 04:52
 精彩回答 2  元偷偷看……
gpfrank
3楼-- · 2020-01-06 10:24
wzd5230 发表于 2019-1-29 08:30
不只是这个,那个MDMA时钟也要开,另外用的QSPI-BANK2,没有用到GPIOF组,但是时钟也要打开,我都有对比 ...

我也准备马上使用STM32H750V。
可以使用QSPI BANK2作为 XIP吗?
因为 BANK1实在太变态了引脚分布。 BANK2的分布才能做到等长的布线。
谢谢!
wzd5230
4楼-- · 2020-01-06 11:15
gpfrank 发表于 2019-1-29 15:40
我也准备马上使用STM32H750V。
可以使用QSPI BANK2作为 XIP吗?
因为 BANK1实在太变态了引脚分布。 BANK2 ...

我们用的也是bank2,目前测试可用,时钟100MHz,4线模式,外部flash最高支持133MHz。
gpfrank
5楼-- · 2020-01-06 16:34
wzd5230 发表于 2019-1-29 15:47
我们用的也是bank2,目前测试可用,时钟100MHz,4线模式,外部flash最高支持133MHz。 ...

非常感谢!这样就可以布线了。不然BANK1,我觉得根本没办法布线。100Mhz的阻抗特性。
根本没办法保证。

再次感谢您的回复!谢谢!
wofei3344
6楼-- · 2020-01-06 20:47
求助大神,有Flash的算法(烧写在外部QSPI接口的Flash)分享吗?

一周热门 更多>