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.

[参考译文] TMS320F28379D:有关闪存 API 的问题

Guru**** 2611705 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/993497/tms320f28379d-question-about-flash-api

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

你(们)好  

调用 Fapi_setActiveFlashBank API 时、它会在以下地址之间切换、最后在 Estop 上停止。

0x8a730:D008 MOVB XAR0、# 0x8

0x8a740:D008 MOVB XAR0、# 0x8

#attached file 是此情况下 Disassembly 的捕获。

您对原因有什么想法吗?

此致

Naoki

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

    Naoki、

    Estop 地址是什么?

    闪存 API 是从 RAM 还是闪存执行?  请注意、它只能从 RAM 中执行。

    谢谢、此致、

    Vamsi

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

    即使更改为 RamFunc、症状也不会改变。

    在 Fapi_setActiveFlashBank 中的 Fapi_setupFlashStateMachine ()中的同一位置循环()。
    →请查看下图

    它可以结束循环并正常结束、但也可以在 ESTOP0处停止。
    →请查看下图

    (问题1)

    关于 RamFunc、我修改了如下所示的 cmd 文件、并确认 Fapi 已扩展到 RAM。 cmd 描述方法是否正确? ->请查看以下文档

    e2e.ti.com/.../Flash_5F00_API_5F00_question1.txt

    另一方面,我们找到了一种避免这一问题的方法。
    在 EALLOW 之后运行 InitFlash 函数似乎不会导致冻结问题。
    InitFlash 函数的内容与 TI 示例代码相同。

    (问题2)

    当重复执行 Fapi_initialize API 和 Fapi_setActiveFlashBank 函数时、
    我 是否每次都必须运行 InitFlash 函数?

    此外、是否需要在 EALLOW 之后执行 InitFlash 函数?

    以下文档是故障案例和成功案例的实现内容。

    e2e.ti.com/.../Flash_5F00_API_5F00_question2.txt

    此致

    Naoki

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

    Naoki、

    1)感谢您提供该地址-它是 bootROM 中的 ITRAP ISR (请参阅 TRM 中的4.9.2等待点)。  您的链接器 cmd 文件现已正确包含闪存 API 库、用于闪存加载和 RAM 运行。  在执行映射到.TI.ramfunc 的任何代码之前、您是否调用 memcpy ()将.TI.ramfunc 从闪存复制到 RAM?  

    您是否说现在 EALLOW 解决了该问题?  调用闪存 API 函数之前需要 EALLOW -闪存 API 指南和 API 使用常见问题解答(https://e2e.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/951668/faq-faq-on-flash-api-usage-for-c2000-devices)中提到了这一点

    请查看 C2000Ware 中的闪存编程示例、网址为: C2000Ware_3_04_00_00\device_support\f2837xd\examples\dual\flash_programming

    我还建议您查看此常见问题解答、其中详细介绍了基于闪存的执行: https://e2e.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/878674/faq-flash---how-to-modify-an-application-from-ram-configuration-to-flash-configuration 

    2) 2)为什么 要重复调用 Fapi_initialize API()和 Fapi_setActiveFlashBank()函数?  您是否在 运行时更改了工作频率?

    InitFlash()会根据需要在其中包含 EALLOW。  如上所述、在调用闪存 API 函数之前、您需要 EALLOW。

     

    谢谢、此致、
    Vamsi