457878 发表于 2021-1-20 14:06

IAR编译出来RAM占用大

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的优化等级编译出来是这样的:

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

457878 发表于 2021-1-20 20:47

457878 发表于 2021-1-20 20:25
上面问题已OK,谢谢sheltonyu解决问题

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

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

发呆二极管 发表于 2021-1-21 00:56

学习一下
页: [1]
查看完整版本: IAR编译出来RAM占用大