黑皮男 发表于 2018-9-26 01:19:48

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

各位大神,外部SRAM怎样配置才能像内部SRAM一样分配变量,要编译器分配。我使用的是GCC,SRAM现在可以读写,但是就是不知道怎么修改链接脚本和启动文件。

shanji 发表于 2018-9-26 09:12:14

看看能不能用


黑皮男 发表于 2018-9-26 13:15:00

shanji 发表于 2018-9-26 09:12
看看能不能用

非常感谢,目前是不知道gcc的配置该怎么弄

Dandjinh 发表于 2018-9-26 13:17:45

找到工程中的.ld文件,添加类似下面的代码
MEMORY
{
RAM (xrw)      : ORIGIN = 0x20010000, LENGTH = 240K
DMARAM (rw)    : ORIGIN = 0x2004C000, LENGTH = 16K   
FLASH (rx)   : ORIGIN = 0x8000000,LENGTH = 1024K
}

SECTIONS
{
/* DMA RAM SECTION */
.dmasec :
{
    . = ALIGN(4);
    *(.dmarss)
    . = ALIGN(4);
} >DMARAM AT> FLASH
}

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

黑皮男 发表于 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,而无需在代码中指定
页: [1] 2
查看完整版本: 如何把外部SRAM像内部RAM一样分配变量