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

IAR中动态内存的分配问题

[复制链接]
小虾丁 提问时间:2017-1-11 11:48 /
使用的MCU型号为STM32L0x,在IAR中配置HEAP的大小为0x200,在程序中用语句char *p = malloc(10);来动态分配内存,链接时提示section placement failed. 如下图。是程序启动的时候,需要对HEAP进行初始化吗?如果需要,是调用什么函数进行初始化?请求帮助,谢谢了。

config.jpg

error.jpg
收藏 1 评论4 发布时间:2017-1-11 11:48

举报

4个回答
小虾丁 回答时间:2017-1-12 12:04:31
还是我自己解答吧。
其实是我搞错了,链接时提示的错误,是代码空间(FLASH)不够大的意思。当使用malloc()后,编译出的代码超过了我设定的代码空间大小。
所以在IAR里设置堆栈的大小后,就可以用malloc()来动态分配内存了。
不过话说回来,我感觉还是要进行HEAP的初始化的,可能是IAR在__iar_program_start里做了吧,这个以后再去研究了。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

小虾丁 回答时间:2017-1-11 11:55:32
补充:虽然链接失败,但生成的.map文件中已经有HEAP段,起始地址是0x200018b8。是在所用MCU的RAM范围0x20000000~0x20001FFF之内。链接错误提示好像把动态内存分配到其他地址空间里去了。所以我想是IAR里还需要什么其他设置,或者是需要在程序里作HEAP的初始化操作。

map.jpg
andypanfan 回答时间:2017-1-12 09:15:39
这个问题比较好,我好像没有在 里面malloc过!!!!!希望高手解答一下!!谢谢
小小超 回答时间:2017-1-12 10:58:00
没用过IAR,Keil好像不用这么麻烦。

所属标签

相似问题

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