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: Building project after file specific optimization change doesn't invoke compiler process

Part Number: CCSTUDIO
Other Parts Discussed in Thread: TMS320C6457,

I am working on a project under Code Composer Studio 10.4.0.00006. I think it doesn't depend on the DSP (TMS320C6457 in my case) or on the fact that the project was created and fixed starting from an old project

developed under CCStudio v3.3.

I have seen that if I change the optimization level of any file of my project (Show Building Setting -> CCSBuild -> C6000 Compiler -> Optimizations -> Optimization level), then when I build the project no compiler

action is invoked by the tool. Only linker is involved in the process. So the specific obj is unchanged and the optimization will be ineffective.

I remember that this didn't happen in CCStudio v3.3. Is it normal? 

Am I wrong expecting a different behaviour? 

Thanks in advance to all those who will give some explanation!

  • Hello Domenico,

    Please note that TMS320C6457 is an old part that has "no design support" as per the product page. Our team no longer has any hardware or software expertise on this part.
    https://www.ti.com/product/TMS320C6457

    With that said, I am not sure whether CCS 10.4 supports C6457 devices. I am sending your thread to the CCS team to comment.

    Regards,

    Nick

  • Hello Domenico,

    It sounds like you are setting a file specific option where you change the optimization for one file and then doing a project incremental build. Is this correct? If so, then that specific file should get rebuilt. This is working correctly for me. Can you reproduce the issue and post all the build output in the build console?

    Thanks

    ki

  • Hi Ki! I have modified the optimization of the file motor.c (from no optimization to level 2). The cosole report only this when I launch the incremental build of the project:

    **** Build of configuration Debug for project ControlAndDoppler_x660 ****

    "D:\\ti\\ccs1040\\ccs\\utils\\bin\\gmake" -k -j 8 all -O

    Building target: "D:/FWx660/ControlAndDoppler/ControlAndDoppler/../Debug/ControlAndDoppler.out"
    Invoking: C6000 Linker
    "D:/ti/ccs1040/ccs/tools/compiler/c6000_6.1.23/bin/cl6x" --define="_DEBUG" --define="DSP_C6457" --define="TIMESTAMP_ENDPACK" --define="ARTLIB_MYLAB70" --define="ARTLIB_MYLAB70_FWCUT" --define="ARTLIB_MYLAB70_VWCDFB" --define="ARTLIB_6400" --define=c6457 --symdebug:dwarf --display_error_number --issue_remarks --interrupt_threshold=2048 --silicon_version=6400+ --obj_directory="D:/FWx660/ControlAndDoppler/ControlAndDoppler/Debug" -z --rom_model --display_error_number --heap_size=0x800 --map_file="D:/FWx660/ControlAndDoppler/Debug/ControlAndDoppler.map" --reread_libs --search_path="D:/ti/ccs1040/ccs/tools/compiler/c6000_6.1.23/lib" --search_path="D:/ti/ccs1040/ccs/tools/compiler/c6000_6.1.23/include" --search_path="D:/ti/bios_5_42_02_10/packages/ti/rtdx/lib/c6000" --search_path="D:/ti/bios_5_42_02_10/packages/ti/bios/lib" --search_path="D:/FWx660/ControlAndDoppler/ControlAndDoppler" --search_path="D:/FWx660/ControlAndDoppler" --search_path="d:/CCStudio_v3.3/c64plus/csl/C6457/lib" --search_path="D:/CCStudio_v3.3/fastRTS_c62xc64x_1_42/c6400/mthlib/lib" --search_path="D:/CCStudio_v3.3/c64plus/csl_C6457/lib" --search_path="D:/CCStudio_v3.3/c64plus/dsplib_v210" --stack_size=0x10000 --warn_sections --xml_link_info="ControlAndDoppler_x660_linkInfo.xml" -o "D:/FWx660/ControlAndDoppler/ControlAndDoppler/../Debug/ControlAndDoppler.out" "D:/FWx660/ControlAndDoppler/ControlAndDoppler.cmd" "D:/FWx660/ControlAndDoppler/ControlAndDopplerSwap.cmd" --library=fastrts64x.lib --library=csl_c6457.lib --library=dsplib64plus.lib "./ControlAndDopplercfg.obj" "./ControlAndDopplercfg_c.obj" "./gen_twiddle_fft32x32.obj" "./AnalyzeUtil.obj" "./MyArtLib.obj" "./artlibinterface.obj" "./carstiff.obj" "./genarray.obj" "./initartlab.obj" "./meansignaldata.obj" "./meansignaldatamanbase.obj" "./meansignaldatamanti6414.obj" "./meanstdev.obj" "./mystring.obj" "./mywindows.obj" "./tvel.obj" "./tvelfb.obj" "./tvelint.obj" "./tvelintfb.obj" "./wa.obj" "./zrfline.obj" "./zrfline1d.obj" "./zrieenginebase.obj" "./zrieengineti6414.obj" "./BackEnd.obj" "./FrontEnd.obj" "./SPIManager.obj" "./UARTPowerSupply.obj" "./callFuncErrWithRetAdr.obj" "./extram.obj" "./general.obj" "./intram.obj" "./main.obj" "./motor.obj" "./qe2d.obj" "./rtb.obj" "./system_7400.obj" "./timing.obj" "./Audiocsec.obj" "./AutoDopplerAngle.obj" "./Burg.obj" "./DopplerRtbProc.obj" "./FastMathFunct.obj" "./Filters.obj" "./MisureLion.obj" "./MyAudioUtility.obj" "./MyEDMA3Utility.obj" "./MyInterruptService.obj" "./PWCWUtility.obj" "./ProfiliLion.obj" "./TimerUtility.obj" "./Wait.obj" "./fft.obj" "./int2ulaw14.obj" "./MyEcgDel.obj" "./ADASEcg.obj" --library="./ControlAndDopplercfg.cmd" --library=libc.a
    <Linking>
    "D:/FWx660/ControlAndDoppler/ControlAndDopplerSwap.cmd", line 15: warning #10068-D:
    no matching section
    "D:/FWx660/ControlAndDoppler/ControlAndDopplerSwap.cmd", line 25: warning #10068-D:
    no matching section
    remark #10205-D: automatic RTS selection: linking in "rts64plus.lib" in place
    of index library "libc.a"
    "D:/FWx660/ControlAndDoppler/ControlAndDopplerSwap.cmd", line 64: remark #10191-D:
    object ".printf" is not allocated, but is being placed as part of allocated
    object "GROUP_2"
    Finished building target: "D:/FWx660/ControlAndDoppler/ControlAndDoppler/../Debug/ControlAndDoppler.out"

    **** Build Finished ****

  • That is odd. I see motor.obj being linked in but motor.c is not being recompiled. If you manually build just the file (right-click on the file and select "build selected file" in the context menu), does it build with -o2?

    Can you provide a screenshot of motor.c as it appears in the Project Explorer view?

  • Yes, it compiles and the obj is a different size respect to the obj without optimization. And  the compiler is invoked correctly with the opt_level option.

    This is the required screenshot. I hope it is visible...

     

  • Thanks for the screenshot. I see that every source file has file specific options. What is the reason for this?

    Does this issue occur with other projects, or just this specific one? Would you be able to provide a reproducible test case? I would need the project and source. I don't need all the files, as long as i can reproduce the issue with at least one file.

    Thanks

    ki

  • This is the first time we are trying to use CCS 10 for a new project. It was imported by an old CCS project which was developed in CCS 3.3 with DSP/BIOS 5.42. The compilation now comes to a positive end but I noted that strange thing and I was a little surprise about it. Possibly it is not a big problem because the builder on the server should perform a full build each time we commit the modified file on the server itself. Anyway it's not simple to give you all the environment to build the project. There are also includes from CCS 3.3 for example for the csl used in the program to manage the TMS320C6457 processor. I will try to minimize the project but it will need some time to accomplish it...

  • This is the first time we are trying to use CCS 10 for a new project. It was imported by an old CCS project which was developed in CCS 3.3 with DSP/BIOS 5.42. The compilation now comes to a positive end but I noted that strange thing and I was a little surprise about it.

    I see. I suspect that the legacy import wizard did some unusual things when migrating the CCS 3.3 pjt to a CCS 10 project. 

    Anyway it's not simple to give you all the environment to build the project. There are also includes from CCS 3.3 for example for the csl used in the program to manage the TMS320C6457 processor. I will try to minimize the project but it will need some time to accomplish it...

    Maybe you can just remove all the source files except one or two files. Then just give me the three .*project files in the project folder and one or two source files that reproduce the issue. As mentioned, I don't even need a working project, or a project that will build successfully. All I need to test is if incremental build will get properly triggered if i modify a source file.

    Thanks

    ki

  • Hello Ki!

    I would like to send the zip of a very minimal project obtained from the original one removing almost all files.

    Anyway the problem is stiil there: if I try to modify the optimization level of the compiler for the motor.c file then only the linker is invoked.

    How can I send to you the zip file?

  • You can attach it to this thread. If you wish to send it privately, please start a private conversation with me.

    Thanks

    ki

  • Hope this is the correct way to attach a zip file...

    ControlAndDoppler (6450).zip

  • Thank you for the example. I will need to resolve some dependencies. Once I do so, I will try to build it and investigate further

    ki

  • I can reproduce the issue. It appears that the issue occurs for files in a subfolder (physical or virtual) in the Project Explorer. For example, when I change file specific options for main.c in the /Control subfolder. If I move the file to the root project folder directory, then the issue does not occur. Can you check to see if you see the same behavior?

  • That's right! I get the same result moving the file to the root of the project. Can you suggest me some tip to make the builder more smart about this problem? Indeed I would like to keep the same folder structure of the project...

    Thanks!

  • Thanks for confirming. I think the issue is with that specific project. I can't reproduce the issue on other projects I have. Likely there is something unusual with your project, likely introduced by the legacy import wizard then the old 3.3 project was imported. Sometimes the wizard introduces more problems than it solves. We will need to investigate further what it is about your project that is causing the issue.

  • I have escalated this issue to engineering for further analysis. I will provide updates here as I get them.

    Thanks

    ki

  • Sorry for the lack of update. I am still waiting to hear back from engineering.

  • Engineering has identified the root cause. A bug has been filed for this. Tracking link: https://sir.ext.ti.com/jira/browse/EXT_EP-10628

    Please note the workaround mentioned in the above link. To change the object directory mode, see the below screenshot:

    This would be set at the project level. 

    I set the mode to "assisted manual" in the example you provided and that worked for me.

    Thanks

    ki

  • A first attempt on my original project and got many errors... I guess that many obj have changed their position or something like that. I will try tomorrow to investigate...

    Thanks

  • Ok Ki! I needed to change something in my project in the path from which the .cmd files search for .obj files. Actually I have seen that the .obj files are changed their position and are generated in the subfolder of my project. That's not a problem. The good thing is that now changing the optimization level of a single file reflects on invoking the compiler for that file before invoking the linker! So it's ok for me! Thanks very much Ki!