各位前辈好,最近在用串口做28335的应用程序在线更新,有时候可以刷写成功,有时候在烧写是返回STATUS_FAIL_ZERO_BIT_ERROR,而且出现该错误断电重启再次烧写还是不成功,必须要重新刷写底层boot程序才可以。目前已经将全局中断关闭,请问各位这种情况有没有遇到过,怎么解决该问题?
部分代码如下:
DisableDog();
InitPll(DSP28_PLLCR,DSP28_DIVSEL);
InitPeripheralClocks();
DINT; //关闭全局终端
MemCopy(&Flash28_API_LoadStart, &Flash28_API_LoadEnd, &Flash28_API_RunStart);
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
Flash_CPUScaleFactor = SCALE_FACTOR;
Flash_CallbackPtr = NULL;
SCIA_Init();
Example_CallFlashAPI(); //清除烧写应用程序的扇区
CopyData(); //刷写应用程序
if((checknum[0] == checknumflag[0])&&(checknum[1] == checknumflag[1]))
{
for(i = 0; i < (Length/2); i++)
{
Buffer[i] = ((Uint16)ProBuf[2*i]) | (((Uint16)ProBuf[2*i+1])<<8);
}
DELAY_US(10);
status = Flash_Program(Flash_ptr, Buffer, (Length/2), &FlashStatus); //程序主要在这里返回错误
if(status != STATUS_SUCCESS) {
SciaRegs.SCITXBUF = status & 0xff;
SCI_SendStatus("err\n");
return ;
}
else
{
Flash_ptr += (Length/2);
SCI_SendStatus("ok\n");
}
}
user5014940:我也遇到同样的问题,我用仿真器仿真是可以正常操作的,断电重新运行就会出现这个错误,大佬怎么解决的方便指点一下吗?