TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28379D调用FlashSectorErase返回Fapi_Error_Fail

概述:

在TMS320F28379D开发板上调试,软件分为固件和应用,固件部分负责下载和引导应用程序,

Flash分配为:固件计划可以使用区域A~D存储,应用计划可以使用区域E~J存储

情况:固件实际使用了区域A。开始的时候,应用程序仅使用区域E,可以正常擦除,写入。最近,应用程序增加,使用区域E和F后,E擦除失败。

问题:为什么应用只使用区域E时,可以擦除成功,而使用区域EF时,擦除区域E会失败?

代码:

if(SectorPositionFind(nAddress, &nSectorLen,&nSectorPos) == 1)
 {
  return Fapi_Error_Fail;
 }
 
 if(((tFwVar.unSectorBit.all >> nSectorPos)&0x0001) == 0) {
  nRetVal = FlashSectorErase(nAddress,nSectorLen);  //此处会返回失败
  if(nRetVal == Fapi_Status_Success)
  {
   tFwVar.unSectorBit.all |= (1u<<nSectorPos);
   printf("Sector Pos:%d  \r\n", nSectorPos);
  }
  else
  {
   printf("Failed Sector Pos:%d  \r\n", nSectorPos);
   return nRetVal;
  }
 }

Eric Ma:“情况:固件实际使用了区域A。开始的时候,应用程序仅使用区域E,可以正常擦除,写入。最近,应用程序增加,使用区域E和F后,E擦除失败。

问题:为什么应用只使用区域E时,可以擦除成功,而使用区域EF时,擦除区域E会失败?”
Eric:
其实你可以先在TI的例程先测试一下,用例程都是可以擦出EF的,你按照例程的擦除函数去做。
另外有一点要注意的是,注意关掉中断。还有所有的FLASH 操作都要运行在RAM中。
Flash API library directory path:
~\controlSUITE\device_support\F2837xD\<latest_version>\F2837xD_common\lib

Flash API headers directory path:
~\controlSUITE\device_support\F2837xD\<latest_version>\F2837xD_common\include\FlashAPI

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28379D调用FlashSectorErase返回Fapi_Error_Fail
分享到: 更多 (0)