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.

[参考译文] CCS/TMS570LS0432:F021闪存 API 不起作用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/749854/ccs-tms570ls0432-f021-flash-api-not-working

器件型号:TMS570LS0432

工具/软件:Code Composer Studio

您好!

最近、我一直在尝试为 TMS570开发引导加载程序。 我可以让 CAN 通信正常工作、并且可以使用收费驱动程序将通信内容保存到银行7、 每当我尝试在 FEE 驱动器之外使用 F021 API Fapi 函数时、都会调用一个未定义中断、后跟一个错误消息、表示找不到函数文档。

但是、我使用适当的链接器库正确链接了 API、无论我做什么、即使我尝试初始化 Fapi Bank、我也始终会收到相同的错误。

如果有任何帮助,将不胜感激。  

下面是我要用于闪存写入的代码:

uint32_t Fapi_UpdateStatusProgram (uint32_t Bank、uint32_t Flash_Start_Address、uint32_t Data_Start_Address、uint32_t Size_in_bytes)
{
寄存器 uint32_t src = Data_Start_Address;
寄存器 uint32_t dst = Flash_Start_Address;
unsigned int 字节、status = 0;
Fapi_StatusType oReturnCheck = Fapi_Status_Success;

如果(size_in_bytes < 16)
bytes = size_in_bytes;
其他
字节= 16;

Fapi_initiataleAPI (((Fapi_FmcRegisterType *) F021_CPU0_register_address、(uint32_t) SYS_CLK_FREQ);
oReturnCheck= Fapi_initializeFlashBanks (10);//10MHz
if ((oReturnCheck = Fapi_Status_Success)){
oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank0);
//while (flash_control_register->fmstat.fmstat_bits.Busy = fapi_Status_FsmBusy);
delay();

}
//delay();
Fapi_setActiveFlashBank ((Fapi_FlashBankType) 0);
fapi_issueProgrammingCommand ((uint32_t *) dst、
(uint8_t *) src、
(uint32_t)字节、//8、
0、
0、
Fapi_AutoEccGeneration);

while (fapi_checkFsmForReady()=fapi_Status_FsmBusy);
状态= Flash_Program_Check (Flash_Start_Address、Data_Start_Address、Size_in_bytes);
delay();
返回(状态);
} 

谢谢、

Ron Haber

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

    在 F021 API V2.00和更高版本中,Fapi_initiatizeAPI (..) 函数替换为 Fapi_initiatizeFlashBanks(.)。 因此、请注释掉 Fapi_initiatalizeAPI (..)的函数调用。

    Fapi_initializeFlashBanks()必须使用以 MHz 为单位的系统时钟频率(HCLK)。 您的应用中的 HCLK (高达80MHz)是什么? 我注意到你在 Fapi_initiatalizeFlashBanks(.)中使用10MHz。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    我按照您所描述的那样注释了行、但我现在在代码中接收到一个预取条目中断。

    谢谢、

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

    Fapi_initializeFlashBanks()必须使用以 MHz 为单位的系统时钟频率(HCLK)。 我注意到使用了10MHz。 您的配置中的 HCLK 是否为10MHz? 我记得您的应用中的 OSCIN 是10MHz、因此我想您不会使用 PLL、也不会将 OSCIN 用于 GCLK/HCLK/VCLK 等