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.

关于CC2640空中升级固件(OAD)

Other Parts Discussed in Thread: CC2640, CC2650

TI工程师:

    你好!

    最近公司在开发新的项目,需要用到CC2640的OAD,我按照BLE协议栈2.0中的《OAD for CC26xx.pdf》进行试验,具体操作如下:

   1.按照操作文档,build BIM,build the BLE Stack Image,build the OAD Target Application Image,这三个使用协议栈中的OADTarget工程,最后合并生成hex文件,路径:C:\ti\simplelink\ble_cc26xx_2_00_00_42893\Projects\ble\OADTarget\CC26xx\IAR\Application\CC2640\FlashROM\Exe,文件名:OAD_merge.hex,大小:249KB,最后下载到开发板中;

    2.之后“11 Building OAD Image B”,但是这里感觉文档没有说清楚是用的哪个工程做的,我只是觉得这里应该说的是用户自开发的工程,这是一个疑问;

    第二个疑问是,如图片所示,这里是build ImgB 怎么下面的宏选择的是HAL_IMAGE_A呢?

       3.上面的第1点我把合并后的文件OAD_merge.hex下载到开发板上之后,使用BTOOL工具可以查看到OAD服务,然后我这样做的,我直接使用协议栈中的从机工程SimpleBLEPeripheral.eww,然后按照Flash_Only_ImgB进行编译得到OADbin.bin,大小:36KB,之后使用手机端TI的APP Multitool,APP显示100%,已下载到开发板,但是我重新上上电后,开发板屏幕没有任何显示,用BTOOL搜索从机,显示的还是0x0AD0AD0AD0AD这个地址,里面是OAD的服务,

    以上,第1点不知道我操作的正确与否 ?第2和第3点还请TI的工程师和论坛里的大神们帮帮我

    谢谢!

  • 板子是自己做的吗?
  • 不是,是TI官方的SmartRF06开发板,核心板是CC2650EM-7ID

  • yanlu xie,

    三点建议,以simplePeripheral为例来做,我是按照这个搭建的。

    1. 打开工程simplePeripheral工程,直接在workspace下选择“FlashOnly_OAD_ImgB”即可。这个已经做了对应更改。上面那个的确是错的,需要改成HAL_IMAGE_B。

    2. 在一基础上 Switch the RTOS in Flash configuration. In the Application Workspace, under the “TOOLS” folder, open appBLE.cfg. Remove all lines in the file and add the following:

     

    utils.importFile("../../../../../../../Components/ti-rtos/kernel/cc2650/config/CC2650.cfg");

    Power.calibrateRCOSC = false;

     

    The above two lines should be the only lines in the appBLE.cfg file.

    3. OAD升级时,我试了手机APP和BLE device monitor均不能成功,按文档用使用CC254x+SerialBootTool作为OAD manager即可成功。

  • 另外,可以使用Flash Programmer 2将CC26中程序读出,对比一下看看你究竟OAD成功了没有。

  • 用手机App必然都不能成功的,因为OAD例程里面没有添加支持手机app的ccservice服务。

  • Hi Lina Lian

        按照你列的3步,我进行了试验,试验结果是可以通过CC254x+SerialBootTool对CC2640进行OAD

        但是有一下几个问题,希望你能帮我梳理一下:

        1.通过CC254x+SerialBootTool进行OAD升级时,进度条运行到“7”时LCD屏幕显示“OAD Failed”,不过进度条没有消失而是一直往下进行的,直到进度条显示100,LCD屏幕才发生变化并显示“OAD Completed”,之后CC254x自动断开了连接,这是CC2640开发板上的屏幕并没有显示从机工程的相关信息,而是空白,之后我重启开发板才显示从机工程的相关信息,在这个操作过程中我发现OAD的操作相当耗时,大概持续了很长时间才OAD成功,我不确定你那边的试验现象是不是和我的一样,能不能帮我回忆一下你当时的操作过程,是不是也出现类似我的这种现象

        2.如果要实现通过手机客户端APP(例如TI的Multitool)对CC2640蓝牙设备进行OAD,那么对CC2640蓝牙工程需要做什么改动呢,希望大致给几个方向

        感谢支持!

  • OAD只适合少量的数据修改和保存!

  • 大家好,

    我也在做CC2650的OAD, 但是我做到你做的第一步就有点问题了。看到OAD for CC26xx这个文档的第10部分中,原话是  

      "For simplicity, the OAD Target starts in the first flash page following its RCFG. In the BIM functional design (figure 5), the OAD Target app is Image A so that by default the downloaded Image B always runs, if a valid instance exists. In the post build instruction of this project a python script is executed to merge the OAD Target image, the BLE Stack Image and BIM into one .hex file. The BLE Stack Image and BIM must be built before building the OAD Target app."

    就是像你的原问题中提到的,“build BIM,build the BLE Stack Image,build the OAD Target Application Image,这三个使用协议栈中的OADTarget工程,最后合并生成hex文件”


    然后文件中说,需要用到Python 2.7.x和Python IntelHex script hex_merge.py.

    软件我都下载下来了,但是不知道怎么使用,也在网上查了很多东西,但是还是不是很懂。希望您能多多指教一下。

    非常感谢

    HJ

  • 下载好了,把hexmerge.py拷贝到对应目录。

    这个脚本会自动帮你merge

  • 谢谢Holy,

    你的意思是把下载到的文件放进对应的OADTarget的目录,这个Python文件就会自动merge对吗?我刚刚试了一下,发现没有出现,或者是我自己还不太会使用python的原因?

    但是我需要merge三个文件,它应该不知道我要merge哪些文件吧。

    而且我现在有点不太懂第二个文件,the BLE Stack Image 从哪里可以取得?

    非常感谢

  • 不能生成还有个可能就是环境变量没有设置,参看这个帖子:http://jingyan.baidu.com/article/bea41d436879a4b4c51be6f9.html,然后在cmd里面看一下。

    Python是在post build里面调用的,你可以看IAR

    python "$PROJ_DIR$\hex2bin.py" -r "6000:EFFF" "$PROJ_DIR$\FlashOnly_OAD_ImgB\Exe\SBP_OAD_ImgB.hex" "$PROJ_DIR$\FlashOnly_OAD_ImgB\Exe\OADbin.bin"

  • 你好 我现在用hexmerge生成了合并之后的文件用smart flash pragrammer2下载的时候,它却没办法识别到合并之后的.hex文件 ,提示说文件为空,实际上。hex文件我打开看了是没问题的。请问这是什么原因?

  • 我做了你的第二步就报错了是什么原因?

    Error while running "C:\ti\xdctools_3_31_01_33_core/xs" --xdcpath="C:\ti\tirtos_simplelink_2_13_00_06\products\

  • 你的OAD ImageA和B怎么编译的能教教我吗? 我最近也在学OAD

  • 我有两块cc2640  ,只有OAD Target例程,OAD manager该怎么配置?

  • 我和你同样的情况,请问你的怎么弄的