导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]arm如何在一个程序中既访问片外ram又访问片内ra[qjlsyarm]

 *第13377篇: [求助]arm如何在一个程序中既访问片外ram又访问片内ram?

  
楼 主:qjlsyarm 2003年6月12日11:39
 [求助]arm如何在一个程序中既访问片外ram又访问片内ram?
处理器为arm。

片外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 该如何写才好呢?

高手们,版主们,请多多赐教!!小弟将不胜感激!!



>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:实时时钟芯片DS1302多少钱?

[下一篇主题]:请问如何减少max3064中寄存器的使用