Board logo

标题: 求助:关于s12dj64芯片EEPROM地址映射的问题 [打印本页]

作者: C777777    时间: 2008-7-17 13:05     标题: 求助:关于s12dj64芯片EEPROM地址映射的问题

dj64的片子的RAM缺省地址是0x0000-0x0fff,EEPROM的缺省地址是0x000-0x07ff,由于内部寄存器的地址是0x000-0x03ff,所以EEPROM的缺省地址是0x0400-0x07fff,我现在想把eeprom的地址映射以到0x1000为起始地址的空间中去,看了论坛里想关帖子,我在MAIN函数里设置了INITEE=0x11,后面加了条空操作,MISC=1;在PRM里的P&E_ICD_linker.prm文件加了EEPROM = READ_ONLY 0x1000 TO 0x13FF;这样一句话。在运行程序的时候可以写到0x1000里,但是一复位0x1000里的值就为0了,掉电后也保存不了,不知还需要设置什么寄存器或在其他文件修改什么值,请版主帮助解决下,谢谢!

EFT0zDUb.rar (322.9 KB)


附件: [求助:关于s12dj64芯片EEPROM地址映射的问题] EFT0zDUb.rar (2008-7-17 12:47, 322.9 KB) / 下载次数 303
http://bbs.eccn.com/attachment.php?aid=4731&k=404daee40008a25918effa8b54bdbfd0&t=1732315992&sid=VvCQFL
作者: strongchen    时间: 2008-7-17 17:37

芯片掉电后,如果用CodeWarrior重新连接,缺省的设置是擦除所有的FLASH和EEPROM。你可以设置不擦除EEPROM试试。论坛里应该有相应的帖子说明如何做。
作者: C777777    时间: 2008-7-18 09:45

那复位后寄存器为0或FF是什么原因,是系统默认的吗?

可是我如果不映射EEPROM地址,复位是不会为0或FF的

我想确认下 如果想映射EEPROM地址是不是只要在MAIN函数里设置INITEE寄存器,在P&E_ICD_linker.prm文件里声明EEPROM映射的地址,其他还要设置什么寄存器或声明什么内容?


作者: strongchen    时间: 2008-7-18 16:13

寄存器的值在复位后是有确定的值的。

重新映射EEPROM的地址,只要设置INITEE寄存器并修改PRM文件就可以了。


作者: pataCooper    时间: 2008-7-19 10:47

我记得INITEE在复位后只能初始化一次,在start.c会初始化,你在main中又初始化了一遍会不会有问题?我不确定,大家讨论下。


作者: strongchen    时间: 2008-7-21 10:58

在start.c中,缺省状态下并不初时化INITEE等寄存器。
作者: 大大的天空    时间: 2008-7-23 10:01

我想应该是这样,你第一次写程序时prm中为编译器定义了eeprom地址,在主程序初始化时对INITEE进行了重映射,

此时你已经可以对eeprom进行预置地址的读和写操作了。(已经写入eeprom)

在你复位MCU后,所有寄存器被复位,INITEE重新把EEPROM映射到0x0000-0x07ff。此时在调试环境下的0x1000- 0x13FF认为没有定义状态。所以你看到的都是0000。当程序运行完IEEE初始化后,此段内容变为FFFF。说明eeprom已经被映射到此。 (eeprom的内容是FFFF,即擦除状态)

为什么上次写的数据没有了,正如斑竹说的,cw在缺省状态下载程序时会擦除所有eeprom,和flash。

[此贴子已经被作者于2008-7-23 10:02:06编辑过]


作者: C777777    时间: 2008-7-25 17:24

我现在遇到的问题我想的是:在默认地址情况下,RAM和EEPROM重叠,写EEPROM可以直接写入,不用先擦除,但是映射过以后,必须先擦除你要写入数据的地址中的内容,然后才能写入数据。

我想情况应该是7楼说的那样,在memory窗口看到的内容可能不是预期的,但是读取写地址的内容是预想的情况。

欢迎大家讨论。


作者: strongchen    时间: 2008-7-28 15:19

当RAM与EEPROM地址重叠时,由于RAM级别比EEPROM高,因此对这个地址操作时,实际上是对RAM进行操作,EEPROM完全被屏蔽掉了。当真正对EEPROM进行操作时,在写入之前是一定是要先擦除的。




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