您好,
我编写了一个基于TI提供的"F2.8027万_FLASH_KERNEE"示例项目的引导加载程序项目。 我已将项目加载到FLASHA,主要功能如下:
UINT32主(无效)
{
//GPIO和SCI仍然是从Sci_Boot()设置的
//设置sysctl和PLL
//DisableDog ();
IntOscar 1Sel();
memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,(size_t)&RamfuncsLoadSize);//copy SCI_Boot()从闪存复制到RAM
InitPll (DSP28_PLLCR,DSP28_DIVSEL);
InitFlash();
DELAY _US (100);
返回SCI_Boot();
}
SCI_Boot()函数是用于升级驻留在FLASHB,FLASHC,FLASHD中的应用程序的函数。
升级应用程序项目效果很好。
然后我要升级驻留在FLASHA中的引导加载程序本身,然后我需要擦除SCI_Boot()中的FLASHA,代码如下所示:
状态= Flash_Erase((sectora | sectorb | SECTRC | SECORD),&FlashStatus);
但当CPU执行此代码时 ,它将进入非法陷阱中断。
这是否意味着我无法擦除主功能所在的闪存扇区? 我已经将SCI_Boot()复制到RAM。
谢谢。