主题中讨论的其他器件: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电源轨、并注意到了一个奇怪的纹波、但还无法捕捉到该电压轨以提供屏幕截图。