61ic电子在线 首页 技术 嵌入式系统 查看内容

译文: C28x Compiler Error and Warning Messages

2018-1-1 01:38| 发布者: 61ic| 查看: 219| 评论: 0|原作者: XUGONG|来自: XUGONG

摘要: 通常,知道错误和警告的产生以及常见错误的来源是很有帮助的。本文包含错误列表、警告和备注以及常见错误列表及其解决方案。
C28x Compiler Error and Warning Messages 


引言 
通常,知道错误和警告的产生以及常见错误的来源是很有帮助的。本文包含错误列表、警告和备注以及常见错误列表及其解决方案。 
常见错误及警告 
Warning: build attribute vendor section TI missing in “ : compatibility cannot be determined 
这个库是用一个旧工具编译的,而不是它正在链接到的应用程序。旧工具没有定义这个属性。编译属性已经存在相当长的时间了,所以这个警告是个例外。以前,这些工具定义没有编译属性的文件为0值,但是这是不正确的。他们现在被视为兼容一切,但警告用户,他们是专属的。 
例如: 
• IQmath库是由旧的编译器编译但与目前的编译器兼容。 
• Flash API,它是由于测试而使用较旧的编译器构建的。 
• SFO库被用于HRPWM模式。 
注意: 消除警告的方法是:使用链接器选项( linker option )– diag_suppress = 16002放置在连接命令文件中。 
fatal error:file…rts2800_fpu32.lib “boot.obj” specifies ISA revision “C28FPU32”,which is not compatible with ISA revison “C2800” specified in a previous file or on the command line.
这是一个non-FPU32工程文件试图通过–float_support=FPU32链接源码编译。在这种情况下,RTS库将使用– float_support = fpu32编译。相反,这可能是另一个库或项目源文件。 
• 检查每个库,确保每个库使用-v28 – float_support = FPU32编译。 
• 确保每个.c文件使用-v28 – float_support = FPU32编译。(在CCS中,可以将其设置为全局编译选项或每个文件编译选项)。 
如果项目不是C28x + FPU芯片,RTS库应改为non FPU32版本。有关运行时支持库的信息参见C28x Code Generation Tips and Tricks Wiki Article 。 
这两个不能链接,因为浮点数的调用约定不同。如果是定点芯片,那么“浮点数”就会在栈上传递。如果是浮点芯片,那么“浮点数”会在FPU寄存器上传递。 
Warning: entry-point symbol other than “_c_int00” specified: “code_start” 
这个警告很好,可以忽略。它只是告诉你,该程序的入口点设置为code_start代替默认的_c_int00。 TI提供的其他外围示例也将生成此警告。 
Error: unresolved symbols remain…. 
它的意思是源代码中的某个地方已经使用了符号,但是链接器无法找到它的创建位置。例如, 如果你的代码声明了c = IQdiv(a,b);但是 IQmath 库 没有包含在项目里面, 符号 IQdiv 将被标记为未定义。 
其中包括这里写图片描述符号(例如:FD 这里写图片描述 mpy或FD 这里写图片描述TOL)可能来自运行时支持库。有关运行时支持库的信息参见C28x Code Generation Tips and Tricks Wiki Article。 
Error: Tag_ISA attribute value of “2” that is different than one previously seen (“1”); combining incompatible files 
工具在抱怨不匹配的 “Tag_ISA”值,这意味着有不匹配的ISA版本。“1” 是C27x,“2”是C28x,所以这个测试的情况下,混合C27x和C28x对象文件。将来的版本将使用“C2700”和“C2800”代替“1”和“2”错误消息。 
确保所有文件都用-v28编译以避免这个错误。 
Error: Tag_Memory_Model attribute value of “1” that is different than one previously seen (“2”); combining incompatible files 
有些文件或库是用小内存模型编译的,有些是用大内存模型编译的。链接器将不允许您通过不同内存模型进行组合文件的链接。 
对于C2000,TI提供的例子推荐使用大内存模型(-ml compiler switch)。 
Error: placement fails for object “csmpasswds” 
这是5.x版编译器/链接器的早期版本中的一个问题。链接器在抱怨page 0和page 1上有同名的段。您可以更改链接文件.CMD中的其中一个段的名称。建议的修复是更新代码生成工具。 
Warning: function declared implicitly 
这不是一个可以忽视的警告。这意味着一个函数没有一个原型,编译器对你传递/返回的值做了一些假设。这个会造成BUG。修正此警告! 
Error: placement fails for object 
这是一个链接器错误,这意味着对象将不适合于内存。这可能是由于数据页(data page)阻塞造成的。了解更多信息请参见C28x Compiler: Understanding Linking Wiki article 。 
Error: placement fails for object “.text 
这是一个链接器错误,意味着没有足够的内存分配代码。了解更多信息请参见C28x Compiler: Understanding Linking Wiki article。 
extern cregister volatile unsigned int IFR; “../include/DSP2802x_Device.h”, line 51: error: omission of explicit type is nonstandard (“int” assumed) 
MISRA规则要求严格按照ANSI模式编译。这意味着使用ANSI标准中没有指定的任何特性都是错误的。在您的情况下,这些表现特点是关键词cregister和interrupt。MISRA规则下实际情况是不能同时使用interrupt和cregister。 
如果你是严格的ANSI /ISO模式编写代码(使用– strict_ansi编译器选项),解决方法是用备用的关键词,__cregister,或__interrupt,或__asm()。 
typedef interrupt void(*PINT)(void); “..\include\DSP2802x_PieVect.h”, line 26: error: omission of explicit type is nonstandard (“int” assumed) 
MISRA规则要求严格按照ANSI模式编译。这意味着使用ANSI标准中没有指定的任何特性都是错误的。在您的情况下,这些表现特点是关键词cregister和interrupt。MISRA规则下实际情况是不能同时使用interrupt和cregister。 
如果你是严格的ANSI /ISO模式编写代码(使用– strict_ansi编译器选项),解决方法是用备用的关键词,__cregister,或__interrupt,或__asm()。
1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

地址 :湖南省株洲市天元区利江花园
合作 Email: administration@61ic.com

  • 关注61ic官方微博
    了解最新动态

  • 关注61ic微信公众号
    这里有好玩的讯息

  • 加入61ic交流群
    不断在这里成长

© 2014-2017 HuNan 湖南索炜达电子科技有限公司 . All rights reserved.
湘公网安备 43020202000020号

Archiver|手机版|小黑屋||湘ICP备13001086号-2 QQ 
返回顶部