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.
Linker Gurus,
I'm seeing some strange behavior with C28 CGT v6.1.0. I have two nearly identical projects both using the same tool chains and options. One builds fine without warnings while the other throws warning about a missing build attribute. As you can see below everything (including the library its complaining about) appear to be the same. Any ideas what could cause this?
Thanks,
Trey
Good Project:
"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/bin/cl2000"
-v28
-ml
-g
--define="_DEBUG"
--define="LARGE_MODEL"
--define="FLASH"
--diag_warning=225
-z
--stack_size=0x380
-m"LED-ColorMix.map"
--warn_sections
-i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/lib"
-i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/include"
-i"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_examples/LED_Boost_PC"
--reread_libs
--rom_model
-o "LED-ColorMix.out"
"./SciCommsGui.obj"
"./PWM_DualUpDwnCnt_Cnf.obj"
"./PWM_1ch_UpDwnCnt_Cnf.obj"
"./PWMDRV_DualUpDwnCnt.obj"
"./PWMDRV_1ch_UpDwnCnt.obj"
"./LED_Boost_PC_Main.obj"
"./LED_Boost_PC_ISR.obj"
"./LED_Boost_PC_DevInit_F2802x.obj"
"./CNTL_2P2Z.obj"
"./ADC_SOC_Cnf.obj"
"./ADCDRV_1ch.obj"
"../F28027_FLASH_LED-ColorMix.cmd"
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_headers/cmd/F2802x_Headers_nonBIOS.cmd"
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_common/lib/IQmath.lib"
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_common/lib/driverlib.lib"
<Linking>
'Finished building target: LED-ColorMix.out'
Bad Project:
"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/bin/cl2000"
-v28
-ml
-g
--define="_DEBUG"
--define="LARGE_MODEL"
--define="FLASH"
--diag_warning=225
-z
--stack_size=0x380
-m"LED-ColorMix.map"
--warn_sections
-i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/lib"
-i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/include"
-i"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_examples/LED_Boost_CapTouch"
--reread_libs
--rom_model
-o "LED-ColorMix.out"
"./SciCommsGuiCapTouchInt.obj"
"./PWM_DualUpDwnCnt_Cnf.obj"
"./PWM_1ch_UpDwnCnt_Cnf.obj"
"./PWMDRV_DualUpDwnCnt.obj"
"./PWMDRV_1ch_UpDwnCnt.obj"
"./LED_Boost_CapTouch_Main.obj"
"./LED_Boost_CapTouch_ISR.obj"
"./LED_Boost_CapTouch_DevInit_F2802x.obj"
"./CNTL_2P2Z.obj"
"./ADC_SOC_Cnf.obj"
"./ADCDRV_1ch.obj"
"../F28027_FLASH_LED-ColorMix.cmd"
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_headers/cmd/F2802x_Headers_nonBIOS.cmd"
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_common/lib/IQmath.lib"
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_common/lib/driverlib.lib"
<Linking>
warning: build attribute vendor section TI missing in
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_commo
n/lib/IQmath.lib<IQ15div.obj>": compatibility cannot be determined
warning: build attribute vendor section TI missing in
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_commo
n/lib/IQmath.lib<IQ15frac.obj>": compatibility cannot be determined
warning: build attribute vendor section TI missing in
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_commo
n/lib/IQmath.lib<IQ15int.obj>": compatibility cannot be determined
warning: build attribute vendor section TI missing in
"C:/controlsuite_gitorious_dev/development_kits/C2000_LaunchPad/f2802x_commo
n/lib/IQmath.lib<IQmathTables.obj>": compatibility cannot be determined
'Finished building target: LED-ColorMix.out'
Most likely the library IQmath.lib isn't actually needed in the "good" case, so the problem is not discovered. Could you examine the linker map file for the "good" case to verify that those four object files from IQmath.lib are not used?
The bad project is linking in different files. So, it is possible that it is bringing in different members of the IQmath library. And those library members have the problem.
Try these commands:
% ar2000 -x IQmath.lib IQ15div.obj
% ofd2000 IQ15div.obj
The output of ofd2000 should include something similar to ...
Build Attributes in "$build.attributes"
Format Version: 'A'
<0> Vendor Name: "TI" (Texas Instruments, Inc.)
Tag_File:
Attributes:
Tag_Producer_Name Assembler
Tag_Producer_VMajor 7 (Producer Major Version + 1)
Tag_Producer_VMinor 1 (Producer Minor Version + 1)
Tag_Producer_VPatch 3 (Producer Patch Version + 1)
Tag_ISA 1 (C2700)
Tag_Memory_Model 1 (small)
Tag_Amode 2 (No Amode)
Do you see something similar? If so, post it.
Thanks and regards,
-George
Archaeologist,
You were correct, the library wasn't actually used in the good project.
Georgem,
Output didn't have a build attributes section. See below:
OBJECT FILE: IQ15div.obj
Object File Information
File Name: IQ15div.obj
Format: TI-COFF Version 2
File Type: relocatable file
Time Stamp: Tue Apr 22 19:11:01 2008
Machine: TI C2000
Machine Endian: little endian
Entry Point: 0x00000000
Vendor: Texas Instruments, Inc.
Tool Version: 0.0.0
Number of Sections: 4
File Length: 1091
Symbol Table File Offset: 0x000002b4
String Table File Offset: 0x0000040a
TI-COFF f_flags: 0x00000110
CPU Generation: C2800
Control Data Endian: little endian
Section Information
id name load addr run addr size align alloc
-- ---- --------- -------- ---- ----- -----
1 .text 0x00000000 0x00000000 0x0 1 Y
2 .data 0x00000000 0x00000000 0x0 1 Y
3 .bss 0x00000000 0x00000000 0x0 1 Y
4 IQmath 0x00000000 0x00000000 0x47 1 Y
Relocation Table 1/1 for Section 4 ("IQmath")
id type offset sym name
-- ---- ------ --- ----
0 R_REL22 0x00000008 17 _IQdivTable
1 R_REL22 0x0000000e 18 _IQdivRoundSatTable
Line Number Table for Section 4 ("IQmath")
file function address line
---- -------- ------- ----
IQNdiv.asm $ASM$ 0x00000000 245
IQNdiv.asm $ASM$ 0x00000001 245
IQNdiv.asm $ASM$ 0x00000002 245
IQNdiv.asm $ASM$ 0x00000003 245
IQNdiv.asm $ASM$ 0x00000004 245
IQNdiv.asm $ASM$ 0x00000005 245
IQNdiv.asm $ASM$ 0x00000006 245
IQNdiv.asm $ASM$ 0x00000007 245
IQNdiv.asm $ASM$ 0x00000008 245
IQNdiv.asm $ASM$ 0x0000000a 245
IQNdiv.asm $ASM$ 0x0000000b 245
IQNdiv.asm $ASM$ 0x0000000c 245
IQNdiv.asm $ASM$ 0x0000000d 245
IQNdiv.asm $ASM$ 0x0000000e 245
IQNdiv.asm $ASM$ 0x00000010 245
IQNdiv.asm $ASM$ 0x00000011 245
IQNdiv.asm $ASM$ 0x00000013 245
IQNdiv.asm $ASM$ 0x00000015 245
IQNdiv.asm $ASM$ 0x00000016 245
IQNdiv.asm $ASM$ 0x00000017 245
IQNdiv.asm $ASM$ 0x00000018 245
IQNdiv.asm $ASM$ 0x0000001a 245
IQNdiv.asm $ASM$ 0x0000001c 245
IQNdiv.asm $ASM$ 0x0000001d 245
IQNdiv.asm $ASM$ 0x0000001e 245
IQNdiv.asm $ASM$ 0x00000020 245
IQNdiv.asm $ASM$ 0x00000022 245
IQNdiv.asm $ASM$ 0x00000023 245
IQNdiv.asm $ASM$ 0x00000024 245
IQNdiv.asm $ASM$ 0x00000025 245
IQNdiv.asm $ASM$ 0x00000027 245
IQNdiv.asm $ASM$ 0x00000029 245
IQNdiv.asm $ASM$ 0x0000002a 245
IQNdiv.asm $ASM$ 0x0000002b 245
IQNdiv.asm $ASM$ 0x0000002d 245
IQNdiv.asm $ASM$ 0x0000002f 245
IQNdiv.asm $ASM$ 0x00000030 245
IQNdiv.asm $ASM$ 0x00000031 245
IQNdiv.asm $ASM$ 0x00000032 245
IQNdiv.asm $ASM$ 0x00000034 245
IQNdiv.asm $ASM$ 0x00000036 245
IQNdiv.asm $ASM$ 0x00000038 245
IQNdiv.asm $ASM$ 0x0000003a 245
IQNdiv.asm $ASM$ 0x0000003c 245
IQNdiv.asm $ASM$ 0x0000003e 245
IQNdiv.asm $ASM$ 0x0000003f 245
IQNdiv.asm $ASM$ 0x00000040 245
IQNdiv.asm $ASM$ 0x00000041 245
IQNdiv.asm $ASM$ 0x00000043 245
IQNdiv.asm $ASM$ 0x00000045 245
IQNdiv.asm $ASM$ 0x00000046 245
Symbol Table
id name value kind section binding type
-- ---- ----- ---- ------- ------- ----
0 IQNdiv.asm 0x00000000 debug N/A local file
1 $10 0x00000041 defined IQmath local none
2 $ASM$ 0x00000000 defined IQmath local object
4 .bf 0x00000000 defined IQmath local object
6 .ef 0x00000047 defined IQmath local object
8 .text 0x00000000 defined .text local section
10 .data 0x00000000 defined .data local section
12 .bss 0x00000000 defined .bss local section
14 IQmath 0x00000000 defined IQmath local section
16 __IQ15div 0x00000000 defined IQmath global object
17 _IQdivTable 0x00000000 undefined N/A global none
18 _IQdivRoundS... 0x00000000 undefined N/A global none
String Table
offset string
------ ------
4 "IQNdiv.asm"
15 "__IQ15div"
25 "_IQdivTable"
37 "_IQdivRoundSatTable"
I'm gonna take a wild guess, and say that this library needs to be compiled with a more recent code gen tools version? Would ya'll concur?
Trey
The tool version number is missing, but given that the object file was created in 2008, yes, this probably predates the use of build attributes. However, the lack of build attributes won't affect the correctness of the library; you just get a warning, so you don't absolutely need a new copy of the library.
That's what I assumed but this code will be going external and I always like my projects to build for customers with no errors and warnings.
Thanks for the reply!
Trey German
The IQmath library must be built with an older version of the tools. That version does not put the build attribute information in the object files. Thus, the linker diagnostic is correct. The compatibility checks normally performed are skipped over because the build attributes are not present.
Thanks and regards,
-George
Hi,
I'm having the same "problem" with my C2000 project for a 2812 processor after updating to the v6.1.0 compiler: The code works but compiler warns about "build attribute vendor section TI missing in..."
So I downloaded the newest controlSuite and used the IQmath.lib from there - and still get the same warnings. I verified it with the ar2000 and ofd2000 tools and yes, the IQmath.lib from 2012-06-26 still does not have attribute information. Not satisfying...
So when you say that
"The IQmath library must be built with an older version of the tools."
then you really mean that
"the IQmath.lib requires to be built with an older version of the tools",
right?
(Sorry, I'm not a native english speaker, so "must be built ..." first sounded something like "has unfortunately and unnecessarily been built..." to me.)
If this is true this means that we:
The same warning is reported for the Flash2812_API_V210.lib library. That library seems to be missing in the controlSuite for the 2812 processor...
Dirk Osswald said:So when you say that
"The IQmath library must be built with an older version of the tools."
then you really mean that
"the IQmath.lib requires to be built with an older version of the tools",
right?
(Sorry, I'm not a native english speaker, so "must be built ..." first sounded something like "has unfortunately and unnecessarily been built..." to me.)
I understand your confusion. Sorry about that. Let me try again ...
That IQmath library is built with an older version of the tools. This older version of the tools does not put any compatibility information in the object files. Thus, the linker is correct to say it cannot check on possible compatibility issues. Moreover, the IQmath library does not come from the compiler development team, so I cannot say anything about when this issue may be addressed.
Dirk Osswald said:If this is true this means that we:
- Either have to live with the warning for IQmath.lib - and ignore it.
- Or we have to disable the warning for all libraries - with the risk of missing relevant warnings for other libraries. Right?
Dirk Osswald said:The same warning is reported for the Flash2812_API_V210.lib library. That library seems to be missing in the controlSuite for the 2812 processor...
Dear George Mock,
The above conversion say.. we need to Ignore the following error please help me..
http://img827.imageshack.us/img827/3480/rpj3.jpg
Thanks In Advance..
Vureli Naveen
Yes, you can probably ignore it. This wiki article discusses the details.
Thanks and regards,
-George
Dear George,
Thanks for the reply..I have one more doubt about the code generated..I am using the predefined Clark and park transformation.. in my control system developed in Simulink...
when i try to read the code developed by simulink ..i could not see any clark named .h file or .c file in the header files or Cfiles
Texas as provided predefined code in DMC libary...
#include "dmctype.h"
#include "clarke.h"
void clarke_calc(CLARKE *v)
{
v->Alpha = v->As;
v->Beta = (v->As + 2*v->Bs)*0.57735026918963; // 1/sqrt(3) = 0.57735026918963
}
This type of code is not generated by Simulink when i used the predefined block in the embedded coder...how I need to assume now. Is simulink is generating the code for the predefined block or not.
Or I need to link the DMC library to simulink??
Thank you..
Vureli naveen
I have no expertise that is helpful here. In fact, I know so little about this code that I cannot even direct you on where to go next. This is code from TI? If you downloaded it from some ti.com web page, does that page say where to go for support?
Thanks and regards,
-George