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.
背景:
使用的是库函数版本,不支持位域,所以没有直接使用TI flash部分的用例。
问题:
计划擦除flash C到G分区,当擦到F分区的时候发现擦除失败。
情况一:
在Fapi_initializeAPI、Fapi_setActiveFlashBank之后,直接调用Fapi_issueAsyncCommandWithAddress去擦F区,情况如下图:
情况二:
在Fapi_initializeAPI、Fapi_setActiveFlashBank之后,调用Fapi_issueAsyncCommandWithAddress从C开始循环擦除flash的时候,当执行完擦F区的Fapi_issueAsyncCommandWithAddress
的时候,程序跑入异常中断,但是此时flash的F区却已经被擦除。
我找到了原因:
因为我擦除flash分区的函数没有使用CODE_SECTION搬移到RAM去,如果没有搬运到RAM去执行,那么会产生很对意想不到的结果。
如果大家项目上是使用位域(寄存器结构体)的形式,那么直接参考TI用例即可,严格按照用例去执行是没有什么问题的。
如果大家的项目是使用库函数(driverlib)的形式,建议正确配置所需的外设跟系统初始化。尤其是移植过程中,首先先要确定一个列表出来,这样出现问题先对照列表,可以节省很多时间。