Board logo

标题: [求助]PRM与MAP的问题 [打印本页]

作者: purplewpp    时间: 2006-12-5 15:46     标题: [求助]PRM与MAP的问题

 


大家好:


    我在调试中遇到几个问题,我用的芯片是AW32,变量总数小于800字节。


 


谢谢


 


作者: purplewpp    时间: 2006-12-5 15:48

内容在附件中http://bbs.eccn.com/uploadImages/大家.doc
作者: purplewpp    时间: 2006-12-5 15:51

如果附件不方便看,我将其中的内容用文件表达:
大家好 :
我在调试中遇到3个问题,请向大家请教:

一、我的想法是大部分的变量放在DEFAULT¬_RAM 中,而BACKUP¬_RAM_R和BACKUP¬_RAM_W中放我用来存储在I2C中的变量。
下面是PRM文件中我的设置:


NAMES END /* CodeWarrior will pass all the needed files to the linker by command line. But here you may add your own files too. */
SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */
ROM = READ_ONLY 0x8000 TO 0xFFAF;
Z_RAM = READ_WRITE 0x0070 TO 0x00FF;
BUCKUP_RAM_R1 = READ_WRITE 0x0100 TO 0x02FF;
BUCKUP_RAM_W1 = READ_WRITE 0x0300 TO 0x04FF;
RAM = READ_WRITE 0x0500 TO 0x086F;
ROM1 = READ_ONLY 0xFFC0 TO 0xFFCB;
END
PLACEMENT /* Here all predefined and user segments are placed into the SEGMENTS defined above. */
BACKUP_RAM_R INTO BUCKUP_RAM_R1
BACKUP_RAM_W INTO BUCKUP_RAM_W1
DEFAULT_RAM INTO RAM;
DEFAULT_ROM, ROM_VAR, STRINGS INTO ROM; /* ROM1 In case you want to use ROM1 as well, be sure the option -OnB=b is passed to the compiler. */
_DATA_ZEROPAGE, MY_ZEROPAGE INTO Z_RAM;
END

STACKSIZE 0x50


2、在所有的。H文件中我都用了:#pragma DATA_SEG DEFAULT_RAM
可在BACKUP¬_RAM_R和BACKUP¬_RAM_W的RAM部分0X100—0X4FF中,Memory对话框还是有很多的数据。
但如果看MAP文件则显示为所有的变量在0X500—0X6D7之间。
这是为什么????

作者: purplewpp    时间: 2006-12-5 15:52

二、我用#pragma DATA_SEG BACKUP_RAM_W 语句,想将以下几个变量放入0x0300 TO 0x04FF之间,可MAP文件显示,并没有变量在0x0300 TO 0x04FF之间,仍在DEFAULT_RAM定义的段中。这是为什么?部分.H文件,如下:

#define LONG_FILL_TIME 5
#define LONG_DRAIN_TIME 6

#pragma DATA_SEG BACKUP_RAM_W
EXT unsigned char display_hour;
EXT unsigned char display_minutes;
EXT unsigned char display_seconds;

EXT unsigned char protect_hours;
EXT unsigned char protect_minutes;
EXT unsigned char protect_seconds;
#pragma DATA_SEG DEFAULT_RAM

三、我想要做的是将一部分变量放入DEFAULT_RAM定义的段中,将掉电时要保存到I2C中的变量存入BACKUP_RAM_W定义的段中,将BACKUP_RAM_R定义的段中内容为空,用来验证及保存我从I2C中读取的数据。我怎样做才能达到我想要的结果???

作者: strongchen    时间: 2006-12-5 16:33

如果你愿意,请将project打包贴出来,或发到我的信箱strongchen_free@yahoo.com.cn。
作者: purplewpp    时间: 2006-12-6 08:08

谢谢版主。但因为单位的原因不方便打包。我想知道如何将一个变量定义到某一固定地址??
还请版主解答。
作者: strongchen    时间: 2006-12-6 09:25

像你这样用SEGMENTS的方式定义应该是可以的,所以我想看一下问题到底在哪。你可以先做一个简单的project,试试你的定义方法和格式有没有问题,然后再查一下问题到底是什么。
作者: purplewpp    时间: 2006-12-6 16:25

问题解决了,但解决的方式很怪。
我在原来的PROJECT上反复修改PRM文件,但总是不能完全正确。

重新建了一个新的PROJECT,将SOURSE文件夹复制过去,对PRM 进行设置,再运行,MAP中的定义就一切正常了。怪事。
谢谢版主,不是借您吉言,我是不会重新建一个PROJECT。THANK YOU VERY MUCH!


作者: strongchen    时间: 2006-12-7 09:06

肯定是原来的project里有一个小的错误没有注意到。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0