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

[求助]向版主请教关于EEPROM初始化问题

[求助]向版主请教关于EEPROM初始化问题

您好:
我现正在使用MC9S12DG128,在EEPROM的使用上遇到问题,向您请教.
问题1: 如何初始化EEPROM中的数据? 我在使用汇编时,在程序开始处定义
ORG $2000
EEPROMDATA: DC.W $0001,$0002
以上代码就会以 S123200000010002....的格式形成在S19文件中,这样就会直接写入EEPROM中,我想向您请教的是在C下如何实现以上操作?我不

知道$2000是不是P&E定义的缺省EEPROM地址?
在C下面,我想把RAM重定位在0x2000处,把EEPROM重定位在0x800开始处.

如果我在prm文件中如下定义,在S19文件中没有写入EEPROM的机器码,并且如果我使用value的首地址,发现它在0x2000处:
SEGMENTS
RAM = READ_WRITE 0x2000 TO 0x3dff;
RAMSTACK = READ_WRITE 0x3e00 TO 0x3fff;
EEPROM = READ_ONLY 0x800 TO 0XFFF;
END
PLACEMENT
EEPROM_DATA INTO EEPROM
END

c文件下
#pragam CONST_SEG EEPROM_DATA
const word value[2]={0xaa,0xaa};

如果我在prm文件中不定义EEPROM段而在C文件中如下写,那么在S19文件中只有写入0x800地址开始的机器码(s107080000aa00aa...),写不到

EEPROM中


c文件下

volatile const word value[2]@(0x800)={0xaa,0xaa};
如果写成这样
volatile const word value[2]@(0x2000)={0xaa,0xaa}; 又会有overlap的连接错误,因为我把RAM定义在0x2000处
我也试过在prm中使用FILL 命令,但结果和@是一样的.
请问楼主,我究竟应该如何定义,才能实现对EEPROM的初始化?
请参考这个帖子:
http://bbs.eccn.com/dispbbs.asp?boardid=3&rootid=114183&id=114183&star=
海纳百川  有容乃大
这个帖子我已经看过了,我试过使用WB 0x12 0x09,也试过在prm文件中用FILL命令,但编译结果形成的S19文件都是往0x800处写,而BDM分配给EEPROM的地址地0x2000,仍然是写不进去.是不是有办法将BDM的分配地址改成0x800呢?
返回列表