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, SEGGER, CC2540, BLE-STACK

因为陆续碰到好多工程师询问OAD空中升级事宜,特意写个文档指导大家做OAD。

CC2640支持两种OAD方式,片内128K OAD和片外OAD。

片上OAD适合beacon类应用,因为其application比较小。

如果手环或者其他类应用,建议使用片外OAD。

硬件环境:CC2640 sensortag。

如果大家使用CC2640 sensortag的程序,C:\ti\simplelink\ble_cc26xx_2_01_01_44627\Projects\ble\SensorTag\CC26xx\IAR

打开SensorTag.eww工程即可。

里面分为三个程序BIM,APPLICATION,STACK。

其中BIM的程序存在的位置在:

C:\ti\simplelink\ble_cc26xx_2_01_01_44627\Projects\ble\util\BIM_extflash\CC26xx

大家把BIM,APPLICATION,STACK三个工程的hex文件合成一个hex文件,可以使用SEGGER的工具合成。

如果大家希望用simple peripheral工程在sensortag的硬体上做OAD,请注意以下两点;

打开BIM文件,FlashOnly的 BIM工程。

打开SimpleBLEPeripheral的工程,编译Flashonly_OAD_ST_ExtFlash的工程。

然后把生成的三个hex合到一起即可。

OAD大工搞成!

