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.

On chip OAD for cc2650 with BLE stack 2.2

Other Parts Discussed in Thread: BLE-STACK, CC2650

I am trying to do on chip OAD .

Here are the implementation details:

Hardware Components:   CC2650em+Smart RF06 board

Software :BLE_STACK:  ble_sdk_2_02_00_31+ TI-RTOS: tirtos_cc13xx_cc26xx_2_18_00_03

Project: cc2650_em\ oad_target (configuration:flashrom for both app and stack)

bim (configuration :flashonly)

IDE: IAR

I built the bim, oad_target app and stack projects as explained in the "Over-the-Air Download User’s Guide For BLE-Stack™ Version: 2.2.0".

But I am unable to create a unified hex file using merge.bat because there is an overlap.

The addresses for app,stack and bim hex files are:

bim 000:1FFFF

oad_target app starting location=100

oad_target stack end location =1EFFF

What are the address changes I need to bim,stack and app make to generate a unified hex file?

Please advise.

  • Hi,

    It seems there is an overlap in the BIM and App projects. To fix the overlap, you can change the linker file for the App to not link anything in the last page. Comment out the    //FLASH_LAST_PAGE in the cc26xx_app_oad.icf file under Tools as below:

    // RTOS in ROM OAD image is fixed and can therefore use the extra space
    // on page 31 (0x1F).
    // Caution! Check the build size of BIM to verify that there is no overlap.
    if ( isdefinedsymbol(RTOS_ROM) )
    {
      define region FLASH_LAST_PAGE = mem:[from 0x1FB00 to 0x1FFA7];
      define region FLASH           = //FLASH_LAST_PAGE |
                                      mem:[from OAD_FLASH_START to FLASH_END];
    }
    else
    {
      define region FLASH_LAST_PAGE = mem:[from(FLASH_SIZE) - 0x1000 to FLASH_SIZE-1];
      define region FLASH           = mem:[from OAD_FLASH_START to FLASH_END];

    Best wishes

  • I made the changes that you suggested .The device is finally advertising now.

    Now  I've  built the image B as explained in the "Over-the-Air Download User’s Guide For BLE-Stack™ Version: 2.2.0" for simple_peripheral_cc2650_em project in FlashOnly_ImgB_OAD.

    I included the necessary preprocessor directives , additional directories and setup the linker.The CRC covers addresses from 6004 to EFFF. 

    But the oad is stuck at 0%. 

    Please advise.

  • Hi Pranav,

    Did you try uploading the same .bin file with BLE Device Monitor?

    Best wishes

  • Yes .The image is rejected.

  • Hi Pranav,

    Did you be able to use the OAD feature with both of the projects configured with flashrom?

    Then is this really possible? Don't we need FlashOnly_OAD configuration for the Application?

    This would be nice to save flash!

    Kind Regards,


    Simone Frau
  • Hi,

    Please use the TI OAD Image Tool as described in the section 10.2 of the OAD User's Guide found in the docs folder of the latest BLE 2.2 release.

    For example, you can use the following command line to create an image B with the appropriate headers:
    oad_image_tool.py <inputHexFile.hex> -m 0x9000 -v 1 -t onchip -i app -o <outputHexFile.hex>

    Best wishes
  • Hi Zahid,

    in the OAD User's Guide there is mentioned that the TI OAD Image Tool can also be used to generate the .bin merged for application and stack and also the .hex merged with application, stack and BIM for production.

    Actually there is not a real procedure there mentioned to produce all of these useful files,\
    can you help us, please?

    Thank you for your support,
    Kind Regards,


    Simone Frau
  • Hi,

    In section 10.2.4, it does include some scripts that can used to merge files. Instead of the -o option which outputs hex files, you can use the -ob option to output the binary file. Alternatively, the merge.bat file found in the project directory can also be used to merge files.

    Best wishes

  • I generated the bin file using oad_image_tool.py with the above instruction using -ob.
    On the sensortag application in iphone ,the oad happens till 100%. I get a message "firmware upgrade successful".But the name of the device does not change .The name is still 'OAD Target' instead of 'SimpleBLEPeripheral'.
    The hex file generated using oad_image_tool.py is rejected by BLE Device Monitor. I get a message "OAD image rejected".
  • Hi,

    Which version of Device Monitor are you using? I was able to OAD the application with BLE Device Monitor. Did you try resetting the device after the OAD?

    Best wishes

  • I am using BLE Device Moniotor 2.1.2.
    Yes, I reset the device after oad. The name did not change.
  • Hi,
    I also get "OAD image rejected" from Device Monitor(2.1.2). Can you tell us why device monitor show this message(wrong address?)
  • I know why the oad image is being rejected.When use the oad_image_tool.py tool, the userID assigned to the output file is EEEE,even though I've given the             -t onchip command.

    I've included HAL_IMAGE_B in preprocessor directive and the configuration is for simple_peripheral_cc2650em_app project is flashonly_OAD_lmgB.

    How do I solve this issue?

  • Hi Pranav,

    you need use Device monitor-2.2 for on-chip OAD. Please contact your local TI FAE to get new version.
  • Hello Zahid Haq,

    Is there any problem with the OAD Image Tool script. What ever version i give as input it always produces an image with verion = 1. I have used the following command and still the version is 1.

    python oad_image_tool.py Img_B_input.hex -v 2 -t onchip -i app -o img_B_output.hex


    Can you tell why it is so? Is this a problem with script or i am making any mistake.

    Thanks a lot.
  • Hello Mabbas,

    I have already merged and responded to your threads here: 

    For on-chip OAD the LSB of the imageVer field is always 0x1 for ImgB. See here http://software-dl.ti.com/lprf/sdg-latest/html/oad/oad.html#version