如何把外部SRAM像内部RAM一样分配变量
各位大神,外部SRAM怎样配置才能像内部SRAM一样分配变量,要编译器分配。我使用的是GCC,SRAM现在可以读写,但是就是不知道怎么修改链接脚本和启动文件。看看能不能用
shanji 发表于 2018-9-26 09:12
看看能不能用
非常感谢,目前是不知道gcc的配置该怎么弄 找到工程中的.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:10 编辑
Dandjinh 发表于 2018-9-26 13:17
找到工程中的.ld文件,添加类似下面的代码
多谢指点,现在变量可以定位到SRAM,怎么想内部的RAM一样由编译器gcc来管理,应该怎么操作,请再指点一下 学习一下。 解决没有?解决没有?解决没有? 00dd 发表于 2018-9-29 14:09
解决没有?解决没有?解决没有?
没有解决,等待大神来解答啊 黑皮男 发表于 2018-9-26 23:06
多谢指点,现在变量可以定位到SRAM,怎么想内部的RAM一样由编译器gcc来管理,应该怎么操作,请再指点一下 ...
具体是什么意思?初始化问题? Dandjinh 发表于 2018-10-10 12:09
具体是什么意思?初始化问题?
就是说再编译的阶段,编译器就自动把变量定义到外部ram,而无需在代码中指定
页:
[1]
2