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.

Linker error adding OAD to simpleBLEBroadcaster

Other Parts Discussed in Thread: CC2541

Hi,

I've just started with BLE stack (1.4.0) and IAR 8.20.2. My idea is basically modify the settings of simpeBLEBroadcaster to add OAD support. For that I followed step by step the developer's guide for OAD but when I tried to build I get  the following linker errors.

Error[e46]: Undefined external "L2CAP_bm_alloc::?relay" referred in att_util ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Libraries\CC2541DB\bin\CC2541_BLE_bcast.lib )
Error[e46]: Undefined external "linkDB_State::?relay" referred in att_util ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Libraries\CC2541DB\bin\CC2541_BLE_bcast.lib )
Error[e46]: Undefined external "L2CAP_SendData::?relay" referred in att_util ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Libraries\CC2541DB\bin\CC2541_BLE_bcast.lib )
Error[e46]: Undefined external "linkDB_Authen::?relay" referred in gatt_server ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Libraries\CC2541DB\bin\CC2541_BLE_bcast.lib )
Error[e46]: Undefined external "GATTServApp_InitCharCfg::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "linkDB_Register::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "GATTServApp_RegisterService::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "GATTServApp_ProcessCCCWriteReq::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\
oad_target.r51 )
Error[e46]: Undefined external "GATTServApp_ReadCharCfg::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "GATTServApp_FindAttr::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "HalCRCInit::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "HalCRCCalc::?relay" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "primaryServiceUUID" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "characterUUID" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "clientCharCfgUUID" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )
Error[e46]: Undefined external "charUserDescUUID" referred in oad_target ( C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster - OAD\CC2541DB\CC2541-OAD-ImgA\Obj\oad_target.r51 )

I believe I followed step by step the guide, even I tried with SimpleBLEPeripheral project and it worked well. has anyone experimented similar errors? Is there any file to include missed in the guide?

Thanks in advance!

  • I've figured out how to solved it.

    Seems that there are a few files more  that you must have in your project in order to use OAD.

    These are the files that I had to add:

    - Add HAL_CRC.h and .c to HAL/TARGET/(Drivers and Includes)
    - Remove Library CC2541_BLE_bcast.lib and add CC2541_BLE_bcast_cent.lib
    - Add to the profiles Components/ble/host/gatt_uuid.c

    Now, should build with no errors.

  • I am facing the same issue with GattServApp.h  building the project produce following error. Can you please suggetst something

    Error[e46]: Undefined external "GATTServApp_RegisterService::?relay" referred in devinfoservice-st ( C:\Texas Instruments\BLE-CC254x-1.4.0_new_one\
    Projects\ble\SimpleBLEBroadcaster\CC2541DB\CC2541\Obj\devinfoservice-st.r51 )


    Error[e46]: Undefined external "linkDB_Register::?relay" referred in irtempservice ( C:\Texas Instruments\BLE-CC254x-1.4.0_new_one\Projects\ble\
    SimpleBLEBroadcaster\CC2541DB\CC2541\Obj\irtempservice.r51 )


    Error[e46]: Undefined external "GATTServApp_InitCharCfg::?relay" referred in irtempservice ( C:\Texas Instruments\BLE-CC254x-1.4.0_new_one\Projects\ble\
    SimpleBLEBroadcaster\CC2541DB\CC2541\Obj\irtempservice.r51 )


    Error[e46]: Undefined external "GATTServApp_ProcessCharCfg::?relay" referred in irtempservice ( C:\Texas Instruments\BLE-CC254x-1.4.0_new_one\
    Projects\ble\SimpleBLEBroadcaster\CC2541DB\CC2541\Obj\irtempservice.r51 )


    Error[e46]: Undefined external "GATTServApp_ProcessCCCWriteReq::?relay" referred in irtempservice ( C:\Texas Instruments\BLE-CC254x-1.4.0_new_one\
    Projects\ble\SimpleBLEBroadcaster\CC2541DB\CC2541\Obj\irtempservice.r51 )


    Error[e46]: Undefined external "linkDB_State::?relay" referred in irtempservice ( C:\Texas Instruments\BLE-CC254x-1.4.0_new_one\Projects\ble\
    SimpleBLEBroadcaster\CC2541DB\CC2541\Obj\irtempservice.r51 )


    Error while running Linker