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.

[FAQ] OAD Known Issues and Fixes

General known issues and fixes, this applies to cc13xx and cc26xx

1. Device does not restart after successful OAD

A: Unplug/replug or hard reset will fix this and the device will boot okay.

There is a bug with the emulation tools packages that predate the 7.0.48.0 release. The bug would cause the processor enter Halt In Boot (HIB) on the next bootup when the JTAG disconnects. In the case of OAD, that was when HAL_SYSTEM_RESET() was issued at the end of an OAD. The two waveforms (left = HIB, right = normal JTAG disconnect) can be seen below:

simplelink_cc13x2_26x2_sdk_2_40_00_81

1. SimpleLink Starter does not show CC13x2/CC26x2 persistent app in BLE device list when using Android 8.0.0.

A: The adverData in oad_persistent_app.c has an incorrect length field. To fix this 

Change from

// Advertisement data
static uint8_t advertData[] =
{
  0x02,   // length of this data
  GAP_ADTYPE_FLAGS,
  DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,

  // service UUID, to notify central devices what services are included
  // in this peripheral
  0x05,   // length of this data
  GAP_ADTYPE_16BIT_MORE,      // some of the UUID's, but not all
  LO_UINT16(OAD_SERVICE_UUID),
  HI_UINT16(OAD_SERVICE_UUID),
  //LO_UINT16(SIMPLEPROFILE_SERV_UUID),
  //HI_UINT16(SIMPLEPROFILE_SERV_UUID)
};

to

// Advertisement data
static uint8_t advertData[] =
{
  0x02,   // length of this data
  GAP_ADTYPE_FLAGS,
  DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,

  // service UUID, to notify central devices what services are included
  // in this peripheral
  0x03,   // length of this data
  GAP_ADTYPE_16BIT_MORE,      // some of the UUID's, but not all
  LO_UINT16(OAD_SERVICE_UUID),
  HI_UINT16(OAD_SERVICE_UUID),
  //LO_UINT16(SIMPLEPROFILE_SERV_UUID),
  //HI_UINT16(SIMPLEPROFILE_SERV_UUID)
};

simplelink_cc2640r2_sdk_1_40_00_45

1. Replace the following code in oad.c at line 1985 if(idPld->len > (stackImageHeader->stackStartAddr - 1)) 

with the following 

if((idPld->len - 1) >= stackImageHeader->stackStartAddr)

simplelink_cc2640r2_sdk_1_35_00_33

1. In the CCS project, oad_target_cc2640r2lp_app, a build error will occur with the following text:

error #10099-D: program will not fit into available memory.

A: This error occurs during the linking phase of the oad_target_cc2640r2lp_app project. The issue itself is due to the linker wishing to place the .text section of the application into one continuous block. This isn't possible because there isn't a hole in memory large enough to accommodate all of the memory in one chunk. This hole in memory is not the same as unused memory - unused memory refers to all the available memory remaining.

The workaround for this issue is to modify the linker command file to tell the linker it's allowed to break up the .text section based on it's individual objects and place them where they can fit.

In effect, modify the linker command file, 'cc26xx_app_oad_onchip.cmd', such that

.text : > FLASH

becomes

.text : >> FLASH

simplelink_cc2640r2_sdk_1_30_00_25

1. In the CCS project, oad_target_cc2640r2lp_app, a build error will occur with the following text:

error #10099-D: program will not fit into available memory.

A: This error occurs during the linking phase of the oad_target_cc2640r2lp_app project. The issue itself is due to the linker wishing to place the .text section of the application into one continuous block. This isn't possible because there isn't a hole in memory large enough to accommodate all of the memory in one chunk. This hole in memory is not the same as unused memory - unused memory refers to all the available memory remaining.

The workaround for this issue is to modify the linker command file to tell the linker it's allowed to break up the .text section based on it's individual objects and place them where they can fit.

In effect, modify the linker command file, 'cc26xx_app_oad_onchip.cmd', such that

.text : > FLASH

becomes

.text : >> FLASH

BLE Stack 2.2.x

1. IAR OAD project crashes after boundary change. To reproduce the issue, do the following:

  1. Change build_config.opt to enable a feature that grows the stack boundary (i.e. enable Data Length Extension)
  2. Re-build BIM, stack, then app projects.
  3. Load these projects in the same order.
  4. Notice the device will crash after BIOS_Start, this is because the memory at ICALL_STACK0_ADDR is corrupted (0xFF)

A: To solve the issue, please follow the steps below:

  1. Go into the application project, right click and selection options
  2. Select Linker from the left hand pane
  3. Select Checksum pane
  4. Uncheck the "Fill unused code memory" box
  5. Re-build the application project.