微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 只用ImageA升级ImageB,ImageB中的OAD service如何取消?

只用ImageA升级ImageB,ImageB中的OAD service如何取消?

时间:10-02 整理:3721RD 点击:

软体中增加OAD功能,ImageA根据BLE Developer’s Guide for Over-the-Air Download for CC254x,调整为minimizing the Image-A area, ImageB的空间相对多了点。

但现在应用程序还是空间不够用。 ImageB 应用程序中也有OAD相关的service,但这部分我们没有用到,不用ImageB去升级ImageA。但去掉ImageB中的OAD部分,用Ti的BLE Device Monitor和IOS的sensor Tag都没办法升级软体。有人提到可以取消ImageB中OAD这部分代码,请问应该如何去掉的才不影响升级呢?

请多多指点,不胜感激。

下面是例子,ImgB是不需要OAD部分代码的。

http://processors.wiki.ti.com/index.php/BLE_Large_Image_OAD

上面这个例子是,是用如下方式一个组合键,应该是调用了一个函数,你自己看看代码就明白了,他会让image B无效,下次BIM会切到imageA, imageA是常驻的支持升级的尺寸小的固件。

  1. Press TV on remote (This invalidates image B, and resets to Image A bootup)

谢谢分享

问题的关键是如何去掉image B中的OAD service来节省代码空间,而不是使ImageB失效。我现在禁用imageB中的OAD Service之后IOS SensorTag会提示我新的固件是ImageA 和当前的ROM一致,然后不能下载

对于on-chip OAD来说,imageB 里面的OAD service可以去掉,但是需要保留一个Reset Service, 当IOS需要下载固件时候,会向这个服务写一个字节的数据,板子在收到这个数据的时候,就会将imageB的头部信息置为无效,并reset,BIM在启动时候,会首先检测imageB的头部信息,发现无效后,就启动imageA,imageA里面是需要包含OAD服务的,它将接受来自IOS发来的固件数据包,在接受之前,会将本地存储的固件头部信息与远端的头部信息做对比,如果可以接受才进行下一步。

相关信息见:The conditions under which an OAD is accepted vary slightly between the on and off-chip methods. Please see OADTarget_validateNewImage() in oad_target_external_flash.c for off-chip OAD and oad_target_internal_flash.c for on-chip OAD. These functions implement the image reject conditions.

http://software-dl.ti.com/lprf/simplelink_cc2640r2_sdk/1.00.00.22/exports/docs/blestack/html/oad/oad.html#sec-oad

谢谢!弄好了!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top