电小龙 发表于 2019-10-29 11:25:04

使用sdram进行开发,Malloc后死机进入hardfault

用阿波罗stm32f429igt6的开发板,想用板上的sdram进行内存管理,加入了freertos的基本工程,测过freertos没问题,现在只要初始化内存管理my_mem_init后就会死机,有人遇到过这种问题吗?后来用jlink仿真看到,运行到mymemset这个函数就死机了,如图见此函数。


电小龙 发表于 2019-10-29 11:29:02

会不会跟freertos有关呢,但是屏蔽掉箭头处的两个函数就不死机了,测试freertos是没问题的、、C:\Users\Fanglong\Desktop\未命名1572319589.png

mikecai 发表于 2019-10-29 13:33:37

1)可能您的内存有问题,先检查硬件,换个SDRAM试一下 或 换个可运行您的代码环境,确认一下内存分配代码是否可行;2)内存不够分配,分配地址过大。

电小龙 发表于 2019-10-29 14:12:50

mikecai 发表于 2019-10-29 13:33
1)可能您的内存有问题,先检查硬件,换个SDRAM试一下 或 换个可运行您的代码环境,确认一下内存分配代码是 ...
硬件没问题,首先是正点原子的开发板,而且我烧录他们的参考例程是可以的,不过参考例程里是裸奔的。内存地址分配的我检查了下,也没有超,开发板上的SDRAM是32M的。如下图

电小龙 发表于 2019-10-29 14:18:53

我之前觉得是freertos中分配了写内存给它用,所以我后来将分配的内部RAM改小还是不行

mikecai 发表于 2019-10-30 08:29:01

那您进行多任务内存分配时,是否先加信号量或互斥量,分配后释放信号量或互斥量,以避免资源争抢?

发表于 2019-10-30 08:44:36

楼主,注意一下获取静态变量时不要超过任务的堆栈大小,我之前遇到过类似问题,因为我定义数组超出了任务堆栈后,进入的错误中断。

电小龙 发表于 2019-10-30 11:04:08

mikecai 发表于 2019-10-30 08:29
那您进行多任务内存分配时,是否先加信号量或互斥量,分配后释放信号量或互斥量,以避免资源争抢? ...

freertos基础例程里只有一个LED灯的闪烁任务,还没有加信号量或互斥量

电小龙 发表于 2019-10-30 11:08:09

安 发表于 2019-10-30 08:44
楼主,注意一下获取静态变量时不要超过任务的堆栈大小,我之前遇到过类似问题,因为我定义数组超出了任务堆 ...

我用的基础例程,里面只有LED闪灯的任务,应该没涉及到这些内容吧、、

发表于 2019-10-30 14:54:36

楼主,请问一下工程配置中的RAM地址范围是否有进行修改?我之前用过SRAM,未发生过类似问题。
页: [1] 2
查看完整版本: 使用sdram进行开发,Malloc后死机进入hardfault