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.

[参考译文] F28M35H52C:从 RAM 执行闪存控制函数调用不会将数据编程到 C28上的闪存扇区

Guru**** 2528520 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/723087/f28m35h52c-executing-flash-control-function-calls-from-ram-does-not-program-data-in-to-flash-sectors-on-c28

器件型号:F28M35H52C
Thread 中讨论的其他器件:controlSUITE

大家好、

在协处理器 C28内核上开发自定义引导加载程序应用程序时、我需要对以下问题提供一些支持。  

值得注意的事项:

- C28引导加载程序应用程序使用 F021_API_C28x_FPU32.lib 擦除和编程 C28内核的闪存扇区。  

-现在我确保在 RAM 上执行上述库。



.TI.ramfunc
{-l F021_API_C28x_FPU32.lib}

}负载= FLASHA,
运行= RAML0、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
run_start (_RamfuncsRunStart)、
PAGE = 0

-我在 RAM 上运行的其它一些函数包括:  

#pragma CODE_SECTION (InitFlash、".TI.ramfunc");
#pragma CODE_SECTION (SetupFlash、".TI.ramfunc");
#pragma CODE_SECTION (FlashGainPump、".TI.ramfunc");
#pragma CODE_SECTION (FlashLeavePump、".TI.ramfunc");

-除了上述函数之外,我还执行一些自写函数,它们是:(我已附加源代码作为任何人的参考,以查看这些函数的作用!)

e2e.ti.com/.../FlashControlInterface.c

#pragma CODE_SECTION (eraseFlashSecors、".TI.ramfunc");  
#pragma CODE_SECTION (programFlashSecors、".TI.ramfunc");

我面临的问题:  

现在、在我的软件中、我在对任何扇区进行编程之前执行扇区擦除。 稍后,当我尝试在某些计算地址对闪存扇区进行编程时,不应用 "Fapi_issueProgrammingCommand"上的断点, 但令我惊讶的是,API 返回"Fapi_Status_SUCCES" ,但实际上,当我在 CCS 的 Memory Browser 视图中查看时,闪存中不会对数据进行编程!  

但是、当我在 "Fapi_issueProgrammingCommand"应用断点 并单步执行数据内容时、将对其进行编程。 我不明白这里发生了什么? 我应该在这里提供一些延迟吗?  

我使用了控制套件中提供的闪存移植示例。  

谢谢

 

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

    您是否启用了看门狗? 如果启用了该功能、您的应用程序是否会根据需要对其进行服务?
    我认为您的应用程序可以对闪存进行编程、但复位会使您的应用程序再次触发擦除序列。

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

    您好、Vamsi、

    感谢您的回复。 我在执行程序操作后添加了"while (fapi_checkFsmForReady ()=fapi_Status_FsmBusy);"、从而解决了这个问题。  


    但我在这里发布的其他问题仍然存在:

    谢谢

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

    很高兴它现在在工作。 在启动下一个操作之前、确保 FSM 已准备就绪非常重要。 它显示在 controlSUITE 中为此器件提供的闪存编程示例中、并在闪存 API 指南和 wiki 中提及。

    关于十六进制实用程序、我看到我们的团队正在为您提供帮助-请继续讨论。

    谢谢、此致、
    Vamsi