API F021中调用ERASE 功能时FAIL

2019-03-24 10:08发布

各位:



        最近用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指令

都不是跳转命令,也不知道是怎么发生跳转的,困扰多日,望有大侠给解药,多谢.




QQ截图20150609142213.png        QQ截图1111.png
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
renton
1楼-- · 2019-03-24 13:02
 精彩回答 2  元偷偷看……
msnhjy
2楼-- · 2019-03-24 13:14
< :TI_MSP430_内容页_SA7 --> Hi renton:

    目前调试的这片芯片只有BANK0 和BANK7,请参考
以下两图
QQ截图20150611101211.png

QQ截图20150611101233.png




通常我确认程序段位于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中存在问题.






renton
3楼-- · 2019-03-24 14:20
Hi msnhjy,
    抱歉,首先,还是建议到E2E或者Deyisupport寻求进一步帮助。
   
    另,如果按照描述,我觉得就是前面说的问题了,即不应该操作同一个BANK.
    请参考Flash API User Guide中的注意事项:

一周热门 更多>

相关问题

    相关文章