你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
电小龙 提问时间:2019-10-29 11:25 /
用阿波罗stm32f429igt6的开发板,想用板上的sdram进行内存管理,加入了freertos的基本工程,测过freertos没问题,现在只要初始化内存管理my_mem_init后就会死机,有人遇到过这种问题吗?后来用jlink仿真看到,运行到mymemset这个函数就死机了,如图见此函数。


未命名1572319341.png
收藏 评论17 发布时间:2019-10-29 11:25

举报

17个回答
电小龙 回答时间:2019-10-29 11:29:02
会不会跟freertos有关呢,但是屏蔽掉箭头处的两个函数就不死机了,测试freertos是没问题的、、C:\Users\Fanglong\Desktop\未命名1572319589.png
未命名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的。如下图
未命名1572329445.png
未命名1572329478.png
未命名1572329671.png
电小龙 回答时间:2019-10-29 14:18:53
我之前觉得是freertos中分配了写内存给它用,所以我后来将分配的内部RAM改小还是不行
mikecai 回答时间:2019-10-30 08:29:01
那您进行多任务内存分配时,是否先加信号量或互斥量,分配后释放信号量或互斥量,以避免资源争抢?
回答时间:2019-10-30 08:44:36
楼主,注意一下获取静态变量时不要超过任务的堆栈大小,我之前遇到过类似问题,因为我定义数组超出了任务堆栈后,进入的错误中断。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

电小龙 回答时间: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,未发生过类似问题。
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版