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回读的写入内容是正确的。
Liang Xi:
可能和Fapi_doVerifyByByte函数无关,我再查查,感谢TI工程师。
,
Cherry Zhou:
好的,那您先查查看,如果还是没有新进展请联系我们,我会帮您把问题升级到美国论坛。