keil编译报错:内存不足;matlab转嵌入式代码问题

1.最近在做matlab转嵌入式c代码的测试,搞了二次规划的算法用matlab的embedded coder工具自动生成代码;

2.代码在vs2019的环境下正常运行,移植到stm32H743IIT6就报错:

 报错内容:内存溢出。

原因:matlab生成的代码中包含了一个超级大数组,数组成员上万个。。。。网上搜索了一番,说是堆栈太小,需要在启动文件中更改堆栈。实测后无效。最后无意中解决了。

内容更新(5月6日):static修饰的数组不存储在栈区,而是在全局数据区,所以报错不是因为栈溢出。一般情况下堆栈溢出编译是不会报错的

3.解决方案

如下:勾选IRAM2即可

 最后编译成功:

 总结:内存溢出的问题也许并不一定是单片机的内存不够,也可能和编译器的配置有关,本人小白,该案例仅供参考,不做解决方案。欢迎各位讨论讨论单片机内存溢出的问题及解决方案。

最后问一问:那个IRAM2勾选后到底改变了什么,这个选项有什么作用,望指导。。

内容更新(5月6日):IRAM2是选择单片机的sram区,stm32h743有1mb的内存,但不是连续的。而iram2就是一块512kb的高速ram区,所以选择之后就可以运行不报错。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值