嵌入式技术论坛
直播中

刘杰

8年用户 1390经验值
私信 关注
[问答]

RTThread_Studio IDE怎么将数组定义到外部SDRAM中呢?

想把大数组定义到外部SDRAM的绝对地址处,结果编译发现
warning:'at' attribute directive ignored,
也就是说无法在RTthreadStudio中使用_attribute((at(地址)))这种绝对定位方式,

请问如何操作才能将数组定义到外部SDRAM呢(非动态分配方式)?
网上自己查阅了一下,有说用_attribute_((section(“块名”))),
但好像要修改lds文件,对于lds文件并不是很了解,
请问具体该如何操作,还是说有其他方式?

请大家帮帮忙,谢谢!

回帖(1)

贾埃罗

2023-1-9 17:25:18
举个栗子,

#elif defined ( __GNUC__ )
uint16_t ADCxValues[3] __attribute__((section(".ADCArraySection")));
#endif
rtt-studio 用的是 GCC 编译器, 所以前面增加 GNUC

下面描述就是将 ADC 的数组指定到某个区域去,这个区域的指定,需要修改链接文件 lds。

/* Program Entry, set to mark it as "used" and avoid gc */
MEMORY
{
ROM (rx) : ORIGIN =0x08000000,LENGTH =2048k
RAM (rw) : ORIGIN =0x24000000,LENGTH =512k
ADCArraySection (rw) : ORIGIN =0x30020000,LENGTH =128k
}
这样还不够,在修改一下

    .ADCArraySection (NOLOAD) : ALIGN(4)
    {
    . = ALIGN(4);
    *(.ADCArraySection)
    *(.ADCArraySection.*)
    . = ALIGN(4);
    __ADCArraySection_free__ = .;
    } > ADCArraySection

这样就可以了,楼主赶紧去试试吧。

另外也可以参考一下 ART-Pi 以太网描述符的方法。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分