之所有把这两个工程分开来谈没有混合到一起是因为BIM跳转到application工程的位置是不一样的,所以你那sensortag的工程OADSimpleBLEPeripheral的Flashonly_OAD_ST_ExtFlash,程序是有更新,但是是跑步起来的!

  • 谢谢 kqian0327 的分享!

  • 谢谢分享, OAD比cc2540麻烦而且成本高!
  • 您好,最近在做CC2640空中升级的尝试,我们是在SimpleBLEPeripheral的工程下做的,但是无法用TI -iOS版的sensortag APP识别以及OAD测试,请问还需要添加哪些函数接口,还是建议直接用sensortag的历程去做OAD?

  • 大秦,

    CC2640是把单片机软件发挥到极致的,如果把OAD搞定,以后无所不能。

    另外,在今年下半年,我们会出来R2版本的CC2640,直接可以进行片内OAD,请知悉。

  • 兄弟,

    我已经写得很清楚了啊。

    SimpleBLEPeripheral大工程下有三个小工程!一个单纯的SimpleBLEPeripheral。

    一个片内OAD的SimpleBLEPeripheral

    一个片外OAD的SimpleBLEPeripheral

    或者你直接用sensortag的工程也行。

  • 我就是按照片外OAD的SimpleBLEPeripheral做的,但是手机sensortag软件一直没有连接成功,也没有读出本地配置的版本,后来感觉SimpleBLEPeripheral历程里应该缺少sensortag历程中的与APP连接部分。

    今天直接打开sensortag的历程运行后发现无法烧录,我是按照BIM ,STACk,APP,先后顺序依次烧写的,就在烧APP这个的时候出现的问题,smartRF 提示  >Failed to write 44120 bytes to address 0x00000000.

    同时也没有找到可以将上述三个工程编译的.hex 文件的segger工具,有哪里可以下载吗?我本地的Python跑不起来,没法合成。


  • Kqian0327: R2版本是什么?是256K的版本么

  • hi 工程师,我现在碰到一个问题是CC2640 off chip OAD 升级的bin文件拷贝到片内0x1000的位置BIM运行不正常,但是拷贝到0x2000的位置可以运行,请问是哪些数据被覆盖了吗?

  • R2 版本的是不是 片内256KB的flash呢? 现在这个128KB有点鸡肋

  • 请教下。

    使用片外Flash做OAD时,APP和stack是否都需要做更新?还是仅更新APP部分?

    此问题设计到片外Flash容量的选型。当前预计选用W25X20CL,但是无货;若使用W25X10CL,若OAD时APP和Stack都更新,担心容量不足。因外扩的Flash尚需腾出部分空间15~20kB用作数据存储。

  • 是片内吗 ?是的话只能更新APP B ,因为APP A也要使用栈。片外两个都可以更新

  • 不是。我需要用片外flash做OAD。

    查看TI的文档_CC2640 BLE Developer’s Guide for OAD ,介绍的是OAD的机制,基本讲的都是基于片内的Flash空间分配。

    按我的理解,基于片内Flash做OAD,是不用做BLE Stack部分。

    但是用片外Flash做OAD的话,按您的意思,两个都可以更新,那么:

    1)具体空间需求呢,128KB?直觉是不需要这么多。

    2)app和ble stack的OAD过程,是否有先后顺序,类似烧录时,要求先烧stack.hex再烧写app.hex?

    3)或者,还有其他什么注意事项呢?

    多谢指导!

  • 你好,

    首先要看你用的那个版本的sdk,建议你用2,.02的sdk,为什么呢,让我慢慢和你详细道来。

    最新版本的sdk有说明,我们之前的sdk OAD分为三种,片上系统oad,基于simple peripheral 的片外flash oad和sensortag专用oad。

    sensortag oad升级后BIM要re-programmer的地址和simple peripheral是不一致的。

    详细见sdk下面文档关于OAD的描述。

    Prior to the BLE-Stack v2.2.0 release, there were three versions of OAD supported by the SDK:
    1. Off chip OAD with preserved page 0 using BIM
    2. Off chip OAD without preserved page 0 using Baseloader
    3. On chip OAD using BIM
    In BLE-Stack SDK versions prior to 2.2.0, the SensorTag embedded project supported the baseloader (Method 2) from above. In conjunction with the embedded project, the SensorTag mobile applications (iOS, Android) only supported the baseloader method (Method 2). This method has been discontinued* as of BLE-Stack v2.2.0, all projects (including the SensorTag) have now standardized on Methods 1 and 3.
    This guide (and its previous versions) will describe the BIM based on On-chip and Off-chip methods (Method 1 and Method 3 above).
    *The baseloader method has been discontinued because there is a risk where a device may become bricked (require wired JTAG access to recover) if a power loss is experienced while updating page 0*

  • 你好,

    参考新版的OAD文档。

    回答你的问题

    1.)100K左右的升级空间,可单独包含app,stack,或者app+stack的合体hex文件。

    2.)你可以单独烧录app或者stack或者你把app和stack合成一个hex file去烧录。

    3.)   很多,详细见文档描述,代码现成,但是你要搞清楚流程!

  • 阿莫你好,

    R2的版本片内只有128K flash,但是这128K flash将只用于app, BT4.2的协议栈会放在ROM里面!

    所以你应用层会有128K的空气处理上层软件。

  • 多谢!

    关于OAD的文档,只找到www.deyisupport.com/cfs-file.../5127.5808.OAD-for-CC26xx.pdf。
    你提到的很多文档/代码现成,Sorry,能否提供下链接?多谢!

    =========

    我之前提到烧录过程中app和stack的顺序,只是举例,询问OAD更新app和stack的具体过程,如何操作?

    关注的就是OAD的流程,如何实施?即:通过手机APP,连接远程服务器获取需更新的image,再与设备里的cc2640建立通信;然后启动OAD更新image。

    此过程有否指导文档?

  • 使用SensorTag 工程,三個HEX合成一個,會超出FLASH范围呀!

    如果使用BIN文件,合成的时候选择128K , 代码跑步起来。

    使用J-link ARM合成

  • 怎么看芯片是R2版本还是其它版本?谢谢!

  • 能说清楚点吗?

    片内还是128K flash,那如果需要OAD,是不是意味着app也就只有64K可用?

  • 针对你们所说的R2版本.目前R2版本是否已经在供货?

  • 你好,

    R2版本的芯片和R1现有版本完全一致。

    只是把Stack工程放在芯片ROM上,其他功能,封装一模一样。

    R2芯片会在12月开始量产,敬请留意TI官网CC2640的介绍!

  • 你好,

    R2版本的芯片和R1现有版本完全一致。

    只是把Stack工程放在芯片ROM上,其他功能,封装一模一样。

    R2芯片会在12月开始量产,敬请留意TI官网CC2640的介绍!

  • 你好,

    和CC254x类似,把128K flash分为bootloader,imageA,imageB。双备份机制来做OAD。

    你可以这样理解APP有64K可用,但这64K全部都是给应用层使用。

    4.2的协议栈放在ROM中,不占用flash空间。

  • 你好,

    请留意TI官网,R2版本芯片发布之后会有说明。

    芯片上的丝印也不同。

    另外,你可以通过flash programmer 2工具读取芯片信息,左下角芯片状态显示栏目会告诉你芯片类型。

  • 你好,

    OAD工程的代码在SDK中有现成的。

    就是simple-peripheral工程,IAR右上角工程project下拉框选择external flash oad即为已经配置好的片外ODA工程。

    另外你可以借助BLE Device Monitor,新版的BLE Device Monitor已经配置好了灵活的升级app或者stack的选择。

    希望我的回答对你有帮助。

  • kqian0327:

            你好,我现在做CC2640的OAD已经成功,可以用BLE Device moniter给我的设备升级,现在的问题是OAD的文档里介绍的方式是把APP,STACK,BIM合成一个HEX文件,我们需要在手机客户端上实现OAD功能,TI现有的SensorTag的代码,无论是IOS还是Android都是只支持BIN文件的OAD,我试过几个HEX2BIN的工具,转出来的BIN文件下载后都不能用,请问你们有什么合适的方式么?

  • 你好, 
    想問一下可否在CCS 做3個hex file 的整合?
    我試加了以下的命令在CCS 的Post-build steps , 好像是沒有執行
    "${TI_BLE_SDK_BASE}/tools/blestack/oad/oad_image_tool.exe" "${ProjName}.hex" "${PROJECT_LOC}/../simple_peripheral_cc2640r2lp_stack_oad_offchip/FlashROM/ simple_peripheral_cc2640r2lp_stack_oad_offchip.hex" "${PROJECT_LOC}/../bim_oad_offchip_cc2640r2lp_app/FlashOnly/bim_oad_offchip_cc2640r2lp_app.hex" -t onchip -i production -v 0 -m 0x0000 --r 0x0000 -ob "${ProjName}_oad.bin"
    source:
    software-dl.ti.com/.../oad_appendix.html

    另想問上面的指命是否off-chips 的?

    我試了用segger FlasherV2.15 將3個hex file結合, 但在flash programmer 2 燒錄時, 出現error: Overlapping flash area in page: 0, offset address 0x0000
    想問應如何解決? 謝謝