片外ram的cs信号,读写信号,地址数据线都已连好。arm的外设空间定为0x60000000。然后在c程序里开一个数组用于访问此外部ram。现在的问题是:如何指定这个数组是放在外部ram内,而不是放在处理器内部ram中?
我现在的做法是修改scatter loader,在其中加一个空间用于外部ram:
ram_ext 0x60000000
{
test.o (extram)
}
然后再在c中加入:
#pragma arm section rwdata = "extram"
for(i=0;i <100;i++)
mymem[i]=i;
#pragma arm section code, rwdata
希望通过此方法来写外部ram(对应数组mymem[i]),同时希望中间变量i放在内部存储空间内,不放在外部ram中。
要达到这个目的该如何做?这样做对吗?为什么此时总提示:no section matches pattern test.*o(extram)? *是哪来的?scatter loader 中的test.o怎么变成了test.*o?
若将scatter loader的ram_ext部分写为
(I) test.o (+rw,+zi) 则i和mymem[i],在同一个区了;
(II) test.o (extram) 如上所述,报错no section matches pattern test.*o(extram)
(III) * (+rw,+zi) 也报错:ambiguous selectors found for libspace.o(.bss) from Exec regions RAM and RAM_EXT
scatter loader 该如何写才好呢?
高手们,版主们,请多多赐教!!小弟将不胜感激!!