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.

CC1352P: rfDriverCallbackAntennaSwitching Linker Issue

Part Number: CC1352P
Other Parts Discussed in Thread: SYSCONFIG

Using SysConfig Editor I modified the board type from the CC1352P LaunchPad to a custom board. Now the ti_drivers_config.c produces __attribute__((weak)) implementations for rfDriverCallback() and rfDriverCallbackAntennaSwitching() functions. The weakly defined version of rfDriverCallbackAntennaSwitching() function has a call to you_must_implement_rfDriverCallbackAntennaSwitching_see_generated_ti_drivers_config_c_in_debug_folder_or_sysconfig_preview() in order to get the developer's attention that a strongly defined version of rfDriverCallbackAntennaSwitching() is required.

As suggested, I created strongly defined implementations for rfDriverCallback() and rfDriverCallbackAntennaSwitching(). These functions compile without issue, yet the linker complains there is an unresolved symbol for you_must_implement_rfDriverCallbackAntennaSwitching_see_generated_ti_drivers_config_c_in_debug_folder_or_sysconfig_preview(). I can only guess my strongly defined function calls are not "overriding" the weakly defined functions in ti_drivers_config.c.

What am I doing incorrectly or what settings do I need to adjust to satisfy the linker?

Environment details:

  • CC Studio version = 10.1.0.00010
  • compiler version = TI v.20.2.1.LTS
  • SimpleLink CC13x1 26x2 SDk version = 4.10.00.78
  • Hi Steven,

    I'm sorry, there is an issue with the custom board feature in this version of the SimpleLink SDK. Can you test with the newest version and CCS 10.2.0? (SimpleLink SDK 4.30.)

  • According to the CCS download page, the latest version of CCS is 10.1.1 (build 10.1.1.00004 dated 2020-September-21). Below is a summary of what I updated:

    Code Composer Studio = 10.1.1.00004 (from 10.1.0.00010)
    TI compiler = 20.2.4 LTS (from 20.2.1 LTS)
    SimpleLink SDK (inherited from dependency TI-RTOS project) = 4.30.0.54 (from 4.20.1.04)
    XDCtools = 3.61.2.27 (from 3.61.0.16)
    SysConfig = 1.6.0 (from 1.5.0)

    I am still seeing the same issue as described in my original post: unresolved symbols remain. I can verify rfDriverCallback() and rfDriverCallbackAntennaSwitching() functions are strongly defined in main.c as follows:

    void rfDriverCallback( RF_Handle client, RF_GlobalEvent events, void *arg )
    {
        /* definition omitted here for clarity */
    }
    
    
    void rfDriverCallbackAntennaSwitching( RF_Handle client, RF_GlobalEvent events, void *arg )
    {
        /* definition omitted here for clarity */
    }

  • Hi Steven,

    Sorry for the delayed answer.

    I just tried reproducing your issue and I am getting the same error. I have reached out to the software developers and will get back to you.

  • For those who encounter this issue in the future:

    A workaround I found was to completely blow away the existing project, and manually import the source files and all project settings and configuration. This is time consuming and has to be done in a painstaking way to ensure no setting is not copied. It isn't ideal as TI CCS shouldn't have this problem, but it does allow an otherwise blocked issue to be unblocked.

    When I diff the old and new projects I still couldn't figure out what setting was causing the issue.

  • Hi Steven,

    I would assume there is something in the .syscfg file that causes this but I'm not sure.

    I haven't heard back from the software developer yet. I will keep you updated.

  • Hi Steven,

    As the error message says, the build error happens because there is no rfDriverCallbackAntennaSwitching implemented. You can find a suggestion for how to implement in ti_drivers_config.c.

  • I stated in my original post and in a subsequent post that the following functions are strongly defined in main.c: rfDriverCallback() and rfDriverCallbackAntennaSwitching(). The only solution that worked (and continues to work) was the recreate new project workaround I also posted.

    Simply adding a definition for rfDriverCallbackAntennaSwitching() did not resolve the undefined symbol, but the exact same code and settings in a new project did resolve the issue.

  • Hi Steven,

    I'm not sure what the difference is, did you define it in main.c in both cases?

  • Yes. The code was 100% the same; the only change was the project file.