求助:有谁用过9S08GT60片上flash烧写功能?
- UID
- 121569
- 性别
- 男
|
求助:有谁用过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); }
|
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
时钟设置是否准确?
要放在RAM里面跑。
有没有给出擦除的扇区的地址? |
|
|
|
|
|