你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何把外部SRAM像内部RAM一样分配变量

[复制链接]
黑皮男 提问时间:2018-9-26 01:19 /
各位大神,外部SRAM怎样配置才能像内部SRAM一样分配变量,要编译器分配。我使用的是GCC,SRAM现在可以读写,但是就是不知道怎么修改链接脚本和启动文件。
<
收藏 评论13 发布时间:2018-9-26 01:19

举报

13个回答
shanji 回答时间:2018-9-26 09:12:14
看看能不能用

STM32外扩RAM做变量定义与内部RAM做堆栈的设置.pdf (95.81 KB, 下载次数: 144)

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

黑皮男 回答时间:2018-9-26 13:15:00

非常感谢,目前是不知道gcc的配置该怎么弄
Dandjinh 回答时间:2018-9-26 13:17:45
找到工程中的.ld文件,添加类似下面的代码
  1. MEMORY
  2. {
  3. RAM (xrw)      : ORIGIN = 0x20010000, LENGTH = 240K
  4. DMARAM (rw)    : ORIGIN = 0x2004C000, LENGTH = 16K     
  5. FLASH (rx)     : ORIGIN = 0x8000000,  LENGTH = 1024K
  6. }

  7. SECTIONS
  8. {
  9.   /* DMA RAM SECTION */
  10.   .dmasec :
  11.   {
  12.     . = ALIGN(4);
  13.     *(.dmarss)
  14.     . = ALIGN(4);
  15.   } >DMARAM AT> FLASH
  16. }
复制代码


定义变量的时候加后缀 __attribute__((section(".dmarss"))),这样就可以把变量定义在指定内存地址里。
初始化要修改.s文件,比较麻烦,我都是自己写个Init函数解决的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

黑皮男 回答时间:2018-9-26 23:06:13
本帖最后由 黑皮男 于 2018-9-26 23:10 编辑
Dandjinh 发表于 2018-9-26 13:17
找到工程中的.ld文件,添加类似下面的代码

多谢指点,现在变量可以定位到SRAM,怎么想内部的RAM一样由编译器gcc来管理,应该怎么操作,请再指点一下
zjczm 回答时间:2018-9-27 12:21:00
学习一下。
00dd 回答时间:2018-9-29 14:09:51
解决没有?解决没有?解决没有?
黑皮男 回答时间:2018-9-29 17:14:12
00dd 发表于 2018-9-29 14:09
解决没有?解决没有?解决没有?

没有解决,等待大神来解答啊
Dandjinh 回答时间:2018-10-10 12:09:37
黑皮男 发表于 2018-9-26 23:06
多谢指点,现在变量可以定位到SRAM,怎么想内部的RAM一样由编译器gcc来管理,应该怎么操作,请再指点一下 ...

具体是什么意思?初始化问题?
黑皮男 回答时间:2018-10-11 13:16:24
Dandjinh 发表于 2018-10-10 12:09
具体是什么意思?初始化问题?

就是说再编译的阶段,编译器就自动把变量定义到外部ram,而无需在代码中指定
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版