打印
[AT32F421]

IAR编译出来RAM占用大

[复制链接]
843|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
457878|  楼主 | 2021-1-20 14:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
BSP\Project\AT_START_F421\Templates\IAR_v8.2 这个IAR模板编译出来RAM占用特别大4.18K,有办法解决吗?(Keil编译只占1.6K)



使用特权

评论回复
沙发
sheltonyu| | 2021-1-20 15:10 | 只看该作者
本帖最后由 sheltonyu 于 2021-1-20 15:14 编辑

你好,RAM差异是因为两种环境下的默认堆栈大小不一样导致的,默认size如下图
keil

IAR

改法:
可从BSP中的Libraries/CMSIS/CM4/DeviceSupport/startup/iar/linker下拷贝一份对应的icf文件到工程目录
点击IAR图中步骤2的复选框选中拷贝到工程目录的icf文件,再点击步骤3修改堆栈大小后保存就可以了。


使用特权

评论回复
板凳
457878|  楼主 | 2021-1-20 18:19 | 只看该作者
sheltonyu 发表于 2021-1-20 15:10
你好,RAM差异是因为两种环境下的默认堆栈大小不一样导致的,默认size如下图
keil

搞定,太帅了!

使用特权

评论回复
地板
457878|  楼主 | 2021-1-20 20:25 | 只看该作者
本帖最后由 457878 于 2021-1-20 20:41 编辑

上面问题已OK,谢谢sheltonyu解决问题

另一个问题,我的程序跑到某个地方就复位(一个驱动函数,多运行几遍就复位,直接进int main()),..堆栈没溢出(没有跑到HardFault_Handler())
头大了,怀疑RAM还是不够用,芯片是AT32F421K8U7 (ROM=64K,RAM=8K)
原来Low的优化等级编译出来是这样的:

现优化等级是最高优化,下面这个内存占用应该没问题了吧,还是复位:

使用特权

评论回复
5
457878|  楼主 | 2021-1-20 20:47 | 只看该作者
457878 发表于 2021-1-20 20:25
上面问题已OK,谢谢sheltonyu解决问题

另一个问题,我的程序跑到某个地方就复位(一个驱动函 ...

原来是被看门狗咬了...我的打狗棒呢!!!   

使用特权

评论回复
6
发呆二极管| | 2021-1-21 00:56 | 只看该作者
学习一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不正常人类

268

主题

876

帖子

3

粉丝