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.

CCS/TMS320F28035: CCSv7: C2000 code size?

Part Number: TMS320F28035

Tool/software: Code Composer Studio

Hi!

I just made an update to CCSv7. When compiling a TMS320F28035-project the code size changes compared to CCSv6. After checking the map file I found some interesting stuff:

rts2800_ml.lib : k_rem_pio2.obj (.text) ... what's that? (0x69C words size)
s_tanf.obj (.text) with size 0x249 instead of tan.obj (.text) with size 0x92
....

There are now 44 instead of 27 functions taken from the runtime library. And approximately three times the size.

What am I doing wrong?

Best regards,
Edwin

  • Check both project properties->General to see if the compiler version changed between CCSv6.2 and CCSv7.0.

    If it did, then that's the reason.

    Stephen
  • The current compiler version is v16.9.1.LTS

    But I have an new information: If I use the old runtime library ("rts2800_ml.lib") the code will be small again. But I get a lot of warnings "warning #16002-D: build attribute vendor section TI missing in "../lib/rts2800_ml.lib<fs_add.obj>": compatibility cannot be determined".

    Do I have to use the 6.x compiler because the runtime library was changed to grow three times?
    Shall I install the 6.2 CCS just for using its compiler?

    Best regards, Edwin
  • You can use any compiler with either version of CCS.  

    You may have to add the compiler path to CCSv7 by selecting "More" next to the compiler name in the project general settings.   Then, select "Add" to add the compiler path.

    You can add the path to the compiler folder that is located in the CCSv6.2 tools->compilers folder.

    Also, select the runtime library that you selected in CCSv6.2.

    Stephen

  • I just installed CCSv6.0 and use the compiler in CCSv7. But the question what was changed in the library and why remains.

    Thank you!
  • The runtime library can change between different compiler versions. If you want to know more about the reason for the runtime library changes, you will have to ask the compiler group in the TI C/C++ Compiler forum.

    The library source code is located in the compilier folder's "src" directory.

    Stephen

  • Edwin Krasser said:
    But the question what was changed in the library and why remains.

    I will move this thread to the compiler forum for the experts there to look into this question.

  • k_rem_pio2.c contains a helper function for other math functions. Just know that it is part of the math library.

    Yes, the implementation of the floating-point math functions was changed for several reasons including more precise results. In some cases this leads to larger code size. Over time, we expect to recover some of this size with better optimization, but for now, it is what it is.

    You can use the old library, but be aware that it is not a supported mode. It will probably work just fine, but there will be no support for it. The only supported mode is to use the RTS version that is exactly the same as the linker version. You can ignore the diagnostic "compatibility cannot be determined" when using the C28x 6.x.y RTS library with 16.9.0.LTS.

    Is the code size growth a showstopper for your project?

  • Well the size of ".text" segment grows from 0x5f5 to 0x128f: 3226 words. Because the whole program has to fit in the RAM, I cannot use this library. Hence I have got two solutions:
    1. No floating point: There are just a few floating point calculations (for convenience).
    2. The old library.
    That's ok.

    Thank you!