首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用外部扩展ram的问题

使用外部扩展ram的问题

我有一个工程:
prm文件:
RAM = READ_WRITE 0x0400 TO 0x0FFF;
RAMPAGE_0 = READ_WRITE 0x008000 TO 0x00BFFF;
RAMPAGE_1 = READ_WRITE 0x018000 TO 0x01BFFF;
RAMPAGE_2 = READ_WRITE 0x028000 TO 0x02BFFF;
RAMPAGE_3 = READ_WRITE 0x038000 TO 0x03BFFF;
RAMPAGE_4 = READ_WRITE 0x048000 TO 0x04BFFF;
RAMPAGE_5 = READ_WRITE 0x058000 TO 0x05BFFF;
RAMPAGE_6 = READ_WRITE 0x068000 TO 0x06BFFF;
RAMPAGE_7 = READ_WRITE 0x078000 TO 0x07BFFF;

DEFAULT_RAM INTO RAM ;
PAGED_RAM INTO RAMPAGE_1, RAMPAGE_2, RAMPAGE_3;
也使用了编译选项-cppage=runtime;

我定义了好几个大数组,放在扩展RAM中(PAGED_RAM)。
但是只有RAMPAGE_1中的可以被使用。如:初始化为零。
其他的地址如高位应该为0x02XXXX,还是0x01XXXX. 为什么呀?哪里错了?
地址的高位当然与其页号有关。你说别的PAGE中断的数组不可用,现象是怎样的?
海纳百川  有容乃大
现象是:同样是初始化数组元素,比如a[100],
pbyte = (unsigned char* __far) a;
pbyte的值理论上是0x28000(a[100]放在RAMPAGE_2中,且通过.map文件看到应该是这个地址)。
实际上程序的值是0x18000.就是不切换page页。
请参看这两个帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104072&ID=104072
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104163&ID=104163
如果还有问题,请把整个project打包贴出来看看。
海纳百川  有容乃大
我把文件传上来,你可以看看b,c,d数组能否正确初始化.
谢谢版主了.

[此贴子已经被作者于2007-7-27 8:35:38编辑过]

工程上传了
工程上传,稍等。

[此贴子已经被作者于2007-7-27 8:50:40编辑过]

传上来,http://bbs.chinaecnet.com/uploadImages/Test2.zip
你把main里面的“#pragma DATA_SEG __PPAGE_SEG PAGED_RAM_1”这一句去掉就可以了。也可以在不同页的数组前分别加一个分页说明。
海纳百川  有容乃大
真的也。斑竹能不能告诉我为什么呀?
你加上这一句说明后,让编译器以为它们都处于同一个页了。
海纳百川  有容乃大
strongchen是位好同志。
不知道楼主能否提供以下其它联系方式,我有些使用外部扩展ram的问,想请教一下,我的邮箱是[email=lshbo_2008@sina.com.    QQ]QQ[/email] :271208623
返回列表