Board logo

标题: 求助:有谁用过9S08GT60片上flash烧写功能? [打印本页]

作者: zdyeey    时间: 2005-12-6 16:05     标题: 求助:有谁用过9S08GT60片上flash烧写功能?

通过程序烧写片上flash的时候,当执行page erase函数,其中有一个步骤是给FCMD寄存器写入0x40(扇区删除)的指令,不知为何程序指针会跳到0x0000处。可是单步执行的时候却是正常的,并且单字节写入的程序也是正常的。

那位高手能够指点一二!谢谢了!

程序是这样写的(见下面),先将FlashProg加载到ram中,通过_asm  JSR   FlashProg_Ram 调用执行。当全速执行的时候,执行FCMD = cmd;,程序指针就会跳到0x0000跑飞。

/* Flash Page Erase , Command $40 */
UINT8 FlashPageErase(UINT8 *flashAdd)

    if (FSTAT_FACCERR)
    {
        FSTAT_FACCERR = 1; //clear error 
    }
    //FlashProg(0x40,(UINT8 *)flashAdd,0x00);
    *flashAdd = 0x00;
    _asm  LDA   #64
    _asm  JSR   FlashProg_Ram
    return SUCCESS;
}

void FlashProg (UINT8 cmd)
{
    FCMD = cmd;
    FSTAT = 0x80;
    asm{
      nop
      nop
      nop
      nop
    }
    while (!FSTAT_FCCF);
}


作者: seuafu2005    时间: 2005-12-8 11:05

时钟设置是否准确?
要放在RAM里面跑。
有没有给出擦除的扇区的地址?




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