标题: 使用外部扩展ram的问题 [打印本页]
作者: miserzhou 时间: 2007-7-26 14:24 标题: 使用外部扩展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. 为什么呀?哪里错了?
作者: strongchen 时间: 2007-7-26 16:06
地址的高位当然与其页号有关。你说别的PAGE中断的数组不可用,现象是怎样的?
作者: miserzhou 时间: 2007-7-26 16:48
现象是:同样是初始化数组元素,比如a[100],
pbyte = (unsigned char* __far) a;
pbyte的值理论上是0x28000(a[100]放在RAMPAGE_2中,且通过.map文件看到应该是这个地址)。
实际上程序的值是0x18000.就是不切换page页。
作者: strongchen 时间: 2007-7-26 17:09
请参看这两个帖子:
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打包贴出来看看。
作者: miserzhou 时间: 2007-7-27 08:35
我把文件传上来,你可以看看b,c,d数组能否正确初始化.
谢谢版主了.
[此贴子已经被作者于2007-7-27 8:35:38编辑过]
作者: miserzhou 时间: 2007-7-27 08:37
工程上传了
作者: miserzhou 时间: 2007-7-27 08:50
工程上传,稍等。
[此贴子已经被作者于2007-7-27 8:50:40编辑过]
作者: miserzhou 时间: 2007-7-27 08:51
传上来,http://bbs.chinaecnet.com/uploadImages/Test2.zip
作者: strongchen 时间: 2007-7-27 10:15
你把main里面的“#pragma DATA_SEG __PPAGE_SEG PAGED_RAM_1”这一句去掉就可以了。也可以在不同页的数组前分别加一个分页说明。
作者: miserzhou 时间: 2007-7-27 12:35
真的也。斑竹能不能告诉我为什么呀?
作者: strongchen 时间: 2007-7-27 13:18
你加上这一句说明后,让编译器以为它们都处于同一个页了。
作者: miserzhou 时间: 2007-7-28 12:15
strongchen是位好同志。
作者: hooter 时间: 2011-10-23 10:09
不知道楼主能否提供以下其它联系方式,我有些使用外部扩展ram的问,想请教一下,我的邮箱是[email=lshbo_2008@sina.com. QQ]QQ[/email] :271208623
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |