主题中讨论的其他器件:C2000WARE
你(们)好
调用 Fapi_setActiveFlashBank API 时、它会在以下地址之间切换、最后在 Estop 上停止。
0x8a730:D008 MOVB XAR0、# 0x8
0x8a740:D008 MOVB XAR0、# 0x8
#attached file 是此情况下 Disassembly 的捕获。
您对原因有什么想法吗?
此致
Naoki

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.
你(们)好
调用 Fapi_setActiveFlashBank API 时、它会在以下地址之间切换、最后在 Estop 上停止。
0x8a730:D008 MOVB XAR0、# 0x8
0x8a740:D008 MOVB XAR0、# 0x8
#attached file 是此情况下 Disassembly 的捕获。
您对原因有什么想法吗?
此致
Naoki

即使更改为 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