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.
您好!
我正在使用 TMS320F280025C 器件、遇到了一个非常奇怪的问题。 我开发了用于擦除/编程/验证闪存内容的引导加载程序。 我可以成功地对器件进行编程和擦除、但无法验证闪存。 我的引导加载程序直接加载到 RAM (通过并行引导模式)并从该位置运行。 当闪存开始验证时、步骤中的所有操作都正常。。
我的代码如下所示(根据 driverlib 示例):
for(i=0, u32Index = Address; (u32Index < (Address + WORDS_IN_FLASH_BUFFER)); i+= 8, u32Index+=8) { EALLOW; oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32Index,Buffer+i,8,0,0,Fapi_AutoEccGeneration); // Wait until FSM is done with actual operation while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy); if(oReturnCheck != Fapi_Status_Success){ break; } oFSM_stat = Fapi_getFsmStatus(); if(oFSM_stat != 0) { oReturnCheck = Fapi_Error_FeatureNotAvailable; break; } //verify oReturnCheck = Fapi_doVerify((uint32 *)u32Index, 4, Buffer32+(i/2), &oFlashStatusWord); if(oReturnCheck != Fapi_Status_Success){ break; } EDIS; }
oReturnCheck = Fapi_doVerify 退出 Fapi_Error_FAIL、我不知道原因。 奇怪的是,当我从 CCS (CCS 10.2.0.00009)调试此代码时,代码运行良好。 但是、在加载生成的 hex 文件(从 out 文件)并加载到 RAM 并运行后、验证无效。 我已经尝试过引导 ROM 闪存 API (FlashAPI_ROM_F28002x_FPU32.lib)和软件闪存 API (FlashAPI_F28002x_FPU32)、但结果始终相同-验证仍然不起作用。
有人能解释一下、为什么程序和擦除工作正常、但验证工作不好? 是
谢谢!
此致、
Tomas
Tomas、
失败时 ,oFlashStatusWord 中返回的信息是什么? 请检查 并查看故障位置是否有有效数据。 我们可以在此基础上进一步分析。
谢谢、此致、
Vamsi
您好、Vamsi、
这是一个非常奇怪的情况,因为从某种原因看来,我无法从这个状态字中获得数据。 例如、当我用空白数据(0xFFFF)对刻录数据进行通信时、算法可以识别它并显示与刻录值的比较。 但当我尝试使用一些随机数据验证烧录的数据时、在这种情况下、返回的值完全不相关、没有曲折变化-返回 的 oFlashStatusWord 不会抛出预期的数据和读取的数据。 似乎有些例外已经开始或类似的情况。 很难进行仿真、因为在调试模式下、算法会起作用。
谢谢、
Tomas
Tomas、
也许应用程序最终会产生一个 NMI - 我建议检查 ECC 错误。
此外、您是否启用了看门狗? 如果是、您是否根据需要提供服务?
在调试模式下、GEL 文件禁用看门狗和 ECC。
谢谢、此致、
Vamsi
Tomas、
您对此有任何更新吗?
谢谢、此致、
Vamsi
Tomas、
我将关闭此帖子、因为我在过去两周没有收到您的回复。 希望根据我们的建议解决这个问题。
谢谢、此致、
Vamsi