Board logo

标题: hcs08dz60的FLASH编程和擦除 [打印本页]

作者: pjnlgm1986    时间: 2009-12-2 10:35     标题: hcs08dz60的FLASH编程和擦除

请问有谁写过hcs08dz60的FLASH编程和擦除的程序,在编程和擦前应注意什么?
我写的程序数据就是烧录不到FLASH中
作者: pjnlgm1986    时间: 2009-12-2 21:29

请高手看一下我的程序为甚麽不能连续的写入到FLASH指定的地址,只能写一个字节进去
void  WriteToFlash(byte * dest,byt* sour,word length)
{
     word  i;
     while(FSTAT & 0x30);
     FSTAT = 0X30;
     while(!(FSTAT&0X80));
     while(length--)
     {
           *dest = *sour;
          FCMD = 0X20;
          FSTAT = 0X80;
          while(!(FSTAT & 0X80));
          while(!(FSTAT & 0X40))
     }
}

在调试过程中如果单步执行一个自己的数据都写不进去
另外我也看了一些资料,说FLASH的擦写需要调到RAM中去执行,是为什么?
有的程序有asm机器码的是怎么个道理呢?

我也在做bootloader问题多多,郁闷!!已经调了好几天了

有没有高人指点一下呀!~~~~
作者: fayefayehoo    时间: 2009-12-8 14:53

FSTAT = 0x80;
while(!(FSTAT & 0x80));
asm("RTC");
你先把这3句的机器码找到,存到数组wait[]里(ram),然后在"FCMD = 0X20"后, 用asm("JSR wait")。
作者: achao86926    时间: 2010-6-19 17:58

3楼说的很对,RAM中运行的机器码为
UINT8 code_buf[]=
{
0xc6,0x18,0x25,0xaa,0x80,0xc7,0x18,0x25,0xc6,0x18,0x25,0xa5,0x40,0x27,0xf9,0x81
};
0x81是RTS指令,不是RTC指令,在64K范围内跳转应该使用RTS就可以了,如果超过64K就必须用RTC了,
作者: 唯茹独尊    时间: 2010-6-23 13:57

顶一把,我也不知道什么意思,从没刷机过
作者: 望穿的微笑    时间: 2010-6-23 13:57

"9RIA天地会"官方合作




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