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.

[参考译文] TMS570LC4357:Fapi_initializeFlashBanks 期间的数据中止

Guru**** 2524460 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1031088/tms570lc4357-data-abort-during-fapi_initializeflashbanks

器件型号:TMS570LC4357

我在 E2E 中没有看到任何类似此特定问题的内容。  

我尝试使用闪存 API (2.01)在闪存中用于用户配置存储、该存储仅部分工作。 启动时 、我启用了擦除闪存并写入默认值;但是、在运行时、如果我尝试擦除闪存并 对新值进行编程、我将获得数据中止。 中止在第二次擦除之后以及编程前在 Fapi_initializeFlashBanks 内持续发生。

我的代码遵循 F021 API Vers2_01 spnu501h.pdf 中显示的流程图、我还尝试添加 Fapi_enableAutoEccCalculation、但这没有效果。 我的所有 Fapi 调用返回 Fapi_Status_Success、并且初始闪存写入似乎是良好的数据、但我找不到闪存写入0x00200000 (Flash1)的关联 ECC 值。 我还使用  Fapi_AutoEccGeneration 的参数调用一次具有8个字节数据的 Fapi_issueProgrammingCommand (已尝试16个)。

我怀疑这是一个 ECC 问题,但我不知道如何确认--是否有一个状态寄存器指示发生了闪存 ECC 错误?

另外、您是否有适合/集成在 HalCoGen 生成的代码中的示例闪存 API 代码?

谢谢、
Jim

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

    您好、Jim、

    0x200000处的数据 ECC 位于0xF0440000。  

    启动时、您可以使用 F021闪存 API 擦除/编程闪存。 这是否意味着您在_c_int00_()中擦除/编程闪存?  

    我在 main()中擦除/编程闪存两次,没有问题


    状态= Fapi_BlockErase (1、0x0200000、0x1000);
    STATUS = Fapi_BlockProgram (1、0x200000、(无符号整型)&Success、64);
    状态= Fapi_BlockErase (1、0x0200000、0x1000);
    STATUS = Fapi_BlockProgram (1、0x200000、(无符号整型)&Success、64);

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

    QJ、

    在 c_int00调用 main 之后,我应该会更清楚一点--我正在擦除/编程闪存(无错误)。 之后(也在后台任务中)、相同的调用失败。

    您能否将您的源文件发送给 Fapi_BlockErase 和 Fapi_BlockProgram? 我的函数可能源自 LS3137或 C2000示例代码、因此参数不同。 然后、我可以准确地尝试您在上面写的内容。

    谢谢、

    Jim

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

    感谢您的帮助;这是我的错误。

    Jim