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.

[参考译文] Hercules F021FLASHAPI:闪存 FSM 不会返回成功状态

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1038786/hercules-f021flashapi-flash-fsm-does-not-return-to-success-state

器件型号:Hercules F021FLASHAPI
主题中讨论的其他器件:TMS570LS0714

您好!

我正在为 TMS570LS0714开发引导加载程序、并找到了 TI 提供的 Hercules 示例。 我遇到一个奇怪的问题、即 F021包装程序 BL_FLASH_FLASH_c 卡在无限循环中、因为 F021库无法成功初始化闪存组或将新数据写入内存。 遇到此问题的函数

uint32_t Fapi_BlockProgram( uint32_t Bank, uint32_t Flash_Start_Address, uint32_t Data_Start_Address, uint32_t Size_In_Bytes)

默认实现具有 while 循环、等待闪存退出 BUSY 状态、然后等待 FSM 状态成功完成。

if(( Flash_Start_Address == APP_START_ADDRESS ) || ( ucBank == 1 )){
    timout_cntr = 1000000U;
	Fapi_initializeFlashBanks(Freq_In_MHz); /* used for API Rev2.01 */

	Fapi_setActiveFlashBank((Fapi_FlashBankType)ucBank);

	Fapi_enableMainBankSectors(0xFFFFU);        /* used for API 2.01*/

	while( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy );
	while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);
}

当接收到一个 CAN 消息时、数据应该被写入到使用 Fapi_BlockProgram (..)的闪存中 函数、但经过一段时间后、执行会在最后一段时间内卡住(...) 环路。 我添加了一个计数器、允许继续执行、引导加载程序请求重新传输最后一条消息、但后续写入也会失败。

我注意到、在尝试写入闪存的不同部分时出现了这个问题。

其他可能相关的说明。 当发生此闪存问题时、我的工作台电源的电流消耗下降了20mA。 我快速探测了进入 MCU 的1V2电源轨、并注意到了一个奇怪的纹波、但还无法捕捉到该电压轨以提供屏幕截图。

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

    我找出了尝试写入已写入的内存位置导致的根本问题。

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

    尊敬的 Dainlus:

    LS0714只有一个闪存组:组0 (0x0)。 为什么代码中使用 ucBank=1?

    if ((Flash_Start_Address == APP_START_ADDRESS)||(ucBank == 1))

    Timout_cntr = 1000000U;
    Fapi_initializeFlashBanks (Freq_in_MHz);//用于 API Rev2.01 *

    Fapi_setActiveFlashBank ((Fapi_FlashBankType) ucBank);

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

    您好 QJ、

    我刚刚使用了2021年的 BL_FLASH.c 版本。 我将进行更新以使用最新版本的 BL_FLASH.c