STM32通过IAR使用外部拓展SRAM实现堆栈空间最大化

1 篇文章 0 订阅

IAR如何拓展SRAM

如果你的开发板上有外部SRAM,讲下如何通过FSMC使用外部SRAM拓展内存

打开CubeMX-> 使能FSMC-> 选中控制段(本设备使用NE3-SRAM)-> 配置数据位 -> 配置时序

本设备采用 IS62WV51216 ,19bit地址+16bit数据,最大 512x16bit = 1MB,时序的参数通过看数据手册得出

 

 

重新生成代码,写个测试程序验证,下载运行,如果能打印正确则fsmc成功

 

 

Options-> Linker -> Edit ,这时加了FSMC会发现Memory Regions变得很全了

把PSRAM3的地址范围加进去,1M( 0x6800 0000 - 0x680f ffff),NE3的起始地址都为0x6800 0000,结束地址自己算内存大小

因为F407 SRAM3块:

SRAM1      112K

(0x2000 0000 - 0x2001 BFFF)

SRAM2      16K 

(0x2001 C000 - 0x2002 0000)

CCM-RAM 32K

(0x1000 0000 - 0x1000 FFFF)

这里把连续的 SRAM1 和 SRAM2 合并一起到SRAM1,SRAM2为0,CCM-RAM为系统高速RAM不动

 

 如果没有像我这样不要着急,是因为你的icf文件没改变,查看自己的icf文件是否有完整的memory信息!

找到加载的源文件用记事本打开查看,或者直接在工程里打开查看

 

 

可以看到若想显示完整的memory信息,需要加载fsmc.xml,要是没有怎么办?

 

找到IAR的安装目录下的linker库(IAR->arm->config-linker-> ST)

复制里面所有的代码注意:不是复制文件,是复制里面内容)到自己的工程目录下的 flash.icf 文件

重复配置上一步!!!

 

至此,我们能够清除看到所有内存信息的宏定义,以及堆栈大小定义

关于FSMC我们看到,把其4块合并成了一块内存,取名 FSMC_region

 

 

所以到最后,我们把 FSMC的 内存加进来,我们就可以修改其堆栈放入的位置

这里我把FSMC 所有全部给 使用,SRAM 给 使用,其余的 rw 和 section 放到 CCRAM中

注意:名字不要写错

 

最后把 堆栈空间拉满!!!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值