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.

CCSTUDIO-THEIA: Including SDK and Motor SDK folders directly in CCS project causes file loss and build errors

Part Number: CCSTUDIO-THEIA
Other Parts Discussed in Thread: SYSCONFIG

We are working on a C++ project in Code Composer Studio based on the empty_driverlib_project_cpp example.

For better organization and traceability, we wanted to include both our SDK and Motor SDK folders directly inside the project directory.

After adding the libraries to the project and updating the Product and Compiler directory paths in CCS project settings, the project starts to lose files from the SDK directories and generates errors such as:

[193] error: unable to open output file 'lib/f29_sdk/source/bitfields/bitfield_structs.o': 'no such file or directory'
[194] 1 error generated.
[195] gmake: *** [device/subdir_rules.mk:11: lib/f29_sdk/source/bitfields/bitfield_structs.o] Error 1
[196] clang -cc1as: error: unable to open output file 'lib/f29_sdk/examples/device_support/source/codestartbranch.o': 'no such file or directory'
[197] gmake: *** [device/subdir_rules.mk:18: lib/f29_sdk/examples/device_support/source/codestartbranch.o] Error 1
[198] Finished building: "../libraries/control/fwc/fwc.c"

Once this occurs, even restoring the original paths and settings does not resolve the issue — the errors persist and the project continues to report missing files.

We also noticed that the folders containing the SDK and Motor SDK libraries must always be marked as “Excluded from Build” in order to avoid other issues. However, this defeats the purpose of having them directly included within the project structure for easier access and traceability.

Has anyone encountered this behavior before?
Is there a supported or recommended way to include the SDK and Motor SDK within the project folder structure, or is this not possible in CCS?

