Because of the Thanksgiving holiday in the U.S., TI E2E design support forum responses may be delayed the week of Nov. 21. Thank you for your patience.

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.

TMS320F2806: #16000: object files have incompatible formats

Part Number: TMS320F2806
Other Parts Discussed in Thread: C2000WARE

Hi,

My project is running on ccs 10.3.1,

Suddenly I am getting this error,

fatal error #16000: object files have incompatible formats
   ("C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/lib/rts2800_fpu32
   .lib<boot28.asm.obj>" = TI-COFF, "./DEMO.obj" = ELF)

I got 2 information while I searched it online 

1. project>properties>General>in Project tab in project tab and tool chain selecting eabi (ELF) as output format

2. Delete all .obj file from Debug folder and build the project again.

Now looking at the error console, rts2800_fpu32.lib is in TI-COFF mode but project.obj file is in ELF mode.

Let me know how to solve it.

  • In your linker settings if you replace "rts2800_fpu32.lib" with "libc.a" it will allow the compiler to choose the appropriate version of the RTS library based on your build options.

    It may be simpler to stick with COFF, but if you do want to migrate it all to ELF, we have a guide here that will likely explain additional issues you may run into:

    https://software-dl.ti.com/ccs/esd/documents/C2000_c28x_migration_from_coff_to_eabi.html

    Whitney

  • In your linker settings if you replace "rts2800_fpu32.lib" with "libc.a" it will allow the compiler to choose the appropriate version of the RTS library based on your build options.

    It may be simpler to stick with COFF, but if you do want to migrate it all to ELF, we have a guide here that will likely explain additional issues you may run into:

    Dear Sir Dewey,

    Thank you very much to reply here. After I replace "rts2800_fpu32.lib" with "libc.a", console says different issues about memory,

    error #10099-D: program will not fit into available memory, or the section
       contains a call site that requires a trampoline that can't be generated for
       this section. run placement with alignment/blocking fails for section
       "ClaDataRam2" size 0x32apage 1.  Available memory ranges:
       DEV_EMU      size: 0x105        unused: 0x101        max hole: 0x101
       SYS_PWR_CTL   size: 0x3          unused: 0x3          max hole: 0x3
       FLASH_REGS   size: 0x60         unused: 0x58         max hole: 0x58
       CSM          size: 0x20         unused: 0x10         max hole: 0x10
       ADC_RESULT   size: 0x20         unused: 0x10         max hole: 0x10
       CPU_TIMER0   size: 0x8          unused: 0x0          max hole: 0x0
       CPU_TIMER1   size: 0x8          unused: 0x0          max hole: 0x0
       CPU_TIMER2   size: 0x8          unused: 0x0          max hole: 0x0
       PIE_CTRL     size: 0x20         unused: 0x6          max hole: 0x6
       PIE_VECT     size: 0x100        unused: 0x0          max hole: 0x0
       DMA          size: 0x200        unused: 0x200        max hole: 0x200
       CLA1         size: 0x80         unused: 0x40         max hole: 0x40
       USB0         size: 0x1000       unused: 0x2cd        max hole: 0x2cc
       McBSPA       size: 0x40         unused: 0x40         max hole: 0x40
       ECANA        size: 0x40         unused: 0xc          max hole: 0xc
       ECANA_LAM    size: 0x40         unused: 0x40         max hole: 0x40
       ECANA_MOTS   size: 0x40         unused: 0x40         max hole: 0x40
       ECANA_MOTO   size: 0x40         unused: 0x40         max hole: 0x40
       ECANA_MBOX   size: 0x100        unused: 0x0          max hole: 0x0
       COMP1        size: 0x20         unused: 0x20         max hole: 0x20
       COMP2        size: 0x20         unused: 0x20         max hole: 0x20
       COMP3        size: 0x20         unused: 0x20         max hole: 0x20
       EPWM1        size: 0x40         unused: 0x0          max hole: 0x0
       EPWM2        size: 0x40         unused: 0x0          max hole: 0x0
       EPWM3        size: 0x40         unused: 0x0          max hole: 0x0
       EPWM4        size: 0x40         unused: 0x0          max hole: 0x0
       EPWM5        size: 0x40         unused: 0x0          max hole: 0x0
       EPWM6        size: 0x40         unused: 0x0          max hole: 0x0
       EPWM7        size: 0x40         unused: 0x0          max hole: 0x0
       EPWM8        size: 0x40         unused: 0x40         max hole: 0x40
       ECAP1        size: 0x20         unused: 0x20         max hole: 0x20
       ECAP2        size: 0x20         unused: 0x20         max hole: 0x20
       ECAP3        size: 0x20         unused: 0x20         max hole: 0x20
       HRCAP1       size: 0x20         unused: 0x20         max hole: 0x20
       HRCAP2       size: 0x20         unused: 0x20         max hole: 0x20
       EQEP1        size: 0x40         unused: 0x40         max hole: 0x40
       EQEP2        size: 0x40         unused: 0x40         max hole: 0x40
       HRCAP3       size: 0x20         unused: 0x20         max hole: 0x20
       HRCAP4       size: 0x20         unused: 0x20         max hole: 0x20
       GPIOCTRL     size: 0x40         unused: 0x0          max hole: 0x0
       GPIODAT      size: 0x20         unused: 0x0          max hole: 0x0
       GPIOINT      size: 0x20         unused: 0x0          max hole: 0x0
       SYSTEM       size: 0x30         unused: 0x0          max hole: 0x0
       SPIA         size: 0x10         unused: 0x0          max hole: 0x0
       SCIA         size: 0x10         unused: 0x0          max hole: 0x0
       NMIINTRUPT   size: 0x10         unused: 0x10         max hole: 0x10
       XINTRUPT     size: 0x10         unused: 0x0          max hole: 0x0
       ADC          size: 0x80         unused: 0x30         max hole: 0x30
       SPIB         size: 0x10         unused: 0x10         max hole: 0x10
       SCIB         size: 0x10         unused: 0x0          max hole: 0x0
       I2CA         size: 0x40         unused: 0x40         max hole: 0x40
       PARTID       size: 0x1          unused: 0x1          max hole: 0x1
       CSM_PWL      size: 0x8          unused: 0x0          max hole: 0x0       
    error #10099-D: program will not fit into available memory, or the section
       contains a call site that requires a trampoline that can't be generated for
       this section. run placement with alignment/blocking fails for section
       "CLA1mathTables" size 0x2d0page 0.  Available memory ranges:
     
    error #10099-D: program will not fit into available memory, or the section
       contains a call site that requires a trampoline that can't be generated for
       this section. run placement with alignment/blocking fails for section
       ".data" size 0x56page 0.  Available memory ranges:
     
    error #10099-D: program will not fit into available memory, or the section
       contains a call site that requires a trampoline that can't be generated for
       this section. placement with alignment/blocking fails for section ".switch"
       size 0x42page 0.  Available memory ranges:
     
    error #10099-D: program will not fit into available memory, or the section
       contains a call site that requires a trampoline that can't be generated for
       this section. placement with alignment/blocking fails for section
       ".const_cla" size 0xcpage 0.  Available memory ranges:
     
    error #10099-D: program will not fit into available memory, or the section
       contains a call site that requires a trampoline that can't be generated for
       this section. placement with alignment/blocking fails for section ".cinit"
       size 0x399page 0.  Available memory ranges:
     
     
     undefined          first referenced    
      symbol                in file         
     ---------          ----------------    
     ADCINT1_ISR        ./F2806x_PieVect.obj
     ADCINT2_ISR        ./F2806x_PieVect.obj
     ADCINT3_ISR        ./F2806x_PieVect.obj
     ADCINT4_ISR        ./F2806x_PieVect.obj
     ADCINT5_ISR        ./F2806x_PieVect.obj
     ADCINT6_ISR        ./F2806x_PieVect.obj
     ADCINT7_ISR        ./F2806x_PieVect.obj
     ADCINT8_ISR        ./F2806x_PieVect.obj
     ADCINT9_ISR        ./F2806x_PieVect.obj
     CLA1_INT1_ISR      ./F2806x_PieVect.obj
     CLA1_INT2_ISR      ./F2806x_PieVect.obj
     CLA1_INT3_ISR      ./F2806x_PieVect.obj
     CLA1_INT4_ISR      ./F2806x_PieVect.obj
     CLA1_INT5_ISR      ./F2806x_PieVect.obj
     CLA1_INT6_ISR      ./F2806x_PieVect.obj
     CLA1_INT7_ISR      ./F2806x_PieVect.obj
     CLA1_INT8_ISR      ./F2806x_PieVect.obj
     Cla1funcsLoadSize  ./CLA.obj           
     Cla1funcsLoadStart ./CLA.obj           
     Cla1funcsRunStart  ./CLA.obj           
     ConfigCpuTimer     ./ADC.obj           
     CpuTimer0          ./Main_Timer.obj    
     CpuTimer1          ./Main_Timer.obj    
     CpuTimer2          ./ADC.obj           
     DATALOG_ISR        ./F2806x_PieVect.obj
     DINTCH1_ISR        ./F2806x_PieVect.obj
     DINTCH2_ISR        ./F2806x_PieVect.obj
     DINTCH3_ISR        ./F2806x_PieVect.obj
     DINTCH4_ISR        ./F2806x_PieVect.obj
     DINTCH5_ISR        ./F2806x_PieVect.obj
     DINTCH6_ISR        ./F2806x_PieVect.obj
     DSP28x_usDelay     ./ADC.obj           
     ECAN0INTA_ISR      ./F2806x_PieVect.obj
     ECAN1INTA_ISR      ./F2806x_PieVect.obj
     ECAP1_INT_ISR      ./F2806x_PieVect.obj
     ECAP2_INT_ISR      ./F2806x_PieVect.obj
     ECAP3_INT_ISR      ./F2806x_PieVect.obj
     EMUINT_ISR         ./F2806x_PieVect.obj
     EPWM1_INT_ISR      ./F2806x_PieVect.obj
     EPWM1_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM2_INT_ISR      ./F2806x_PieVect.obj
     EPWM2_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM3_INT_ISR      ./F2806x_PieVect.obj
     EPWM3_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM4_INT_ISR      ./F2806x_PieVect.obj
     EPWM4_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM5_INT_ISR      ./F2806x_PieVect.obj
     EPWM5_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM6_INT_ISR      ./F2806x_PieVect.obj
     EPWM6_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM7_INT_ISR      ./F2806x_PieVect.obj
     EPWM7_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM8_INT_ISR      ./F2806x_PieVect.obj
     EPWM8_TZINT_ISR    ./F2806x_PieVect.obj
     EQEP1_INT_ISR      ./F2806x_PieVect.obj
     EQEP2_INT_ISR      ./F2806x_PieVect.obj
     HRCAP1_INT_ISR     ./F2806x_PieVect.obj
     HRCAP2_INT_ISR     ./F2806x_PieVect.obj
     HRCAP3_INT_ISR     ./F2806x_PieVect.obj
     HRCAP4_INT_ISR     ./F2806x_PieVect.obj
     I2CINT1A_ISR       ./F2806x_PieVect.obj
     I2CINT2A_ISR       ./F2806x_PieVect.obj
     ILLEGAL_ISR        ./F2806x_PieVect.obj
     INT13_ISR          ./F2806x_PieVect.obj
     INT14_ISR          ./F2806x_PieVect.obj
     LUF_ISR            ./F2806x_PieVect.obj
     LVF_ISR            ./F2806x_PieVect.obj
     MRINTA_ISR         ./F2806x_PieVect.obj
     MXINTA_ISR         ./F2806x_PieVect.obj
     NMI_ISR            ./F2806x_PieVect.obj
     PIE_RESERVED       ./F2806x_PieVect.obj
     RTOSINT_ISR        ./F2806x_PieVect.obj
     RamfuncsLoadEnd    ./main.obj          
     RamfuncsLoadStart  ./main.obj          
     RamfuncsRunStart   ./main.obj          
     SCIRXINTA_ISR      ./F2806x_PieVect.obj
     SCIRXINTB_ISR      ./F2806x_PieVect.obj
     SCITXINTA_ISR      ./F2806x_PieVect.obj
     SCITXINTB_ISR      ./F2806x_PieVect.obj
     SFO                ./PWM.obj           
     SPIRXINTA_ISR      ./F2806x_PieVect.obj
     SPIRXINTB_ISR      ./F2806x_PieVect.obj
     SPITXINTA_ISR      ./F2806x_PieVect.obj
     TINT0_ISR          ./F2806x_PieVect.obj
     USB0_INT_ISR       ./F2806x_PieVect.obj
     USER10_ISR         ./F2806x_PieVect.obj
     USER11_ISR         ./F2806x_PieVect.obj
     USER12_ISR         ./F2806x_PieVect.obj
     USER1_ISR          ./F2806x_PieVect.obj
     USER2_ISR          ./F2806x_PieVect.obj
     USER3_ISR          ./F2806x_PieVect.obj
     USER4_ISR          ./F2806x_PieVect.obj
     USER5_ISR          ./F2806x_PieVect.obj
     USER6_ISR          ./F2806x_PieVect.obj
     USER7_ISR          ./F2806x_PieVect.obj
     USER8_ISR          ./F2806x_PieVect.obj
     USER9_ISR          ./F2806x_PieVect.obj
     WAKEINT_ISR        ./F2806x_PieVect.obj
     XINT1_ISR          ./F2806x_PieVect.obj
     XINT2_ISR          ./F2806x_PieVect.obj
     XINT3_ISR          ./F2806x_PieVect.obj
     rsvd_ISR           ./F2806x_PieVect.obj
     
     

    This error comes from, error #10234-D: unresolved symbols remain.

    TI says,

    You can add the required libraries to your project in one of two ways:
    Under Project Properties → Build → Linker → File Search Path

    • directly specify the full path and library name in the "--library" option or
    • specify the path in the "--search_path" option and the library name in the "--library" option

     According to this issue, not sure which library should add.

    Take a look me File search path,

  • What linker command files do you have included in your project? It's odd that the list of "Available memory ranges" shown in the console output doesn't show any RAM or Flash memories. Do you have a linker command file that defines them in your project? If it is in your project already, you probably just need to move sections around a bit to make them fit in memory. There's a nice guide on editing linker command files here:
    https://software-dl.ti.com/ccs/esd/documents/c2000_c28x-compiler-understanding-linking.html

    You also seem to be missing some files like F2806x_DefaultIsr.c, F2806x_usDelay.asm, and F2806x_CpuTimers.c judging by the names of the missing symbols. Try adding those to your project and see if it helps. It may be helpful to import a few example projects and compare them to your project to try to see what is missing.

    libc.a is found in that ${CG_TOOL_ROOT}/lib so you shouldn't need to add the full path--just "libc.a" will do.

    Whitney

  • What linker command files do you have included in your project? It's odd that the list of "Available memory ranges" shown in the console output doesn't show any RAM or Flash memories. Do you have a linker command file that defines them in your project? If it is in your project already, you probably just need to move sections around a bit to make them fit in memory. There's a nice guide on editing linker command files here:
    https://software-dl.ti.com/ccs/esd/documents/c2000_c28x-compiler-understanding-linking.html

    Well said sir. I had this point in mind. When I was getting  error, then I had F2806x_Headers_nonBIOS.cmd file in Project>properties>Linker command file  in drop down list. Now I have changed it to 28069_RAM_lnk.cmd .

    Now the project error says ' warning #10440-D: creating output section ".sysmem" without a SECTIONS
    specification. For additional information on this section, please see the
    'C2000 Migration from COFF to EABI' guide at software-dl.ti.com/.../C2000_c28x_migration_from_coff_
    to_eabi.html'

    And more like, 

    "../28069_RAM_lnk.cmd", line 121: error #10099-D: program will not fit into
       available memory, or the section contains a call site that requires a
       trampoline that can't be generated for this section. placement with
       alignment/blocking fails for section ".text" size 0x5098page 0.  Available
       memory ranges

    Let me go in your link and in warning link.

    You also seem to be missing some files like F2806x_DefaultIsr.c, F2806x_usDelay.asm, and F2806x_CpuTimers.c judging by the names of the missing symbols. Try adding those to your project and see if it helps. It may be helpful to import a few example projects and compare them to your project to try to see what is missing.

     F2806x_usDelay.asm is exiting in my project tree, let me add files those you have mentioned, I can remember at the beggining I have deleted those file because ! sign appears on those, some of them I have added.

    Dont you mean add from C:\F2806x_headers\include ? or  C:\F2806x_common\include 

    libc.a is found in that ${CG_TOOL_ROOT}/lib so you shouldn't need to add the full path--just "libc.a" will do.

    Whitney

    I see. Lets remove it. I will come back again.

     

  • Dear Sir Dewey,

    After adding those files in project tree, error drops to 180 to 104!

    Do you have a linker command file that defines them in your project? If it is in your project already, you probably just need to move sections around a bit to make them fit in memory. There's a nice guide on editing linker command files here:

    Not sure how to fix this problem, previous user has debug this code without any problem. I am going through the link you have provided and console suggestion.  28069_RAM_lnk.cmd file is now in linker .cmd  option. 

    1. If we look first problem its saying, 

    warning #10373-D: library "../IQmath.lib" contains TI-COFF object files which

    This may be comes for adding IQmath.lib, do you want me to remove it?

    2. 

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

    Does this says to edit .cmd file? C2000 Migration from COFF to EABI says some direction. I had those document like 

    MS320C28x Optimizing C/C++ Compiler User's Guide (SPRU514 version R or later)
    TMS320C28x x Assembly Language Tools User's Guide (SPRU513 version R or later)

    Currently, my project>properties>C2000compailer> Summary of flag says

    --cla_support=cla0 --float_support=fpu64 -O2 --opt_for_speed=3 --fp_mode=relaxed --fp_reassoc=off --include_path="C:/F2806x_common/include" --include_path="C:/F2806x_common/lib" --include_path="C:/F2806x_headers/F2806x_headers/include" --advice:performance=none -g --diag_warning=225 --display_error_number --abi=eabi

    Dont you think project property should organized well? 

  • 1. If you aren't using IQMath you can remove it. If you do need it though, you'll need an EABI version of the library. What version of C2000Ware are you using? I know newer versions of C2000Ware do provide an EABI version, but some of the older ones may not, so that could explain the error.

    2. Yes, this requires a linker command file change. In the migration guide, look at the "Linker Command File Changes" section and the section on how some of the sections were renamed. In this particular case, you can probably just fine ".ebss" in your .cmd file and chance it to ".bss"

    My only comment on your compiler flags is that "--float_support=fpu64" is not supported on this device. F2806x does not have FPU64 hardware.

    Whitney

  • . If you aren't using IQMath you can remove it. If you do need it though, you'll need an EABI version of the library. What version of C2000Ware are you using? I know newer versions of C2000Ware do provide an EABI version, but some of the older ones may not, so that could explain the error.

    I have PI and PID  control in code, Qmath Library is collection of highly-optimized and high-precision mathematical functions, so I am not sure its necessary or not. I also have PLL control in my code. Yes, I have C2000Ware, but I am not using them here. I am linking the common and header file from 

    a. C:\F2806x_common\include and  C:\F2806x_common\lib

    b. C:\F2806x_headers\include and C:\F2806x_headers\F2806x_headers\cmd 

    c. C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-c2000_20.2.4.LTS\lib 

    d. C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-c2000_20.2.4.LTS\include 

    Do you want me to add all of those from C2000Ware?

    2. Yes, this requires a linker command file change. In the migration guide, look at the "Linker Command File Changes" section and the section on how some of the sections were renamed. In this particular case, you can probably just fine ".ebss" in your .cmd file and chance it to ".bss"

    This process need time to understand. Altering .cmd file might arise many errors. Lets try with suitable library and path. 

    My only comment on your compiler flags is that "--float_support=fpu64" is not supported on this device. F2806x does not have FPU64 hardware.

    Lets change to "--float_support=fpu32" . My old project has  SFO_V6.H file, do you want me to add it? Its belongs to C:\F2806x_common\lib.

  • Using the C2000Ware versions of those files will get you the latest updates. Like I said, new versions of C2000Ware do support an EABI build of IQMath. However, I just discovered it does not have an EABI version of the SFO library, so you may need to use COFF after all if you getting errors about the compatibility of the SFO library.

    Whitney

  • Using the C2000Ware versions of those files will get you the latest updates. Like I said, new versions of C2000Ware do support an EABI build of IQMath. However, I just discovered it does not have an EABI version of the SFO library, so you may need to use COFF after all if you getting errors about the compatibility of the SFO library.

    Dear Sir,

    When you said about C2000Ware versions , I got the clue. I was doing wrong on choosing library, Include path. I had 3 confusing options as I mentioned last post, right at this moment C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2806x\common\include and C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2806x\headers\include fixes the EABI and COFF issue and SFO, memory  issues has gone.

    Error drops to 17 from 104! 

    Now lets talk about specific errors

    1.  gmake: *** [CAN_Module.obj] Error 1

    I cant see any object file in Debug folder now.

    2. subdir_rules.mk:9: recipe for target 'eCAN.obj' failed
    "../eCAN.c", line 71: error #137: struct "ECAN_MBOXES" has no field "MailBox"

    Is this generating for any version related issue? 

    3. F2806x_GlobalVariableDefs.c", line 376: error #148: declaration is incompatible with "volatile struct PIE_VECT_TABLE PieVectTable" (declared at line 271 of "C:/ti/c2000/C2000Ware_3_04_00_00/device_support/f2806x/headers/include/F2806x_PieVect.h")

    Does this issue telling to initialize enum type something? 

  • Good progress!

    1. There should be more details in the build console about why this file fails to build. This line alone doesn't give me enough information to go off.

    2. I'm not sure where "MailBox" is coming from. I found the definition of "ECAN_MBOXES" and it definitely doesn't contain a "MailBox" field. Does the C:\F2806x_headers\include folder you were originally using before you switched to the latest C2000Ware have a different F2806x_ECan.h from what C2000Ware contains?

    3. Look in F2806x_GlobalVariableDefs for the line where PieVectTable is declared. My guess is that it's missing a volatile.

    Whitney

  • 1. There should be more details in the build console about why this file fails to build. This line alone doesn't give me enough information to go off.

    For this specific error, let me give you some detail information its saying,

    subdir_rules.mk:9: recipe for target 'CAN_Module.obj' failed
    "../CAN_Module.c", line 45: error #137: struct "ECAN_MBOXES" has no field "MailBox"
    "../CAN_Module.c", line 46: error #137: struct "ECAN_MBOXES" has no field "MailBox"

    If I go CAN_Module.c in particular line red cross error is appeared as follows,

    Looks like under OnCamreciver function, 2 variables are not defined.

    2. I'm not sure where "MailBox" is coming from. I found the definition of "ECAN_MBOXES" and it definitely doesn't contain a "MailBox" field. Does the C:\F2806x_headers\include folder you were originally using before you switched to the latest C2000Ware have a different F2806x_ECan.h from what C2000Ware contains?

    At this moment, at project>C2000 compiler> Include option , I am using 2 path(include_path,-l)  like 

     C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2806x\common\include  C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2806x\headers\include

    Do you want me to  add C:\F2806x_headers\include? Let me compare both F2806x_ECan.h  in C2000Ware and C:\F2806x_headers\include.

    In 2013 version of F2806x_ECan.h at C:\F2806x_headers\include, its written,

    /**************************************/
    /* eCAN Mailboxes */
    /**************************************/

    struct ECAN_MBOXES {
    struct MBOX MailBox[32];

    At 2021 version of F2806x_ECan.h  at C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2806x\headers\include its written,

    / eCAN Mailboxes
    //
    struct ECAN_MBOXES
    {

     

    3. Look in F2806x_GlobalVariableDefs for the line where PieVectTable is declared. My guess is that it's missing a volatile.

    This problem has gone when I copied F2806x_GlobalVariableDefs.c from C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2806x\headers\source

    Now, error drops to 15 from 17.

  • I think part of your message got cut off. Were the two header files different? Judging by your code, I'm guessing the one your project was originally using did something like define ECAN_MBOXES to contain an array something like MBOX MailBox[32] where as the one in C2000Ware defines it each mailbox as a separate field (MBOX0, MBOX1...MBOX31).

    Whitney

  • I think part of your message got cut off. Were the two header files different? Judging by your code, I'm guessing the one your project was originally using did something like define ECAN_MBOXES to contain an array something like MBOX MailBox[32] where as the one in C2000Ware defines it each mailbox as a separate field (MBOX0, MBOX1...MBOX31).

    Dear Sir,

    Yes, I did see this difference. My code is kind of customized from parent  F2806x_ECan.c and F2806x_ECan.h. My one is like eCAN.c and eCAN.h.

    I have piping with other device so CAN_Module.h and CAN_Module.c has made for some purpose.

    Now looking at this 2 file of 2013 and 2021 version, may be my old code only run with version 2013.

    I got many errors when I like to add those file from previous version, even error comes when I add struct MBOX MailBox[32]; to 2021 version.

    Error comes more when I want to add, C:\F2806x_headers\include, C:\F2806x_headers\include at Project Properties → Build → Linker → File Search Path

    Can you see separate field (MBOX0, MBOX1...MBOX31) are locked?

    Like 2013 version of  F2806x_ECan.h.c my  eCAN.c say,

    volatile struct ECAN_REGS ECana_Shadow ;

    Do you want me to add 

    volatile struct ECAN_MBOXES ECanaMboxes; ?

    My eCAN.h contains,

    typedef struct _tag_CAN_MESSAGE_OBJ

    typedef struct _tag_CAN_PIPE 

    Under these function, UINT type variables like canmassage buffer, time, duty has called.

    Dont you think something like typedef struct need to add in suitable position?

    My old code is able to build previously, may be its conflicting with new version of F2806x_ECan.h.c.

  • Since I don't know what your code is like, it's hard for me to say what the correct path is, but it's probably best to try update your code to make it compatible with the newer versions of the header files.

    Whitney

  • Since I don't know what your code is like, it's hard for me to say what the correct path is, but it's probably best to try update your code to make it compatible with the newer versions of the header files

    Dear Sir ,

    All the problem above is causing for  wrong selection in project>C2000 compiler> Include option

    Errors drops to 3 now by changing setting following path 

     C:\F2806x_common\include 

     C:\F2806x_headers\include 

    Take a look now the console which we experience previously,


    #148 declaration is incompatible with "struct PIE_VECT_TABLE PieVectTable" (declared at line 194 of "C:/F2806x_headers/F2806x_headers/include/F2806x_PieVect.h") F2806x_GlobalVariableDefs.c

    I have been copied F2806x_GlobalVariableDefs.c from C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2806x\headers\source

  • If you switch back to the original GlobalVariableDefs.c file, does the issue go away? Or try removing the volatile key word in front of "struct PIE_VECT_TABLE PieVectTable" in GlobalVariableDefs.c? Does that help?

    Whitney

  • If you switch back to the original GlobalVariableDefs.c file, does the issue go away?

    This file is same for both version.

    Or try removing the volatile key word in front of "struct PIE_VECT_TABLE PieVectTable" in GlobalVariableDefs.c? Does that help?

    If we remove from GlobalVariableDefs.c, 103 errors appears including ISR, memory and so on. If we remove it from  F2806x_PieVect.h then errors remain 25 and console says "PIE_VECT_TABLE PieVectTable is not defined."

  • What do the 25 errors say?

    Whitney

  • What do the 25 errors say?

    Whitney

    Mostly , #10234-D unresolved symbols remain  

    And SECTION errors coming rom pievector header file.

  • Do you mind listing a few of those unresolved symbols? It may help me determine what file is missing. You've added F2806x_DefaultIsr.c to your project, right?

    Similarly, can you tell me what SECTION it's complaining about?

    Whitney

  • Do you mind listing a few of those unresolved symbols? It may help me determine what file is missing. You've added F2806x_DefaultIsr.c to your project, right?

    Sure sir! Take a look here,

    warning #10373-D: library "../IQmath.lib" contains TI-COFF object files which
       are incompatible with the ELF output file.  Ensure you are using the proper
       library.
    warning #10373-D: library "../SFO_TI_Build_V6b.lib" contains TI-COFF object
       files which are incompatible with the ELF output file.  Ensure you are using
       the proper library.
    warning #10373-D: library "../IQmath.lib" contains TI-COFF object files which
       are incompatible with the ELF output file.  Ensure you are using the proper
       library.
    warning #10373-D: library "../SFO_TI_Build_V6b.lib" contains TI-COFF object
       files which are incompatible with the ELF output file.  Ensure you are using
       the proper library.
    warning #10247-D: creating output section ".text" without a SECTIONS
       specification
    warning #10247-D: creating output section ".data" without a SECTIONS
       specification
    warning #10247-D: creating output section ".bss" without a SECTIONS
       specification
    warning #10247-D: creating output section ".cinit" without a SECTIONS
       specification
    warning #10247-D: creating output section "ramfuncs" without a SECTIONS
       specification
    warning #10247-D: creating output section "CLA1mathTables" without a SECTIONS
       specification
    warning #10247-D: creating output section "Cla1Prog" without a SECTIONS
       specification
    warning #10247-D: creating output section ".scratchpad" without a SECTIONS
       specification
    warning #10247-D: creating output section ".const_cla" without a SECTIONS
       specification
    warning #10247-D: creating output section ".const" without a SECTIONS
       specification
    warning #10247-D: creating output section "DevEmuRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "CpuTimer0RegsFile" without a
       SECTIONS specification
    warning #10247-D: creating output section "CpuTimer1RegsFile" without a
       SECTIONS specification
    warning #10247-D: creating output section "CpuTimer2RegsFile" without a
       SECTIONS specification
    warning #10247-D: creating output section "CsmPwlFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "FlashRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "AdcResultFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "CsmRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "SciaRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "ScibRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "SpiaRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "XIntruptRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "PieCtrlRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "GpioDataRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "GpioIntRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "SysCtrlRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "ECanaRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "Cla1RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "EPwm1RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "EPwm2RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "EPwm3RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "EPwm4RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "EPwm5RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "EPwm6RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "EPwm7RegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "GpioCtrlRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "AdcRegsFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "ECanaMboxesFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "PieVectTableFile" without a SECTIONS
       specification
    warning #10247-D: creating output section "ClaDataRam2" without a SECTIONS
       specification
    warning #10247-D: creating output section ".switch" without a SECTIONS
       specification
     
     undefined          first referenced    
      symbol                in file         
     ---------          ----------------    
     ADCINT1_ISR        ./F2806x_PieVect.obj
     ADCINT2_ISR        ./F2806x_PieVect.obj
     ADCINT3_ISR        ./F2806x_PieVect.obj
     ADCINT4_ISR        ./F2806x_PieVect.obj
     ADCINT5_ISR        ./F2806x_PieVect.obj
     ADCINT6_ISR        ./F2806x_PieVect.obj
     ADCINT7_ISR        ./F2806x_PieVect.obj
     ADCINT8_ISR        ./F2806x_PieVect.obj
     ADCINT9_ISR        ./F2806x_PieVect.obj
     CLA1_INT1_ISR      ./F2806x_PieVect.obj
     CLA1_INT2_ISR      ./F2806x_PieVect.obj
     CLA1_INT3_ISR      ./F2806x_PieVect.obj
     CLA1_INT4_ISR      ./F2806x_PieVect.obj
     CLA1_INT5_ISR      ./F2806x_PieVect.obj
     CLA1_INT6_ISR      ./F2806x_PieVect.obj
     CLA1_INT7_ISR      ./F2806x_PieVect.obj
     CLA1_INT8_ISR      ./F2806x_PieVect.obj
     Cla1funcsLoadSize  ./CLA.obj           
     Cla1funcsLoadStart ./CLA.obj           
     Cla1funcsRunStart  ./CLA.obj           
     DATALOG_ISR        ./F2806x_PieVect.obj
     DINTCH1_ISR        ./F2806x_PieVect.obj
     DINTCH2_ISR        ./F2806x_PieVect.obj
     DINTCH3_ISR        ./F2806x_PieVect.obj
     DINTCH4_ISR        ./F2806x_PieVect.obj
     DINTCH5_ISR        ./F2806x_PieVect.obj
     DINTCH6_ISR        ./F2806x_PieVect.obj
     DSP28x_usDelay     ./ADC.obj           
     ECAN0INTA_ISR      ./F2806x_PieVect.obj
     ECAN1INTA_ISR      ./F2806x_PieVect.obj
     ECAP1_INT_ISR      ./F2806x_PieVect.obj
     ECAP2_INT_ISR      ./F2806x_PieVect.obj
     ECAP3_INT_ISR      ./F2806x_PieVect.obj
     EMUINT_ISR         ./F2806x_PieVect.obj
     EPWM1_INT_ISR      ./F2806x_PieVect.obj
     EPWM1_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM2_INT_ISR      ./F2806x_PieVect.obj
     EPWM2_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM3_INT_ISR      ./F2806x_PieVect.obj
     EPWM3_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM4_INT_ISR      ./F2806x_PieVect.obj
     EPWM4_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM5_INT_ISR      ./F2806x_PieVect.obj
     EPWM5_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM6_INT_ISR      ./F2806x_PieVect.obj
     EPWM6_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM7_INT_ISR      ./F2806x_PieVect.obj
     EPWM7_TZINT_ISR    ./F2806x_PieVect.obj
     EPWM8_INT_ISR      ./F2806x_PieVect.obj
     EPWM8_TZINT_ISR    ./F2806x_PieVect.obj
     EQEP1_INT_ISR      ./F2806x_PieVect.obj
     EQEP2_INT_ISR      ./F2806x_PieVect.obj
     HRCAP1_INT_ISR     ./F2806x_PieVect.obj
     HRCAP2_INT_ISR     ./F2806x_PieVect.obj
     HRCAP3_INT_ISR     ./F2806x_PieVect.obj
     HRCAP4_INT_ISR     ./F2806x_PieVect.obj
     I2CINT1A_ISR       ./F2806x_PieVect.obj
     I2CINT2A_ISR       ./F2806x_PieVect.obj
     ILLEGAL_ISR        ./F2806x_PieVect.obj
     INT13_ISR          ./F2806x_PieVect.obj
     INT14_ISR          ./F2806x_PieVect.obj
     LUF_ISR            ./F2806x_PieVect.obj
     LVF_ISR            ./F2806x_PieVect.obj
     MRINTA_ISR         ./F2806x_PieVect.obj
     MXINTA_ISR         ./F2806x_PieVect.obj
     NMI_ISR            ./F2806x_PieVect.obj
     PIE_RESERVED       ./F2806x_PieVect.obj
     RTOSINT_ISR        ./F2806x_PieVect.obj
     RamfuncsLoadEnd    ./main.obj          
     RamfuncsLoadStart  ./main.obj          
     RamfuncsRunStart   ./main.obj          
     SCIRXINTA_ISR      ./F2806x_PieVect.obj
     SCIRXINTB_ISR      ./F2806x_PieVect.obj
     SCITXINTA_ISR      ./F2806x_PieVect.obj
     SCITXINTB_ISR      ./F2806x_PieVect.obj
     SFO                ./PWM.obj           
     SPIRXINTA_ISR      ./F2806x_PieVect.obj
     SPIRXINTB_ISR      ./F2806x_PieVect.obj
     SPITXINTA_ISR      ./F2806x_PieVect.obj
     TINT0_ISR          ./F2806x_PieVect.obj
     USB0_INT_ISR       ./F2806x_PieVect.obj
     USER10_ISR         ./F2806x_PieVect.obj
     USER11_ISR         ./F2806x_PieVect.obj
     USER12_ISR         ./F2806x_PieVect.obj
     USER1_ISR          ./F2806x_PieVect.obj
     USER2_ISR          ./F2806x_PieVect.obj
     USER3_ISR          ./F2806x_PieVect.obj
     USER4_ISR          ./F2806x_PieVect.obj
     USER5_ISR          ./F2806x_PieVect.obj
     USER6_ISR          ./F2806x_PieVect.obj
     USER7_ISR          ./F2806x_PieVect.obj
     USER8_ISR          ./F2806x_PieVect.obj
     USER9_ISR          ./F2806x_PieVect.obj
     WAKEINT_ISR        ./F2806x_PieVect.obj
     XINT1_ISR          ./F2806x_PieVect.obj
     XINT2_ISR          ./F2806x_PieVect.obj
     XINT3_ISR          ./F2806x_PieVect.obj
     rsvd_ISR           ./F2806x_PieVect.obj
     
    error #10234-D: unresolved symbols remain
     
    error #10010: errors encountered during linking; "{DEMO}.out" not bui

  • What .cmd files are you using in your project? Sections like .cinit, .text, .data should all be defined in a .cmd file like those found in device_support\f2806x\common\cmd. The "RegsFile" sections should be available in the device_support\f2806x\headers\cmd\F2806x_Headers_nonBIOS.cmd file.

    Do you have a F2806x_DefaultIsr.c file in your project? If not, that may explain why all those ISR symbols are undefined. DSP28x_usDelay should be found in F2806x_usDelay.asm. If you do have F2806x_usDelay.asm in your project but it's still giving you an error, it may be an EABI vs COFF issue. EABI doesn't require the symbol names to be prefixed with an underscore like COFF does.

    Did you decide whether you were going to use COFF or EABI? Like I said earlier, it may be better to use COFF since I don't think we have an EABI version of the SFO library for F2806x.

    Whitney

  • Dear Sir,

    May be those issues are reasonable what you have mentioned here. Recent setting has F2806x_RAM_link.cmd file. I am not using Non bios cmd. I have F2806x_DefaultIsr.c.

    Right at this moment EABI is runnging.

    Korean holidays has appeared, I will available on desk after 5 days. Lets keep update you after remove or add those file.

  • No problem, enjoy the holidays and let me know how those changes go after you return.

    Whitney

  • No problem, enjoy the holidays and let me know how those changes go after you return.

    Thank you very much sir. Lets go with your previous direction.

    What .cmd files are you using in your project? Sections like .cinit, .text, .data should all be defined in a .cmd file like those found in device_support\f2806x\common\cmd. The "RegsFile" sections should be available in the device_support\f2806x\headers\cmd\F2806x_Headers_nonBIOS.cmd file.

    In my Project Properties>General>Project>Linker command file, there is no drop down/ pop up list for F2806x_Headers_nonBIOS.cmd. 

    I cant copy it in project tree. What I did is as follows, project>C2000 compiler> Include option

    Do you have a F2806x_DefaultIsr.c file in your project?

    Yes, I have add it now.

    If not, that may explain why all those ISR symbols are undefined. DSP28x_usDelay should be found in F2806x_usDelay.asm. If you do have F2806x_usDelay.asm in your project but it's still giving you an error, it may be an EABI vs COFF issue. EABI doesn't require the symbol names to be prefixed with an underscore like COFF does.

    I have deleted F2806x_usDelay.asm. Take a look, Project Properties>General>Tool chain setting 

    Did you decide whether you were going to use COFF or EABI? Like I said earlier, it may be better to use COFF since I don't think we have an EABI version of the SFO library for F2806x.

    Lets apply it for COFF. 

    But I am getting same error with new one.

    At my Project Properties → Build → Linker → File Search Path

    Take a look my project tree

  • Hasan,

    Wanted to let you know that Whitney is currently out of the office and will return by next Monday the 4th of October.  You should expect a reply by that time.

    Best.

    Matthew

  • In my Project Properties>General>Project>Linker command file, there is no drop down/ pop up list for F2806x_Headers_nonBIOS.cmd.

    You can edit the properties under C2000 Linker -> File Search Path. Put "F2806x_Headers_nonBIOS.cmd" in the -l section and path to were it's located in the -i section. I see you added it to your compiler search path, but it needs to be in the linker search path for a cmd file.

    For the PieVectTable error, take a look at the extern at the bottom of  F2806x_PieVect.h and compare it to the PieVectTable line in F2806x_GlobalVariableDefs.c. Is there any difference between them (other than the extern)?

    Whitney

  • You can edit the properties under C2000 Linker -> File Search Path. Put "F2806x_Headers_nonBIOS.cmd" in the -l section and path to were it's located in the -i section. I see you added it to your compiler search path, but it needs to be in the linker search path for a cmd file.

    Thank you to comeback before the schedule, I was waiting for a long time.

    Yes, I did so, the drop down list is still not containing any  F2806x_Headers_nonBIOS.cmd, I kept it null. And the errors remain same like previous thread. I also remove it from  compiler search path.

    For the PieVectTable error, take a look at the extern at the bottom of  F2806x_PieVect.h and compare it to the PieVectTable line in F2806x_GlobalVariableDefs.c. Is there any difference between them (other than the extern)?

    I asked this specific problem to stack overflow, like If we add volatile struct PIE_VECT_TABLE PieVectTable; in both places of F2806x_GlobalVariableDefs.c and F2806x_PieVect.h then such problem raised.

    An expert says, "Both declarations shall be compatible, so if the struct is declared to be volatile in one place then it must be too in the other place. But once you can successfully compile F2806x_GlobalVariableDefs.c, other link errors (related or not to this problem) can still occur"

  • Yes, I did so, the drop down list is still not containing any  F2806x_Headers_nonBIOS.cmd, I kept it null. And the errors remain same like previous thread. I also remove it from  compiler search path.

    It's okay if it doesn't show up in the drop down box. As long as it's in the linker options it will be passed to the linker. You can double check by looking in the build console. Toward the end of the build output look for the "Invoking: C2000 Linker" section and the call to cl2000. You should be able to check your -i and -l options in that command.

    An expert says, "Both declarations shall be compatible, so if the struct is declared to be volatile in one place then it must be too in the other place. But once you can successfully compile F2806x_GlobalVariableDefs.c, other link errors (related or not to this problem) can still occur"

    That's right. We now need to resolve those other errors. Which errors remain? The errors about all those ISRs being undefined symbols or something else?

    Whitney

  • Which errors remain? The errors about all those ISRs being undefined symbols or something else?

    Dear Sir, 

    Just see my post 12 days ago during you were in holidays.

    3 errors remain same.  volatile struct PIE_VECT_TABLE PieVectTable problem is main one.

  • I thought you were saying you were able to solve those errors about PIE_VECT_TABLE by making F2806x_GlobalVariableDefs.c and F2806x_PieVect.h consistent, but more errors were revealed after that fix was made. Is that right? I was asking about what those additional errors were.

    Whitney

  • I thought you were saying you were able to solve those errors about PIE_VECT_TABLE by making F2806x_GlobalVariableDefs.c and F2806x_PieVect.h consistent, but more errors were revealed after that fix was made. Is that right? I was asking about what those additional errors were.

    Yes, I was not able to solve it. Additional errors came from this issue.

    Take a look again.

    Do you think, at Project>Properties>Resources>Link resource 

    The exclamatory sign (!) makes any problem, take a look

  • Yes, I was not able to solve it. Additional errors came from this issue.

    What were the additional errors? Is it it the same error with or without volatile or are the two sets of errors? I want to see both scenarios.

    The exclamatory sign (!) makes any problem, take a look

    It's not necessarily an issue if you aren't using those variables anywhere. You should be able to edit them to correct them though. "PROJECT_ROOT" should probably be the same as "PROJECT_LOC" and "BuildDirectory" sounds like it should be where where the .out gets generated which is usually a folder in PROJECT_LOC that is named the same as the build configuration.

    Whitney

  • What were the additional errors? Is it it the same error with or without volatile or are the two sets of errors? I want to see both scenarios.

    Look here, I do mean last 2 errors,

    It's not necessarily an issue if you aren't using those variables anywhere. You should be able to edit them to correct them though. "PROJECT_ROOT" should probably be the same as "PROJECT_LOC" and "BuildDirectory" sounds like it should be where where the .out gets generated which is usually a folder in PROJECT_LOC that is named the same as the build configuration.

    This one is existing project, I have imported this project from other place. The exclamatory sign (!), parameters are showing previous location of the project. Unfortunately those cant be edit to change the path. My PROJECT_ROOT" and "PROJECT_LOC" are not same.

      At Project>Properties> Build>Build variables 

    I have changed BuildAritifactFileName and BuildArtifactPathName for present location.

    I am not sure this is real cause.

    Right at this moment my ccs 10 does not responding for may be server issue.

  • Look here, I do mean last 2 errors,

    Those two errors are just higher level errors saying the build couldn't finish because other errors exist. They won't go away until the PieVectTable issue is resolved.

    Unfortunately those cant be edit to change the path. My PROJECT_ROOT" and "PROJECT_LOC" are not same.

    Sorry, I guess those are generated by CCS and can't be removed or edited. Like I said, you may not be using them, so they aren't necessarily the issue. However, they may be a sign that the project files are corrupted or incompatible with this version of CCS. Do you know what version of CCS the project was originally created with?

    You may want to consider creating a new clean project in a new clean workspace and add your files and build/linker options from scratch. Or may start with a C2000Ware example that has all the appropriate files already included and edit it to add your custom code?

    Whitney

  • Dear Sir,

    I will reply this thread soon. 

  • Okay, thanks for the update.

    Whitney

  • Dear Sir,

    I got a clue that may be main reason to showing error. As previously I raised   PROJECT_ROOT" and "PROJECT_LOC" issue. The project I imported is belongs to a server. Recently the server is off so n ccs my project shows "closed". I cant able to open this project.

    Now I copied this whole project file, again imported from a known destination under my new project (NEW>CCSPROJECT> . But now in Project Properties>CCS General  >Project > WHY ARM is showing?

    I should go for NEW>PROJECT?

     

    Sorry, I guess those are generated by CCS and can't be removed or edited. Like I said, you may not be using them, so they aren't necessarily the issue. However, they may be a sign that the project files are corrupted or incompatible with this version of CCS. Do you know what version of CCS the project was originally created with?

    You may want to consider creating a new clean project in a new clean workspace and add your files and build/linker options from scratch. Or may start with a C2000Ware example that has all the appropriate files already included and edit it to add your custom code?

    Well said. I think that project was build in ccs 6.1 or later than 5 version. 

    Yes, at Project Properties> General> product , I have select ware2000.

    Lets set all parameter like as I did previously. Root and Location will set to current state.

  • Dear Sir,

    With the last setting we discussed earlier, I got huge errors as follows, 
    #20 identifier "xxx" is undefined 

     

    If I go to Properties> C2000  compiler > Advanced option> Runtime Model option ..and Select ON in  specify CLA background task is use ,

    as follows.

    Then errors drop to 63, see bellow 

    One TI expert says as follows,  gmake dependency dropped error - Code Composer Studio forum - Code Composer StudioTm︎ - TI E2E support forums

    Beside this issue, my subdir_rulls.mk  ,  --preproc_dependency="$(basename $(<F)).d_raw" this area shows red.

  • Dear Sir,

    I just removed F280x_project.h file from my project tree.

    Now error drops to 20,

    Take a look,

  • WHY ARM is showing?

    In the device family box? That's pretty strange. You may want to try starting a new project anyway, but the fact that you're still seeing the appropriate compiler options for the C28x (like CLA options), I don't think it's necessarily to blame for your other issues.

    #20 identifier "xxx" is undefined 

    This error sometimes means that you're missing #includes for the files containing those symbols. #including "DSP28x_Project.h" should be enough to allow it to find these symbols.

    If I go to Properties> C2000  compiler > Advanced option> Runtime Model option ..and Select ON in  specify CLA background task

    The F2806x device doesn't support a CLA background task, so that should stay off. In general you shouldn't use the number of errors as an indicator that you are on the right track. Sometimes seeing more errors after making a change is a good sign because it means that you've cleared up one error that was so bad it was preventing your build from progressing far enough to even find those other issues.

    Have you imported a C2000Ware example project for the F2806x and used it to help guide your project configuration? Using one of our examples as a reference for which items you need on your include path and which cmd files to add to the project might help.

    Whitney

  • Can you check your warnings and see what they say? Are they warning that any of the directories on your linker file search path can't be found. Those errors you showed in the most recent post seem to indicate it doesn't have the correct path to libc.a (should be "${CG_TOOL_ROOT}/lib") or your nonBIOS.cmd file.

    Whitney

  • I don't think it's necessarily to blame for your other issues.

    Yes I fix this issue.

    This error sometimes means that you're missing #includes for the files containing those symbols. #including "DSP28x_Project.h" should be enough to allow it to find these symbols.

    Yes, this problem go away right at the moment. I had DSP28x_Project.h, DSP28x_Examples.h, DSP28x_Device.h. I just remove DSP28x_Project.h.

    The F2806x device doesn't support a CLA background task, so that should stay off. In general you shouldn't use the number of errors as an indicator that you are on the right track. Sometimes seeing more errors after making a change is a good sign because it means that you've cleared up one error that was so bad it was preventing your build from progressing far enough to even find those other issues.

    Yes well said. My project contains CLA.h and CLA.c. I have keep it OFF. Yes, minimizing errors does not make sense. 

    Have you imported a C2000Ware example project for the F2806x and used it to help guide your project configuration? Using one of our examples as a reference for which items you need on your include path and which cmd files to add to the project might help.

    Whitney

    Yes. This project is running on C2000Ware,but I am not working any example. How to get guide for project configuration. Kindly indicate one. 

  • Can you check your warnings and see what they say? Are they warning that any of the directories on your linker file search path can't be found.

    Take a look what CDT console says,

    error #10008-D: cannot find file "libc.a"
    error #10008-D: cannot find file "F2806x_Headers_nonBIOS.cmd"
    error #10008-D: cannot find file "rts2800_fpu32_eabi.lib"
    error #10265: no valid memory range available for placement of ".text"
    error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section ".text" size 0x5410page 0
    error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section "Cla1Prog" size 0x28eepage 0.  Available memory ranges:
     
    error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section "ramfuncs" size 0x33fpage 0.  Available memory ranges:
     
    error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section "ClaDataRam2" size 0x32apage 1.  Available memory ranges:
       DEV_EMU      size: 0x105        unused: 0x105        max hole: 0x105     
       SYS_PWR_CTL   size: 0x3          unused: 0x3          max hole: 0x3       
       FLASH_REGS   size: 0x60         unused: 0x60         max hole: 0x60      
       CSM          size: 0x20         unused: 0x20         max hole: 0x20      
       ADC_RESULT   size: 0x20         unused: 0x10         max hole: 0x10      
       CPU_TIMER0   size: 0x8          unused: 0x0          max hole: 0x0       
       CPU_TIMER1   size: 0x8          unused: 0x0          max hole: 0x0       
       CPU_TIMER2   size: 0x8          unused: 0x0          max hole: 0x0       
       PIE_CTRL     size: 0x20         unused: 0x6          max hole: 0x6       
       PIE_VECT     size: 0x100        unused: 0x0          max hole: 0x0       
       DMA          size: 0x200        unused: 0x200        max hole: 0x200     
       CLA1         size: 0x80         unused: 0x40         max hole: 0x40      
       USB0         size: 0x1000       unused: 0x2ca        max hole: 0x2ca     
       McBSPA       size: 0x40         unused: 0x40         max hole: 0x40      
       ECANA        size: 0x40         unused: 0xc          max hole: 0xc       
       ECANA_LAM    size: 0x40         unused: 0x40         max hole: 0x40      
       ECANA_MOTS   size: 0x40         unused: 0x40         max hole: 0x40      
       ECANA_MOTO   size: 0x40         unused: 0x40         max hole: 0x40      
       ECANA_MBOX   size: 0x100        unused: 0x0          max hole: 0x0       
       COMP1        size: 0x20         unused: 0x20         max hole: 0x20      
       COMP2        size: 0x20         unused: 0x20         max hole: 0x20      
       COMP3        size: 0x20         unused: 0x20         max hole: 0x20      
       EPWM1        size: 0x40         unused: 0x0          max hole: 0x0       
       EPWM2        size: 0x40         unused: 0x0          max hole: 0x0       
       EPWM3        size: 0x40         unused: 0x0          max hole: 0x0       
       EPWM4        size: 0x40         unused: 0x0          max hole: 0x0       
       EPWM5        size: 0x40         unused: 0x0          max hole: 0x0       
       EPWM6        size: 0x40         unused: 0x0          max hole: 0x0       
       EPWM7        size: 0x40         unused: 0x0          max hole: 0x0       
       EPWM8        size: 0x40         unused: 0x40         max hole: 0x40      
       ECAP1        size: 0x20         unused: 0x20         max hole: 0x20      
       ECAP2        size: 0x20         unused: 0x20         max hole: 0x20      
       ECAP3        size: 0x20         unused: 0x20         max hole: 0x20      
       HRCAP1       size: 0x20         unused: 0x20         max hole: 0x20      
       HRCAP2       size: 0x20         unused: 0x20         max hole: 0x20      
       EQEP1        size: 0x40         unused: 0x40         max hole: 0x40      
       EQEP2        size: 0x40         unused: 0x40         max hole: 0x40      
       HRCAP3       size: 0x20         unused: 0x20         max hole: 0x20      
       HRCAP4       size: 0x20         unused: 0x20         max hole: 0x20      
       GPIOCTRL     size: 0x40         unused: 0x0          max hole: 0x0       
       GPIODAT      size: 0x20         unused: 0x0          max hole: 0x0       
       GPIOINT      size: 0x20         unused: 0x0          max hole: 0x0       
       SYSTEM       size: 0x30         unused: 0x0          max hole: 0x0       
       SPIA         size: 0x10         unused: 0x0          max hole: 0x0       
       SCIA         size: 0x10         unused: 0x0          max hole: 0x0       
       NMIINTRUPT   size: 0x10         unused: 0x10         max hole: 0x10      
       XINTRUPT     size: 0x10         unused: 0x0          max hole: 0x0       
       ADC          size: 0x80         unused: 0x30         max hole: 0x30      
       SPIB         size: 0x10         unused: 0x10         max hole: 0x10      
       SCIB         size: 0x10         unused: 0x0          max hole: 0x0       
       I2CA         size: 0x40         unused: 0x40         max hole: 0x40      
       PARTID       size: 0x1          unused: 0x1          max hole: 0x1       
       CSM_PWL      size: 0x8          unused: 0x8          max hole: 0x8       
    error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section "CLA1mathTables" size 0x2d0page 0.  Available memory ranges:
     

    Those errors you showed in the most recent post seem to indicate it doesn't have the correct path to libc.a (should be "${CG_TOOL_ROOT}/lib") or your nonBIOS.cmd file.

    Tell me where I am doing wrong.

    The advice says,

    ../CLATask.cla", line 439: advice #30012: (Performance) Single-precision float to double-precision float conversion operation was not eliminated during optimization. Using inefficient fallback; consider modifying code to not require this operation.
    "../CLATask.cla", line 439: advice #30012: (Performance) Double-precision comparison (>) operation was not eliminated during optimization. Using inefficient fallback; consider modifying code to not require this operation.
    #3195-D (Performance) EABI double precision is 64-bits as opposed to 32-bits for COFF. Consider changing doubles to floats for improved performance in FPU32-mode.	CAN_Module.c	/DSPF28069	line 299
    "NO_PSN_FILE": advice #30012: (Performance) Single-precision float to double-precision float conversion operation was not eliminated during optimization. Using inefficient fallback; consider modifying code to not require this operation.
    

  • Dear Sir,

    May be I am going on right direction now.

    From the last problem, I did  --gen_func_subsections ON in optimization setting.

    At Project >properties> C2000 Linker>File search path  I have changes like 

    At --Library, -l

    1. C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-c2000_20.2.5.LTS\lib\libc.a

    2. C:\ti\c2000\C2000Ware_3_04_00_00\driverlib 

    Now console says,

    Invoking: C2000 Linker
    "C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS/bin/cl2000" -v28 -ml -mt --cla_support=cla0 --float_support=fpu32 --vcu_support=vcu0 -O2 --advice:performance=all -g --float_operations_allowed=all --printf_support=full --diag_warning=225 --diag_wrap=off --display_error_number --gen_func_subsections=on --abi=eabi --cla_background_task=off --cla_signed_compare_workaround=off -z -m""{DSPF28069}.map\"" --stack_size=0x800 --warn_sections -i"C:/F2806x_common/lib" -i"C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS/lib" -i"C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS/lib" -i"C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS/include" --reread_libs --diag_wrap=off --display_error_number --xml_link_info="DSPF28069_linkInfo.xml" --rom_model -o ""{DSP28069}.out\"" "./AC_SYNC.obj" "./ADC.obj" "./CAN_Module.obj" "./CLA.obj" "./CLATask.obj" "./ChargeNDischarge.obj" "./Control.obj" "./D_OUT.obj" "./EEPRom.obj" "./F2806x_CSMPasswords.obj" "./F2806x_CodeStartBranch.obj" "./F2806x_CpuTimers.obj" "./F2806x_DBGIER.obj" "./F2806x_DefaultIsr.obj" "./F2806x_DisInt.obj" "./F2806x_GlobalVariableDefs.obj" "./F2806x_PieCtrl.obj" "./F2806x_PieVect.obj" "./F2806x_SysCtrl.obj" "./Global.obj" "./LED.obj" "./Main_Timer.obj" "./Message.obj" "./PRCharger.obj" "./PRRect.obj" "./PWM.obj" "./Register.obj" "./SCI.obj" "./Serial.obj" "./eCAN.obj" "./main.obj" "../F2806x_Headers_nonBIOS.cmd"  -l"C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS/lib/libc.a" -l"C:/ti/c2000/C2000Ware_3_04_00_00/driverlib" 
    <Linking>
    fatal error #6001: cannot open file "C:/ti/c2000/C2000Ware_3_04_00_00/driverlib":  Permission denied

    Permission denied 

    That means I have to do some thing in file properties Environment setting?

  • The fact that we're seeing linker errors means the build errors have been resolved, so we're definitely getting close.

    The -l option is meant for files and driverlib is a directory, not a file, so you can remove that. Are you still getting errors about libc.a? The way it's included in the console output looks correct now.

    To fix those "program will not fit into available memory" you'll need to edit your .cmd (not the F2806x_Headers_nonBIOS.cmd one, but the other one with .text, .stack, etc...) to allocate more room for the sections mentioned. There's a nice guide on how to make more memory available to sections. Check out the FAQs toward the bottom of the page.

    Whitney

  • The -l option is meant for files and driverlib is a directory, not a file, so you can remove that. Are you still getting errors about libc.a? The way it's included in the console output looks correct now.

    Dear Sir,

    Thanks again to go with me. All errors gone because I add driverlib first. But if I removed it from Project >properties> C2000 Linker>File search path (--library, -l) then OCT 15,2021, 21.21AM error comes. Now I am not getting any errors relating libc.a.

    To fix those "program will not fit into available memory" you'll need to edit your .cmd (not the F2806x_Headers_nonBIOS.cmd one, but the other one with .text, .stack, etc...) to allocate more room for the sections mentioned. There's a nice guide on how to make more memory available to sections. Check out the FAQs toward the bottom of the page

    At this stage no memory error is noticeable. I did see the guideline you mentioned. Now looking at the permission denied problem, I checked this folder access setting but it looks OK!

    Another post for ccs 5 with Mr. Mattehw Pate, I got same problem.    

  • The errors are probably gone when you added driverlib because adding driverlib broke the linking process badly enough that it couldn't even reach those other linker errors. Driverlib does not support F2806x--if you look in the driverlib directory, you will not see an f2806x folder. You should be able to remove the driverlib from your project and update your cmd file to resolve the remaining linker errors.

    Whitney

  • The errors are probably gone when you added driverlib because adding driverlib broke the linking process badly enough that it couldn't even reach those other linker errors. Driverlib does not support F2806x--if you look in the driverlib directory, you will not see an f2806x folder. You should be able to remove the driverlib from your project and update your cmd file to resolve the remaining linker errors.

    Yes I did see for F2806x driver library folder is unavailable. If we remove this path from  Project >properties> C2000 Linker>File search path , then same error of 15th oct will appear. 

    which cmd file you are talking about? 

  • I think you mentioned 28069_RAM_lnk.cmd before? Is that the linker command file you're using to allocate space for .text, .stack, .bss, etc...? That's the one I've referring to.

    Whitney