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.

Compiler/TMS320F28388D: Unable to compile trigonometric functions from a custom made Ram run time library

Part Number: TMS320F28388D

Tool/software: TI C/C++ Compiler

Dear TI team,

I was trying to create some custom run time library with the latest compiler version v20.2.0.1. I have successfully created a Ram run time library, rts_TMS320F28388D_Ram_Lib which includes some memory, string, and trigonometric functions with the help of the batch files.

Following source/asm files I am using in my ram library: 

sin_f32.asm
cos_f32.asm
atan2_f32.asm
FPUmathTables.asm
memcmp.c
memcpy.c
memset.c
strcmp.c
string.h
math.h

The following are my compiler linker options used to help me to generate ram.lib file:

SET COMPILER_FLAGS= -v28 -mt --float_support=fpu32 --include_path="./code/rts_TMS320F28388D_Flash_Lib" --include_path="./code/rts_TMS320F28388D_Ram_Lib" --include_path="C:/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/include" -k -al -g --diag_warning=225 --diag_wrap=off --display_error_number --abi=eabi --preproc_with_compile --preproc_dependency.

I tried to compile this library by creating a new CCS project.

Here is the screenshot of the expansion of my project in project explorer:

PS: Don't get confused with the linker file name as I am trying to flash this on the F28379D eval board. And both the controller uses the same run time library source files.

 

I am successfully able to compile the linker file with an empty main.c but when I am calling atan2f() function I am getting following errors:

I have also attached the list of warning I am getting while compiling the project:

I am using spru514t document for my reference to handle the customization.

I believe I am missing some dependent source files or might missing some additional process/ configuration to build it. Would you help tell me why?

