mmyer 发表于 2019-8-12 21:18:44

外扩PSRAM做HEAP硬件错误

我用STM32L4R9外扩了PSRAM,对psram的读写是OK的。然后我在PSRAM定义了一个section,把heap_4的堆数组定位到这个section,运行就hardfault了。


我网上查了一下,不少人遇到这个问题,这是什么原因呢。

leiyitan 发表于 2019-8-13 12:00:51

ST32单片机外扩PSRAM是不支持存储器映射的吧....

eric2013 发表于 2019-8-13 15:11:39

leiyitan 发表于 2019-8-13 12:00
ST32单片机外扩PSRAM是不支持存储器映射的吧....

可以总线方式访问就行。

eric2013 发表于 2019-8-13 15:11:53

我用外部SRAM和SDRM测试正常。
而PSRAM就是速速慢点,按说也是没问题的,多试试吧

ihavedone 发表于 2019-8-13 17:43:18

可能跟FSMC 和 OS 初始化的顺序有关吧,堆栈访问之前一定要把 FSMC 初始化好,不然就出错了。

mmyer 发表于 2019-8-14 15:12:57

eric2013 发表于 2019-8-13 15:11
我用外部SRAM和SDRM测试正常。
而PSRAM就是速速慢点,按说也是没问题的,多试试吧

硬汉,有例程吗

mmyer 发表于 2019-8-14 15:17:10

ihavedone 发表于 2019-8-13 17:43
可能跟FSMC 和 OS 初始化的顺序有关吧,堆栈访问之前一定要把 FSMC 初始化好,不然就出错了。

初始化成功了的,能直接对psram的地址读写

eric2013 发表于 2019-8-15 01:13:28

mmyer 发表于 2019-8-14 15:17
初始化成功了的,能直接对psram的地址读写

从我们V5或者V6网盘的FreeRTOS文件夹下载一个定义heap空间到CCM的例子,仅需将其修改为外部SRAM即可,实测可用

lidp000 发表于 2019-8-15 15:29:02

eric2013 发表于 2019-8-15 01:13
从我们V5或者V6网盘的FreeRTOS文件夹下载一个定义heap空间到CCM的例子,仅需将其修改为外部SRAM即可,实 ...

硬汉老师,在项目中不使用自带的堆管理,使用FreeRtos的heap_4的堆管理可以吗

eric2013 发表于 2019-8-15 15:52:01

lidp000 发表于 2019-8-15 15:29
硬汉老师,在项目中不使用自带的堆管理,使用FreeRtos的heap_4的堆管理可以吗
管理的对象有所不同,启动.S文件里面那个是C库用的,malloc之类的API使用。
用heap_4的malloc类函数也是可以的,可行。


lidp000 发表于 2019-8-16 09:17:59

eric2013 发表于 2019-8-15 15:52
管理的对象有所不同,启动.S文件里面那个是C库用的,malloc之类的API使用。
用heap_4的malloc类函数也是 ...

{:31:}               

flystarcode 发表于 2021-6-14 20:59:42

你好是否可以分享下初始化部分
页: [1]
查看完整版本: 外扩PSRAM做HEAP硬件错误