SDK版本及工程路径:C:\ti\mcu_plus_sdk_am64x_09_00_00_31\examples\drivers\boot\sbl_ospi_multi_partition
板子芯片型号:AM6442B SEFHAALV:如下图
通过多次调试,确定了SBL工程执行过程中,具体错误位置:
1. 本错误信息采用断电复位方式,通过串口打印获取的。 status = Bootloader_parseMultiCoreAppImage(bootHandle, &bootImageInfo); 执行该语句 status返回值为 -1(即0xffffffff),程序摘抄如下图:该
2.为了具体化上述 函数内的错误位置,本错误信息采用的是调试的方式获取 (仅提供借鉴,调试信息 或许与实际有所差别):
①错误位置如下:注释与旧版本SDK不一致,旧版本为
②进入函数 ,进一步获取错误位置:
③进入函数,获取具体错误
因为③的错误,引发②错误 ①错。
调试过程中,程序每次经过③时,将status值由0xffffffff改成0,后续程序即可正常运行,SBL正常引导,也可以将FLASH的数据解除签名并加载到对应的SRAM中,然后相应内核运行正常。
综上:为何使用 C:\ti\mcu_plus_sdk_am64x_09_00_00_31\examples\drivers\boot\sbl_ospi_multi_partition 工程会出现错误?
ps: 而采用:C:\ti\mcu_plus_sdk_am64x_08_04_00_17\examples\drivers\boot\sbl_ospi_multi_partition 工程不存在上述错误。(但是该旧版SBL工程,无法对FLASH进行写操作,所有我需要使用09_00_00_31版的SBL),但是09_00_00_31版SBL却引导失败 。