[AT32F421] IAR编译出来RAM占用大

[复制链接]
 楼主| 457878 发表于 2021-1-20 14:06 | 显示全部楼层 |阅读模式
BSP\Project\AT_START_F421\Templates\IAR_v8.2 这个IAR模板编译出来RAM占用特别大4.18K,有办法解决吗?(Keil编译只占1.6K)
621746007c6cb8bc4b.png 961976007c6f006ad0.png


sheltonyu 发表于 2021-1-20 15:10 | 显示全部楼层
本帖最后由 sheltonyu 于 2021-1-20 15:14 编辑

你好,RAM差异是因为两种环境下的默认堆栈大小不一样导致的,默认size如下图
keil
a.PNG
IAR
b.PNG
改法:
可从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

搞定,太帅了! 6950560080381caf36.png
 楼主| 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的优化等级编译出来是这样的:
49390600820a9f319f.png
现优化等级是最高优化,下面这个内存占用应该没问题了吧,还是复位:
1598860081f58d064a.png
 楼主| 457878 发表于 2021-1-20 20:47 | 显示全部楼层
457878 发表于 2021-1-20 20:25
上面问题已OK,谢谢sheltonyu解决问题

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

原来是被看门狗咬了...我的打狗棒呢!!!   
发呆二极管 发表于 2021-1-21 00:56 | 显示全部楼层
学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不正常人类

270

主题

885

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:不正常人类

270

主题

885

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部