TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2652R: onchip 的OAD升级问题

Part Number:CC2652R

查看官网的BLE5-Stack用户向导的BIM for On-Chip OAD (Stack Library)章节,然后又查看了SDK(simplelink_cc13x2_26x2_sdk_5_20_00_52)中bim_onchip_CC26X2R1_LAUNCHXL_nortos_ticlang的工程,发现其main()中的实现与用户向导中的描述有许多不符,猜测可能SDK的工程中改写了算法,而用户向导未改,bim_onchip工程的主要内容如下:

1、首先bim会调用Bim_findImage函数,在flash的第0页搜索用户应用程序(镜像类型OAD_IMG_TYPE_APPSTACKLIB),如果成功(即镜像头中的镜像类型正确、镜像验证字段0的个数为偶数、CRC和安全验证都通过),则调用用户应用程序而不返回main()函数

2、如果上述的操作失败,则返回到bim_main()函数,再次调用Bim_findImage函数,从flash的第1页开始搜索持久应用程序(镜像类型OAD_IMG_TYPE_PERSISTENT_APP),如果第1页没有找到,则继续寻找第2页,直到结束。如果成功(即镜像头中的镜像类型正确、镜像验证字段0的个数为偶数、CRC和安全验证都通过),则调用持久应用程序而不返回main()函数,从而下载新的用户程序镜像。如果失败则返回main()函数,调用setLowPowerMode()函数进入低功耗。

总结1:bim选择运行用户应用程序还是持久应用程序时,是通过第0页的用户应用程序的镜像头中的镜像验证字段的0的个数的奇偶数判断的,而持久应用程序的镜像验证字段的0的个数一直为偶数,永远不会改变。

总结2:bim总是先从flash的第0页搜索用户应用程序,如果失败(包括镜像验证字段0的个数不为偶数),会再从第2个扇区开始寻找持久应用程序

推断:用户应用程序接收到中央设备的OAD重置服务后,会将自己的镜像验证字段0的个数改为不是偶数(反转一个位),然后重启设备,这样设备重启之后,搜索用户应用程序会失败(因为镜像验证字段0的个数不为偶数),则继续寻找持久应用程序进行下载镜像

总结3:在用户向导中介绍图211的流程说明中的第7步中有提到复制新的用户镜像。但通过分析bim_onchip工程,并未找到相应的代码,因此有个疑问:复制新的用户镜像到什么地方?因此推测,在通过持久应用程序OAD升级新的程序时,直接复制到原有的用户应用程序的地址,即从flash的第0页开始。这样如果在升级过程中断电,则用户应用程序不能够运行,一致停留在持久应用程序中等待升级

下面代码即我删掉不必要的条件编译后的bim_onchip工程中的main函数

int main(void)
{/* Read and populate the static variable intFlashPageSize */intFlashPageSize = FlashSectorSizeGet();uint8_t imgType;uint8_t flashPgNum;/** First look for an application image*/imgType = OAD_IMG_TYPE_APPSTACKLIB;flashPgNum = 0x00;Bim_findImage(flashPgNum, imgType);/** If the application image isn't found, look for a persistent image*/imgType = OAD_IMG_TYPE_PERSISTENT_APP;flashPgNum++;while(flashPgNum < MAX_ONCHIP_FLASH_PAGES){Bim_findImage(flashPgNum, imgType);flashPgNum++;}/* If we get here, that means there is an Issue: No valid image found *//* Set the device to the lowest power state. Does not return. */setLowPowerMode();return(0);
} /* end of main function */

Kevin Qiu1:

发现了重复的帖子,如果其他问题,集中到此处回复:https://e2echina.ti.com/support/wireless-connectivity/other-wireless/f/other-wireless-technologies-forum/215038/cc2652r-onchip-oad

赞(0)
未经允许不得转载:TI中文支持网 » CC2652R: onchip 的OAD升级问题
分享到: 更多 (0)