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.

[参考译文] TM4C1294NCPDT:TI Clang v1.3.0LTS ELF 输出 CAN't 组合-绝对(-a)和-可重定位(-r)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1079494/tm4c1294ncpdt-ti-clang-v1-3-0lts-elf-output-can-t-combine---absolute--a-and---relocatable--r

部件号:TM4C1294NCPDT

我正在尝试 将一组项目从 CCS 7.4.0和 TI v5.2.9迁移到 CCS 11.1.0和 TI Clang v1.3.0LTS。

新工具链仅提供 ELF 输出格式,而项目子集的构建失败,原因是:“生成 ELF 输出文件时不支持合并选项--Absolute (-a)和--relocatable (-r)。”

假设 允许组合绝对和可重定位选项,是否有方法获得 COFF 输出?

如果没有,是否可以生成绝对和可重定位的 bin 文件?  工具文档中提到了一个“-ar”选项,但似乎没有按预期工作。

背景:

这套项目包括一个应用程序(构建 更方便) 和几个“驱动程序”(至少使用 TI v5.2.9工具),它们需要 绝对 和可重定位标志。  这允许驱动 程序在运行时加载到闪存中,并(在重新启动后)由应用程序通过位于驱动程序基本地址的派单表访问。

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

    约翰:

    我将把这件事发送给 CCS 团队,以帮助处理一些格式设置方面的问题,但我想提一下,作为这个过程的一部分,您可能需要做的事情可能是重新编译我们在第4.2节中介绍了如何操作的蒂瓦尔库 我们的《蒂瓦韦尔用户指南》 :https://www.ti.com/lit/pdf/spmu373

    此致,

    拉尔夫·雅各比

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

    你好,拉尔夫,

    很抱歉在错误的论坛上发布了消息,并感谢他们的指导!

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="489358" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1079494/tm4c1294nct-ti-clang-v1-3-0lts-ff-output-can-t-combers-ter--trabus-abus-ter-trabus-quot-[-和 quot-a-trabout-trabout-],并可引用绝对输出内容-和以下内容-和内容]

    不幸的是,没有

    [引用 userid="489358" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1079494/tm4c1294nct-ti-clang-v1-3-0lts-elf-output-can-t-combers-forum-forum-/1094nc94nc94pdf-ncpncp-nt-t-绝对和可重新定位的文件,且可重新定位且可重新生成绝对的数据文件?]

    不幸的是,没有

    [引用 userid="489358" url="~ë/support/icls/arm-based 微处理器-组/基于 ARM 的微控制器/f/arm-based 微控制器- forum/1079494/tm4c1294nct-ti-clang-v1-3-0lts-elf-output-can-t-组合-至少  包含在应用程序和  应用程序中的可定位标记。]5.2.  这允许在运行时将驱动程序加载到闪存中,并 (在重新引导后)由应用程序通过位于驱动程序基本地址的派单表访问驱动程序。[/quot]

    这是组织计划的一种不同寻常的方式。  我不记得以前曾看到过这种情况。  我想不出一种处理 ELF 对象文件的方法。  elf 是 tiarmclang 支持的唯一对象文件格式。

    相反,请考虑将每个驱动程序的代码用作静态库。  主应用程序调用每个驱动程序/库中的函数,就像调用其他函数一样。  不需要派单表。  主应用程序链接到这些库。  这意味着对驱动程序/库中的函数进入内存的位置的决定会造成延迟。  在您的旧版本中,当驱动程序链接时,就会做出这一决定。  现在,当整个应用程序链接在一起时,就会做出决定。

    如果此建议可以解决问题,请告诉我。

    谢谢,此致,

    乔治

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

    你好,乔治,

    感谢您的回复,但我担心这没有帮助。

    主应用程序永远不会与驱动程序相关联。  在运行时,最多可以将四个驱动程序加载到专用闪存块中,主 应用程序可以通过指向定义驱动程序接口的已知功能位置的指针访问驱动程序功能。  整个问题是将驱动程序与主应用程序分离,以便 a)客户可以加载驱动程序而不会影响主应用程序,b)主应用程序和驱动程序的开发不会绑定在一起。

    理想情况 下,使用 TI v20.2.5LTS 是一个选项,但我相信,在我们仍在使用的驱动程序编译器版本(TI v5.2.9)为最新版本后,需要构建的驱动程序所需的设置(或者可能是绝对和可重定位的组合)中的一个已过时。

    目前我们可以继续使用 TI v5.2.9,但如果使用最新的工具无法实现当前的驱动程序方案,这将对应用程序和驱动程序实施的产品产生严重影响。  

    我非常想了解一下您或其他人对如何使用新工具链完成此计划的想法。  如果目前的实施能有所帮助,我很乐意提供更多的细节。

    谢谢,

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="489358" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1079494/tm4c1294nct-ti-clang-v1-3-0lts-elf-output-can-t-组合器- forum-4c1294ncncncp-绝对和可加载到四个驱动器架399r'-#65r'-ue-up 和4个可加载驱动器中]

    这种负载在闪存中的确切时间是什么时候?  系统开始运行后?   

    谢谢,此致,

    乔治

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

    你好,乔治,

    驱动程序加载可在系统完成启动后随时进行,并由主应用程序和专用 Windows 实用程序管理。  加载驱动程序后,驱动程序将一直保留在闪存中,直至被更换。

    当主板首次编程时,每个专用闪存块中都会加载一个“基本”驱动程序。  基本驱动程序实现所有必需的接口功能,但它们只会立即返回。  这只是为了防止主应用程序调用随机指针。

    谢谢,如果有更多问题,请告诉我,  

    约翰

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

    我不完全理解您的系统。  但有几点是明确的。  它相当复杂,要使其与 ELF 对象文件配合使用,可能需要进行重大更改。

    以下是一些相关文档。  文章 “TI 对象文件格式简史 ”是开始了解 ELF 的好地方。  有关详细信息,请参阅 《TIARCLang 编译器用户手册 》的 “对象模块简介 ”以及 “程序加载和运行”一章。

    谢谢,此致,

    乔治