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.

CSSV4:Few questions about optimized Release compilation

Other Parts Discussed in Thread: SYSBIOS

Hello everybody!

I have a complex program for DSP side of the OMAPL137. It consists of few library projects and main executable project.

This program is highly related with the SYS/BIOS, NDK, IPC, PSP, EDMA. Main executable project depends on the RTSC configuration project as usual.

The debug build works fine and there are no problems with compilation and linking.

Now it`s time to launch the optimized release build.

Few words about my hardware and software configuration:

I work with custom board, but it`s similar to the EVMOMAPL137 evaluation board.

I use

ccsv_4.2.0.10018

bios_6.30.02.42

xdc_3.20.03.63

edma3_lld_2.10.03.04

ipc_1.21.02.23

ndk_2.20.00.19

psp_02.10.01

 Here are my questions:

  1. Some projects of the workspace failed to compile with the --program_level_compile compiler flag. Compilation doesn`t start, CCS gives an error to the Error log:

  2. Some drivers in the PSP have no Release compilation profile in their package.bld and package.xs files. I had to edit those files and rebuild PSP to build the RTSC configuration project properly with Release profile.

3. When I try to build RTSC configuration project with the whole_program profile, linker.cmd file consists of two lines:

"D:/Texas Instruments/Projects/mebius/mebius_cfg_rel/Release/configPkg/package/cfg/mebius_rel.p674.obj"

"D:/Texas Instruments/Projects/mebius/mebius_cfg_rel/Release/configPkg/package/cfg/mebius_rel_p674_x.xdl"

mebius_rel_p674_x.xdl file has very small symbol map (I compare it to the symbol map in the linker.cmd file built with the release profile)

My main executable project fails to link with an error:

unresolved symbol _ti_sysbios_family_c64p_Hwi_enableInterrupt__E first referenced in file D:\Texas Instruments\edma3_lld_02_10_03_04\packages\ti\sdo\edma3\drv\sample\lib\da830\Release\ti.sdo.edma3.drv.sample.a674<sample_da830_int_reg.o674>

When I build RTSC project with the Release profile everything links fine.

4. When I build RTSC project, all sys/bios packages link with the whole_program_debug profile with no relation to the configuration profile (Debug, Release, whole_program). Is it OK?

5. It seems that Referenced Build Configuration in the Dependences tab doesn`t work at all.

I configured it to build referenced projects with release profile in Release and with debug profile in debug, but that doesn`t work. Referenced projects compile with their current active configuration set in the C/C++ Projects tab.

6.  I want to use different RTSC configuration projects for Release and Debug build configurations.

How can I do this?

When I add both projects to referenced projects list with different build configurations it doesn`t work. Adding one for release and another for debug doesn`t work also (both of them added for both configurations).


Thank you for your attention and my apologize for such a big post


  • Yuriy,

    Specifying specific configurations in the build dependencies does not work very well.  There is another thread that goes through this in more detail.  One workaround proposed is to create a little script.  There is an example in the thread.

    http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/97474/347314.aspx#347314

    Regards,

    John

  • John, thank you for your answer.

    Now questions 5 and 6 are clear for me

    Waiting for questions 1-4 reply .

  • Yuriy,

    I believe the embedded software teams are stopping using whole_program on newer packages.  So you may find that some packages have it and some don't.  For questions 1-4 you may have better luck in the BIOS forum.  I am going to move this thread there and will let the moderator know that I moved it.

    Regards,

    John

  • Yuriy,

    I'll try to answer #3 and #4:

    3.  Can you try adding a useModule of the Hwi module in your *.cfg file? Something like the following:

    xdc.useModule("ti.sysbios.family.c64p.Hwi");


    4.  Yes, it should be okay that your project configuration is Debug/Release and your RTSC project is "whole_program_debug" profile.  These two settings are separate and not intertwined in any way.


    Judah

     

     

     

     

  • Judah, thank you for your answer!

    About question 3.

    Your advice helps, thank you.

    I`ve changed

    xdc.useModule('ti.sysbios.hal.Hwi');

    to

    xdc.useModule('ti.sysbios.family.c64p.Hwi');

    That meen the proxy module ti.sysbios.hal.Hwi links unproper generic module somehow.

    About question 4.

    Unfortunately you misunderstood me.

    I meen that all sys/bios packages link with the whole_program_debug profile (in linker.cmd file) with no dependence of the RTSC project profile.

     

  • Yuriy,

    Glad, including 'ti.sysbios.family.c64p.Hwi' worked for you.  If you were already including 'ti.sysbios.hal.Hwi' then I would have expect it to find the right proxy.  If you're curious, you could look in the package/cfg/*.xdl (generated linker.cmd file) to see if the library from the 'ti.sysbios.family.c64p.Hwi' Module is getting pulled in.

    As far as #4 goes, BIOS ships only one profile library build...namely "whole_program_debug" so you will always see the linker.cmd like with this library, however, if you build with "debug" as your  RTSC project profile, you will get different code then if you build "whole_program_debug".  In the latter case, it does "whole_program" optimization.  Bottom line is...if you are wanting to debug, then use the "debug" profile for your build.

    Judah

  • Hi Yuriy,

    Yuriy Kubasov said:
    2. Some drivers in the PSP have no Release compilation profile in their package.bld and package.xs files. I had to edit those files and rebuild PSP to build the RTSC configuration project properly with Release profile.

     

    Basically the driver libraries in the BIOS PSP 2.10.01 are all built using the option "whole_program_debug". By using this option, the application can have the debug symbols of the driver library if it (application) builds with an option "debug". If the same driver library is linked to the application using the build option "whole_program", then all the debug info will be removed from the driver library and executable will be created with an higher level of optimization.

     

    So it is not required to have the debug and the release libraries in the driver folders, instead a single driver library built with an option "whole_program_debug" is sufficient.

     

    This option can be seen in the file package.bld of each driver folder.

     

    Thanks and Regards,

    Sandeep K