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.

[参考译文] TMS320F2.8075万:在某个地址对闪存编程失败的问题

Guru**** 2327990 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/573745/tms320f28075-a-question-to-failed-programming-the-flash-at-some-address

部件号:TMS320F2.8075万

尊敬的Vamsi:

这是Hardy。 以下是客户关于在某个地址对闪存编程失败的问题。

请在此处查找详细信息:

我们在升级过程中遇到问题,我们发现始终存在随机地址而不是写入数据,从而导致升级失败;
例如,其中一个升级文件被写入到:地址0xA7FFF,内容0x55FF,只写一个内容;因为区域地址实际上没有写入相应的值,导致更正失败。
调试工作已完成:
1)证明地址可以写入:
当有数据要写入其他地址时,我们将通过在线读取地址来证明该地址可以正常写入数据,从而将地址重写为0xA7FFF;
2)消除计划影响
因为每个写入0xA7FFF地址的操作都不会写入,所以在调试每个写入0xA7FFF地址后,可以找到地址加1或添加0xF或其他地址时的实际写入操作,正确写入0x55FF;
问:是否有任何地址将受到限制?

谢谢,此致,
哈迪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Vamsi:

      与上述相同的问题。   

      这是另一个例子每次从地址0x88DD9写入数据时,不会写入前七个,但可以写入以下地址数据。

     

    这是以前编写的

    这是在后面写的

    谢谢,此致,

    Xin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Vamsi:

      我在此处上传屏幕截图:

    这是以前编写的

    这是在后面写的

    谢谢,此致,

    哈迪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哈迪

    将查看此内容,并在明天回复您。

    谢谢,此致,
    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哈迪

     程序操作失败时,用户收到了什么错误(返回来自Fapi_issueProgrammingCommand()的值)?  

    另外, 在FSM完成Flash程序操作后,使用Fapi_getFsmStatus()函数检查fmstat值。  如果程序操作成功,则Fapi_getFsmStatus()函数的返回值将为零(检查fmstat寄存器)。  

    请参见以下代码片段: 在此代码中 ,oReturnCheck和oFlashStatus提供了进一步调试的线索。   

    FAPI_StatusType       o返回检查;
    FAPI_FlashStatusType oFlashStatus;

    //使用Fapi_AutoEccGeneration发出程序命令

    oReturnCheck = Fapi_issueProgrammingCommand ((UINT32 *) u32Index,Buffer+I,8, 0,0,                                                                  FAPI_AutoEccGeneration);

    //等待闪存程序操作结束

    while (Fapi_checkFsmForReady()== Fapi_Status_FsmBusy);

    IF (oReturnCheck!= Fapi_Status_Success)


       //查看Flash API文档以了解可能的错误
       示例_错误(oReturnCheck);
    }

    //读取fmstat寄存器内容以了解FSM的状态

    // program命令,查看是否存在与程序操作相关的错误

    oFlashStatus = Fapi_getFsmStatus();

    查看程序操作失败的地址,我猜用户没有使用Fapi_AutoEccGeneration模式同时对64位对齐内存的所有64位进行编程。  

    我们可以在今天晚上的电话会议中进一步调试。

    谢谢,此致,

    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    瓦姆西

    它是否处于Fapi_DataAndEcc模式?

    谢谢,此致,
    哈迪
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哈迪

    FAPI_DataAndEcc编程模式还需要在64位对齐的内存上一次对64位进行编程。  如您所知,一旦为给定的64位对齐内存对ECC进行编程,则在完成擦除之前,不可能再次对该64位位置进行编程(甚至将某些位从1更改为0)。  

    谢谢,此致,
    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    瓦姆西

    理解并感谢您的大力支持。

    谢谢,此致,
    哈迪
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哈迪,辛,

    由于我们在本周初的调试会话中发现并修复了客户应用程序中的问题,因此我将关闭此线程。

    仅供参考:客户尝试对已部分编程(包括ECC) 64位对齐闪存位置进行编程。 由于新的ECC将与现有ECC冲突,因此它将失败。  我要求客户一次性对64位对齐位置进行编程,然后一切正常。

    谢谢,此致,
    Vamsi