各位:
最近用570调F021的API时发生问题:
Fapi_initializeFlashBanks(SYS_CLK_FREQ); /* used for API Rev2.01 */
Fapi_setActiveFlashBank(Fapi_FlashBank0);
Fapi_enableMainBankSectors(0xFFFF); /* used for API 2.01*/
while( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy );
根据流程图,以上几步都正常,下一步
Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector, eraseStartAddr);
失败,指定位置
eraseStartAddr 的扇区已被清空.但处理器发生fetch 异常。
单步进入TI提供的LIB文件, 单步执行到0x4862后会自动调LIB 中另一个子
程序 _fapi_issueFsmCommand, 再单步到0x486C后又会调一下该子程序,之后一切
正常.
但不单步而连续运行就会发生fetch错误,貌似0x4862与0x486C处thumb指令
都不是跳转命令,也不知道是怎么发生跳转的,困扰多日,望有大侠给解药,多谢.
此帖出自
小平头技术问答
目前调试的这片芯片只有BANK0 和BANK7,请参考
以下两图
通常我确认程序段位于BLOCK0最高地址不超过0x8000,即占用SECTOR 0 ,1, 2,
然后我调API去擦BLOCK2(即起始地址为0x80000)的APP地址,通常情况下当进入
API汇编后连续单步执行一点问题都没有,但连续执行一定会报FETCH异常(此时
LR寄存器一定为0x10).
同样情况发生在调用API的Fapi_BlockProgram()函数中,单步一定可以执行且将
数据写入指定位置,而连续执行则一定FETCH异常,查下来的理由同样是因为调
用_fapi_issueFsmCommand 子程序过程中产生错误.
同样我参考了以下网页:
https://e2e.ti.com/support/micro ... ules/f/312/t/427434
这同样是F021应用在570系列的处理器上,貌似从根源上讲应该是一样的问题,
好像还没有解决.由此我越来越怀疑是HERCULES提供的API中存在问题.
抱歉,首先,还是建议到E2E或者Deyisupport寻求进一步帮助。
另,如果按照描述,我觉得就是前面说的问题了,即不应该操作同一个BANK.
请参考Flash API User Guide中的注意事项:
一周热门 更多>