Thanks!

  • Gurusha,

    Please see if this solution (in the post below) resolves your issue.

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/916229

    Thanks,

    Sira

  • Hi Sira,

    That fixed it. Thank you!

    I had to change the floating point support to fpu64 for both my project. But could you also show me how to debug these warning, I was referring to C28x EABI Migration guide but couldn't find something.

    Thanks,

    Gurusha

  • Gurusha,

    I will pass that feedback on to the compiler team.

    Thanks,

    Sira

  • The warnings occur because those sections .bss etc. aren't assigned to MEMORY SECTIONS in your linker cmd file.

  • Hi Sira,

    Yes got it! Thanks.

    But my major concern is I am using the same process to create a flash run time library, which I am actually reusing a set of source files that I have used in my last project with the COFF abi output file.

    Now I am using the same files compiled in an ELF version, it is giving me some sort of errors because I couldn't perform the CCS build and debug settings like you have suggested to me in this post.

    I have also referred Migration from COFF abi to ELF but that document also couldn't be helpful.

    Can you suggest me some document or general settings for CCS?

    Thanks in advance.

  • Gurusha,

    I will move this post to another team that can help you better.

    Thanks,

    Sira

  • gurusha nahar said:
    Now I am using the same files compiled in an ELF version, it is giving me some sort of errors

    Please show these error messages.  Please rebuild the entire project.  One way to do that is to right-click on the name of the project and select Rebuild Project.  Then save the contents of the Console (not Problems) view to a text file.  Use the icon named Copy Build Log.  When you name the log file, be sure to use the file extension .txt.  Please attach that text file to your next post.

    Thanks and regards,

    -George

  • Hi George,

    These are the following source files I am using for my flash RTL library.

    _lock.c
    args_main.c
    sqrt_f32.asm
    ll_aox28.asm
    ll_cmp28.asm
    ll_div28.asm
    ll_mpy28.asm
    log_f32.asm
    errno.c
    exit.c
    frexp.c
    atol.c
    ctype.c
    u_div28.asm
    div_f32.asm
    boot28.asm
    ctype.h
    errno.h

    While compiling them with my project I am getting the following errors, in the attached log.txt file.

    2678.log.txt
    **** Build of configuration Debug for project Project1 ****
    
    "C:\\ti\\ccs920\\ccs\\utils\\bin\\gmake" -k -j 8 all -O 
     
    Building target: "Project1.out"
    Invoking: C2000 Linker
    "C:/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/bin/cl2000" -v28 -ml -mt --cla_support=cla1 --float_support=fpu64 --tmu_support=tmu1 --vcu_support=vcu2 --fp_mode=relaxed --advice:performance=all --define=copy_decompress_lzss -g --c99 --diag_warning=225 --diag_wrap=off --display_error_number --abi=eabi -z -m"Project1.map" --stack_size=0x200 --warn_sections -i"C:/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/lib" -i"C:/ti/ccs920/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/include" --reread_libs --diag_wrap=off --display_error_number --xml_link_info="Project1_linkInfo.xml" --cinit_compression=off --copy_compression=lzss --rom_model -o "Project1.out" "./main.obj" "../2837x_RAM_lnk_cpu1.cmd" "../rts_TMS320F28388D_Flash.lib" "../rts_TMS320F28388D_RAM.lib"  
    <Linking>
    warning #10440-D: creating output section ".bss" without a SECTIONS specification.  For additional information on this section, please see the 'C28x EABI Migration' guide at http://processors.wiki.ti.com/index.php/C28x_EABI:C28x_EABI_Migration#C6x_EABI_Sections
    warning #10440-D: creating output section ".const" without a SECTIONS specification.  For additional information on this section, please see the 'C28x EABI Migration' guide at http://processors.wiki.ti.com/index.php/C28x_EABI:C28x_EABI_Migration#C6x_EABI_Sections
    warning #10440-D: creating output section ".sysmem" without a SECTIONS specification.  For additional information on this section, please see the 'C28x EABI Migration' guide at http://processors.wiki.ti.com/index.php/C28x_EABI:C28x_EABI_Migration#C6x_EABI_Sections
    warning #10440-D: creating output section ".init_array" without a SECTIONS specification.  For additional information on this section, please see the 'C28x EABI Migration' guide at http://processors.wiki.ti.com/index.php/C28x_EABI:C28x_EABI_Migration#C6x_EABI_Sections
    warning #10247-D: creating output section ".data" without a SECTIONS specification
     
     undefined            first referenced                          
      symbol                  in file                               
     ---------            ----------------                          
     __TI_auto_init       ../rts_TMS320F28388D_Flash.lib<boot28.obj>
     __TI_decompress_none                                           
     _system_pre_init     ../rts_TMS320F28388D_Flash.lib<boot28.obj>
     
    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "Project1.out" not built
     
    >> Compilation failure
    makefile:142: recipe for target 'Project1.out' failed
    gmake[1]: *** [Project1.out] Error 1
    makefile:138: recipe for target 'all' failed
    gmake: *** [all] Error 2
    
    **** Build Finished ****
    

    Thanks 

    Regards,

    Gurusha

  • Also, I have used -rom model in the current debug sections.

  • Thank you for submitting the build log.  It contains 4 diagnostics similar to this one ...

    warning #10440-D: creating output section ".bss" without a SECTIONS specification

    This diagnostic is discussed in the EABI Sections part of the larger article C2000 Migration from COFF to EABI.  In brief, the linker command file needs to change the output section name .ebss to .bss.

    Regarding this diagnostic ...

     undefined            first referenced                          
      symbol                  in file                               
     ---------            ----------------                          
     __TI_auto_init       ../rts_TMS320F28388D_Flash.lib<boot28.obj>
     __TI_decompress_none                                           
     _system_pre_init     ../rts_TMS320F28388D_Flash.lib<boot28.obj>
     
    error #10234-D: unresolved symbols remain
    

    This is discussed in the COFF Underscore Name Mangling part of the same article.  In brief, remove the first underscore character in those symbol names.

    Thanks and regards,

    -George

  • This linker diagnostic in the log file you submitted ...

    warning #10440-D: creating output section ".bss" without a SECTIONS specification.  For additional information on this section, please see the 'C28x EABI Migration' guide at processors.wiki.ti.com/.../C28x_EABI:C28x_EABI_Migration
    

    ... contains an invalid web link.  I filed the entry EXT_EP-9916 to have this fixed.  You are welcome to follow it with the link below in my signature.

    Thanks and regards,

    -George

  • Regarding ...

    George Mock said:

    This linker diagnostic in the log file you submitted ...

    warning #10440-D: creating output section ".bss" without a SECTIONS specification.  For additional information on this section, please see the 'C28x EABI Migration' guide at processors.wiki.ti.com/.../C28x_EABI:C28x_EABI_Migration
    

    ... contains an invalid web link.  I filed the entry EXT_EP-9916 to have this fixed. 

    A similar entry had already been filed.  The ID is EXT_EP-9926.  Please track this entry instead of the earlier one.  You will see that a fix will be available in these future releases: 18.12.6.LTS and 20.2.2.LTS.

    Thanks and regards,

    -George

  • Hi George,
    I couldn't find the entry link.
    Could you please help me to find the link please.

    Regards,
    Gurusha

  • gurusha nahar said:
    help me to find the link please.

    https://sir.ext.ti.com/jira/browse/EXT_EP-9926

    Thanks and regards,

    -George