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.

[参考译文] TMS320F2808:来自入口点的启动程序不正确(CODE_START)

Guru**** 2473260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1476408/tms320f2808-incorrect-start-program-from-entry-point-code_start

器件型号:TMS320F2808

工具与软件:

大家好!

我在编译器版本 TI v4.1.3下创建的 CCS 旧程序中进行了修改、该程序运行正确。 当我在较新版本的 TI 编译器(例如 TI v6.4.0或 TI v18.12.1 LTS)下编译该程序时、该程序无法正常运行。 由于存储器中还有引导程序、因此程序从特殊入口点开始。 我比较了通过编译器 TI v4.1.3和 TI v6.4.0创建的映射文件。

我注意到 、在编译器 TI v4.1.3下编译的映射文件中、DSP280x_CodeStartBranch.obj (.text)位于地址上

codestart
* 0 003e8080 00000002
     003e8080 00000002 DSP280x_CodeStartBranch.obj (codestart)


.text 0 003e8082 00008587
       003e8082 00000008 DSP280x_CodeStartBranch.obj (.text)


但在编译器 TI v6.4.0下编译的映射文件中 、DSP280x_CodeStartBranch.obj (.text)位于 address 上

codestart
* 0 003e8080 00000002
     003e8080 00000002 DSP280x_CodeStartBranch.obj

.text 0 003e8082 00008c80
       003f0cf5 00000008 DSP280x_CodeStartBranch.obj (.text)

地址003f0cf5上的 DSP280x_CodeStartBranch.obj (.text)是否正确?
您能给我建议一下我在编译器版本 TI v4.1.3和 TI v6.4.0下编译程序时有什么不同、因为两个编译器都设置了相同的选项(-e)入口点== start_code。

此致

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

    您展示的两个版本之间的差异是合理的。 这是非常不可能导致这个...

    Unknown 说:
    程序不起作用

    请阅读文章 链接器命令文件入门的第一部分。  专注于了解术语...

    • 输入段
    • Output section

    进行保存  DSP280x_CodeStartBranch.obj 贡献两个输入段: codestart .text .  输入部分 codestart 它也是输出段中唯一一个也名为的输入段 codestart .  。 .text 的输入段  DSP280x_CodeStartBranch.obj 将进入名为的较大输出节的一部分 .text .  各个版本之间的区别在于 .text 的输入段  DSP280x_CodeStartBranch.obj 名为的输出段内部的焊盘 .text .  这是一种合理的区别。  仅仅这一个差异不太可能导致程序失败。  编译器工具的底层部分负责所有这些工作、因此在很长一段时间内都是以相同的方式完成的、不会出现任何问题。

    谢谢。此致、

    -George.