Any suggestions or insights would be greatly appreciated.

  • Hi Pleterski,

    Motor Control SDK already has a copy of the F29x SDK. It may suffice to just include the Motor Control SDK in your empty project instead of copying both as there will be conflicts between the source files being referenced.

    I have also looped in a motor control SDK expert to chime on this.

    Best regards,

    Ryan Ma

  • Thank you for the fast reply Ryan.

    Unfortunately the issue still persists.

    In Code Composer Studio settings I was able to locate which product is picked up by the compiler and from which path (This also updates then my project paths). If I only add in the Motor Control SDK for some reason the classic SDK is not picked up by the CCS. Maybe there is another way to do this not in CCS settings but in project settings?

    P.S. The project is only able to unsuccessfully compile when both libraries are linked inside the CCS settings and marked as excluded from the build. If they are included in the build the compiler stops at around 20%-40% and even if stopped the CCS has to be restarted in order to retry.

    BR, Jan

  • Hi Pleterski, 

    Can you share what your project dependencies look like currently?

    Best regards,

    Ryan Ma

  • Hi Pleterski,

    The classic SDK is already packaged inside the Motor Control SDK, so you should be able to pull any files you need from there. Thus, you shouldn't need to include both of them as Products within CCS. 

    Kind regards,

    Skyler

  • Hello,

    I am adding an image of my currently setup dependencies.



    In this case my output is:

    [64]gmake: *** No rule to make target 'C:/ti/ccs2031/ccs/eclipse/COM_TI_MCU_SDK_INSTALL_DIR/source/bitfields/bitfield_structs.c', needed by 'device/bitfield_structs.o'.
    [65]gmake: *** No rule to make target 'C:/ti/ccs2031/ccs/eclipse/COM_TI_MCU_SDK_INSTALL_DIR/examples/device_support/source/codestartbranch.asm', needed by 'device/codestartbranch.o'.
    [66]Invalid argument '--product': No product with name "MCU_SDK_F29H85x" and version "1.01.00.00" found
    [67]gmake: *** [subdir_rules.mk:18: build-2007055583] Error 1
    [68]gmake: Target 'all' not remade because of errors.

    But if i add in my dependencies like:


    My output is:

    [253]Building target: "empty_driverlib_project_cpp.out"
    [254]Invoking: C2000 Linker

    ... ... ...

    [256] undefined first referenced
    [257] symbol in file
    [258] --------- ----------------
    [259] ANGLE_GEN_init ./src_control/motor1_drive.o
    [260] ANGLE_GEN_setParams ./src_control/motor1_drive.o
    [261] DATALOG_init ./src_board/sys_diagnostics.o
    [262] ENC_init ./src_control/motor1_drive.o
    [263] ENC_setParams ./src_control/motor1_drive.o
    [264] PI_init ./src_control/motor1_drive.o
    [265] SPDCALC_init ./src_control/motor1_drive.o
    [266] SPDCALC_setParams ./src_control/motor1_drive.o
    [267] TRAJ_init ./src_control/motor1_drive.o
    [268] datalog ./src_board/sys_diagnostics.o
    [269] datalogHandle ./src_board/sys_diagnostics.o

    [270]error #10234-D: unresolved symbols remain
    [271]error #10010: errors encountered during linking; "empty_driverlib_project_cpp.out" not built
    [272]c29clang: error: c29lnk command failed with exit code 1 (use -v to see invocation)
    [273]gmake[1]: *** [makefile:202: empty_driverlib_project_cpp.out] Error 1
    [274]gmake: *** [makefile:196: all] Error 2

    In either case we would require the first option since the SDK and MotorSDK is already included into our project. Maybe you can provide me with some instructions on how an empty project is created without an example and what is the correct way to include the libraries to not be depended on the CCS infrastructure?



  • Hi Pleterski,

    Can you remove the F29x SDK depedency? I am wondering if that is causing conflict.

    Just have the motor control SDK as the dependency.

    I would then look at how a motor control SDK project example is configured (compiler options, linker options) and match that in your current project.

    Best regards,

    Ryan Ma 

  • Hello Ryan,

    here you have a whole explanation of our problem. Regarding our question if we remove SDK or MOTOR SDK the error stays the same as written below (if both dependencies are removed from project dependencies / or if only one of them is mainly the issue is SDK not MOTOR SDK).

    Problem Description:

    I have a CCS project for the F29H850TU9 device where I've embedded the F29H85x SDK (v1.1.0.00) into my project directory under lib/c29_sdk/. My goal is to make the project completely self-contained and portable without requiring developers to install the SDK system-wide.

    The compiler and linker work correctly with the embedded SDK using project-relative include paths and library paths. However, SysConfig fails to find the product when building.

    Build Error:

    Invoking: SysConfig
    "C:/ti/ccs2031/ccs/utils/sysconfig_1.25.0/sysconfig_cli.bat" --script "C:/Users/.../project_sysconfig.syscfg" -o "syscfg" --compiler ticlang
    
    Invalid argument '--product': No product with name "MCU_SDK_F29H85x" and version "1.01.00.00" found
    

    What We've Tried:

    1. Added build variables to .cproject file for all configurations:

      • COM_TI_F29H85X_SDK_INSTALL_DIR = ${ProjDirPath}/lib/c29_sdk
      • COM_TI_MCU_SDK_INSTALL_DIR = ${ProjDirPath}/lib/c29_sdk
      • COM_TI_F29H85X_SDK_SYSCONFIG_MANIFEST = ${ProjDirPath}/lib/c29_sdk/.metadata/sdk.json

    2. Verified SDK metadata exists in the embedded SDK:

      • lib/c29_sdk/.metadata/sdk.json exists and contains proper product definition
      • Product name: "MCU_SDK_F29H85x"
      • Version: "1.01.00.00"

    3. Checked the .syscfg file - it contains embedded @cliArgs:

      @cliArgs --device "F29H85x" --part "F29H850TU9ZEX" --package "256ZEX" --context "CPU1" --product "MCU_SDK_F29H85x@1.01.00.00"
      
    4. Examined generated makefile (FLASH/subdir_rules.mk) - SysConfig is invoked without --product path:

      "C:/ti/ccs2031/ccs/utils/sysconfig_1.25.0/sysconfig_cli.bat" --script "project_sysconfig.syscfg" -o "syscfg" --compiler ticlang
      

    Outcome:

    Despite setting project-level build variables pointing to the embedded SDK, SysConfig still cannot find the product. The build variables don't seem to be passed to SysConfig during its invocation.

    Questions:

    1. Is it possible to configure CCS/SysConfig to use an embedded SDK (in the project directory) without requiring system-wide SDK installation?

    2. Can the SysConfig invocation in the auto-generated makefiles be configured to include --product <path-to-sdk.json> using project-relative paths?

    3. If a system-wide SDK installation is required for SysConfig, will the compiler/linker still respect the project-local SDK paths we've configured, or will there be conflicts?

    4. What is the recommended approach for making a CCS project with SysConfig completely portable (including SDK dependencies) across different development machines?

    Project Structure:

    MyProject/
    ├── .cproject
    ├── project_sysconfig.syscfg
    ├── lib/
    │   ├── c29_sdk/
    │   │   ├── .metadata/
    │   │   │   └── sdk.json
    │   │   ├── source/
    │   │   └── tools/
    │   └── mc_sdk/
    └── [other source files]
    

    Environment:

    • CCS Version: 12.8.1 (Theia-based)
    • SysConfig Version: 1.25.0
    • Device: F29H850TU9
    • SDK: F29H85x v1.1.0.00 (embedded in project)

    Any guidance on how to achieve a fully self-contained project with embedded SDK would be greatly appreciated.

    • Is it possible to configure CCS/SysConfig to use an embedded SDK (in the project directory) without requiring system-wide SDK installation?

    Yes it should be possible. 

    Can you try updating the following by going to Code Composer Studio Settings -> Products -> Product discover paths.

    Here you can try adding your embedded SDK in your project folder. You can exclude the C:ti/folder.

    • Can the SysConfig invocation in the auto-generated makefiles be configured to include --product <path-to-sdk.json> using project-relative paths?

    Yes that should work although I haven't personally tested this myself.

    • If a system-wide SDK installation is required for SysConfig, will the compiler/linker still respect the project-local SDK paths we've configured, or will there be conflicts?

    Yes each project can select own Product in it's own project properties.

    1. What is the recommended approach for making a CCS project with SysConfig completely portable (including SDK dependencies) across different development machines?

    When you mean portable, do you mean ensuring all other development machines have the F29x SDK installed? 

    It would be best to install the SDK in the default location, so that any development machine can have access to the same SDK.

     

    Best regards,

    Ryan Ma