This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F5419A:CCS 从 CCS4迁移到 CCS6、CCS7和 CCS8问题

Guru**** 2039030 points
Other Parts Discussed in Thread: MSP430F5419A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/725620/ccs-msp430f5419a-ccs-migration-from-ccs4-to-ccs6-ccs7-ccs8-issue

器件型号:MSP430F5419A

工具/软件:Code Composer Studio

您好!

我一直在尝试将我的旧项目从 CCS4迁移到最新的 CCS6、CCS7和 CCS8、所有这些都显示了此链接错误。 我已经使用 CCS 工作了一段时间、不确定如何解决这个问题。 任何见解都值得赞赏。


"./lnk_msp430f5419a.cmd"、第149行:警告:链接器命令文件没有
TYPE=VECT_INIT 的段、但确实包含.intXX 段。 该文件可能会
过时。 为所有.intXX 段生成中断指针。 。
如果没有其他处理程序、则将使用 RTS 中提供的默认处理程序
找到。 建议您将链接器命令文件更新到
最新版本。
警告:创建不带 SECTIONS 规范的输出段".data"

未定义的首次引用
符号
------ --------
_cinit__/library/autoinit.obj
__PinIT__./library/autoinit.obj

错误:未解析的符号仍然存在
错误:链接期间遇到错误;未构建"ELT_4000.out"

>>编译失败
Makefile:180:目标'ELT_4000.out'的配方失败
Gmake:***[ELT_4000.OUT]错误1
gmake:目标"全部"不会由于错误而重新生成。

****构建完成****

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    阅读有关 该警告诊断的文章。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢您的回复、但这一警告并不是一个主要问题。 问题是以下错误:

    未定义的首次引用
    符号
    ------ --------
    _cinit__/library/autoinit.obj
    __PinIT__./library/autoinit.obj

    错误:未解析的符号仍然存在
    错误:链接期间遇到错误;未构建"ELT_4000.out"

    不管怎样、我通过创建一个新项目(不使用 main.c 的空项目)并手动导入我的文件来解决了这个问题。 移植项目文件中的设置(预定义符号、堆栈、优化级别等)是一件很痛苦的事情、我甚至不确定我是否错过了重要的操作。 这是因为我观察到我使用 CCS8生成的新十六进制文件比原始文件(CCS4)大一点。 希望没有什么大问题。 是否有一种将项目文件从 CCS4移植到更高版本的 CCS 的快速而可靠的方法?

    我将加载代码并对其进行测试。 让我的手指交叉!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="snuk">未定义的首次引用
    符号
    ------ --------
    _cinit__/library/autoinit.obj
    __PinIT__./library/autoinit.obj [/quot]

    我仍然不确定。  但我怀疑您在未意识到这一点的情况下、已从旧的 COFF ABI 更改为 EABI。  这两者之间有许多不同之处。  有关 EABI 的介绍、请参阅 本文。  然后了解 COFF ABI 是较旧版本。   

    您还可以看到自己提供了启动代码的实现。 COFF ABI 和 EABI 之间的启动代码非常不同。  如果这个猜测是正确的、那么最好改为使用 TI RTS 库中提供的启动代码。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我意识到 COFF 格式已更改为 EABI 格式、这是编译器版本15.3.0或更高版本的唯一选项(我使用的是编译器版本18.1.3.LTS 的 CCS8)。 我没有意识到这一变化的全部影响。 正如我在上面提到的、我为解决编译问题所做的是在 CCS8中创建一个没有 main.c 的新裸项目、并复制我的所有源文件和头文件(包括链接器文件上的 main.c 和一些模板)。 它现在可以编译、但您是否预见到这会有问题? 感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="snuk"]在不带 main.c 的 CCS8中创建新的裸项目,并复制了我的所有源文件和头文件(包括链接器文件上的 main.c 和一些模板)[/quot]

    这是最好的方法。  尽管我不建议将链接器命令文件更改为任何人。  并不是很困难。  但它确实需要对链接器命令文件语法具有良好的实用知识。  此外、请确保在 RTS 库中使用编译器附带的启动例程。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    新的链接器文件需要一些用于我的特定项目的模板。 并不是很难、我实际上鼓励人们挖掘并至少理解它。 无论如何、我如何确保正在使用启动例程? 在 CCS8中创建新的裸项目和移植源代码是否已经完成了? 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="snuk"]如何确保正在使用启动例程?[/quot]

    查看映射以确保启动代码来自编译器随附的 RTS 库。  您应该看到类似于...的行

    00005c00 0000001c rts430x_lc_rd_eabi.lib:boot.c.obj (.text:_isr:_c_int00_noargs) 
    00010000 00000076 rts430x_lc_rd_eabi.lib:copy_decompress_lzss.c.obj (.text:decompress:lzss:_TI_decompress_lzss)
    00010076 00000054 :autoinit.c.obj (.text:__TI_auto_init_nobinIT_nopinit_hold_wdt:__TI_auto_init_nobinIT_nopinit_hold_wdt) 

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我可以确认这一点。 感谢您的帮助!