This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
使用 FLASH_API 时 CPU1和 CPU2之间的区别是什么?
CPU1的代码(可以执行擦除操作):
SeizeFlashPump(); EALLOW; oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, 200); if(oReturnCheck != Fapi_Status_Success) { //Example_Error(oReturnCheck); return false; } oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0); if(oReturnCheck != Fapi_Status_Success) { return false; } oReturnCheck = Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector, (uint32 *)Bzero_SectorD_start); while(Fapi_checkFsmForReady() != Fapi_Status_FsmReady){} oReturnCheck = Fapi_doBlankCheck((uint32 *)Bzero_SectorD_start, Bzero_16KSector_u32length, &oFlashStatusWord); if(oReturnCheck != Fapi_Status_Success) { // Example_Error(oReturnCheck); return false; } for(i=0;i<4;i++) { Buffer[i*2] = mflagWord; Buffer[i*2 + 1] = cpu_selected; } for(i=0, u32Index = Bzero_SectorD_start; (u32Index < (Bzero_SectorD_start + 8)) && (oReturnCheck == Fapi_Status_Success); i+= 8, u32Index+= 8) { oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32Index,Buffer, 8, 0, 0, Fapi_AutoEccGeneration); while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy); if(oReturnCheck != Fapi_Status_Success) { // Example_Error(oReturnCheck); return false; } oFlashStatus = Fapi_getFsmStatus(); // oReturnCheck = Fapi_doMarginRead((uint32 *)u32Index,debug32buf+(i/2),4, Fapi_NormalRead); if(oReturnCheck != Fapi_Status_Success) { // Example_Error(oReturnCheck); return false; } } EDIS; ReleaseFlashPump(); return true;
CPU2的代码(It 无法 执行擦除操作):
CPU2SeizeFlashPump(); EALLOW; oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, 200); if(oReturnCheck != Fapi_Status_Success) { //Example_Error(oReturnCheck); return false; } oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0); if(oReturnCheck != Fapi_Status_Success) { return false; } oReturnCheck = Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector, (uint32 *)Bzero_SectorD_start); while(Fapi_checkFsmForReady() != Fapi_Status_FsmReady){} oReturnCheck = Fapi_doBlankCheck((uint32 *)Bzero_SectorD_start, Bzero_16KSector_u32length, &oFlashStatusWord); if(oReturnCheck != Fapi_Status_Success) { // Example_Error(oReturnCheck); return false; } for(i=0;i<4;i++) { Buffer[i*2] = mflagWord; Buffer[i*2 + 1] = cpu_selected; } for(i=0, u32Index = Bzero_SectorD_start; (u32Index < (Bzero_SectorD_start + 8)) && (oReturnCheck == Fapi_Status_Success); i+= 8, u32Index+= 8) { oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32Index,Buffer, 8, 0, 0, Fapi_AutoEccGeneration); while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy); if(oReturnCheck != Fapi_Status_Success) { // Example_Error(oReturnCheck); return false; } oFlashStatus = Fapi_getFsmStatus(); // oReturnCheck = Fapi_doMarginRead((uint32 *)u32Index,debug32buf+(i/2),4, Fapi_NormalRead); if(oReturnCheck != Fapi_Status_Success) { // Example_Error(oReturnCheck); return false; } } EDIS; CPU2ReleaseFlashPump(); return true;
--
谢谢、此致
你好,耶鲁,
您是否尝试过 C2000Ware (C2000Ware_5_00_00_00\driverlib\f2838x\examples\c28x\flash\flashapi_ex1_programming.c)中提供的示例?
对于 CPU2、用户需要添加用 CPU2替换"Predefined Symbols"中的 CPU1。
请尝试一下、让我们知道情况如何。
谢谢。此致、
瓦姆西
你好,耶鲁,
您是否需要有关此方面的任何进一步支持? 或者我可以关闭该帖子吗?
谢谢。此致、
瓦姆西