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.

RM48L952: F021 FLASH API,Fapi_doVerifyByByte()函数问题

Part Number: RM48L952

TI工程师:

    您好!在做bootloader时,我发现一个问题。我才用了F021 FLASH API库,F021_API_CortexR4_LE_V3D16.lib。

    我把代码放在FLASH的BANK0中,FLASH的BANK1作为备份区域。CMD文件中相应做了如下设计,使得F021的库Load在FLASH,RUN在RAM。

SECTIONS
{
.intvecs : {} palign=8 > VECTORS
.text : {} palign=8 > FLASH0
.const : {} palign=8 > FLASH0
.cinit : {} palign=8 > FLASH0
.pinit : {} palign=8 > FLASH0
databuff: {} > RAM
GROUP
{
.TI.ramfunc
{ -l F021_API_CortexR4_LE_V3D16.lib}

}LOAD > FLASH0,
RUN > RAM,
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),

....

我把通讯接收到的数据写入BANK1的备份区域时,都没有问题。

但是当把BANK1的内容写入BANK0时(此时屏蔽所有中断,程序运行在RAM中),发现执行到Fapi_doVerifyByByte()函数时芯片跑飞,然而在写BANK1时执行Fapi_doVerifyByByte()函数没有问题。

想请TI工程师提供一些思路,我测试发现写BANK0时,执行Fapi_doMarginReadByByte函数没问题,跑飞之前通过Fapi_doMarginReadByByte回读的写入内容是正确的。