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/TM4C129ENCPDT: tiobj2bin.bat在使用GNU GCC时在armofd / armhex上失败

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/600933/ccs-tm4c129encpdt-tiobj2bin-bat-failed-on-armofd-armhex-when-using-gnu-gcc

零件号:TM4C129ENCPDT

工具/软件:Code Composer Studio

在成功的编译和链接结束时,我收到tiobj2bin.bat在以下维客页面描述的armofd / armhex问题上失败: processors.wiki.ti.com/.../Tiobj2bin_Failed

到目前为止,此Wiki网页描述了什么是tiobj2bin.bat,它做什么,为什么要这样做,然后突然以"因此,很难说出目前如何无法找到它们。 同样,很难说如何解决问题。 希望此处提供的解释将在跟踪根本原因方面有所帮助。"

嗯...

编译和链接后,输出内容包括:

"C:/ti/ccsv7/utils/tiobj2bin/tiobj2bin""SyncTest.ut""SyncTest.bin""C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/armof""C:/ti/ccsv7/bin/xtran/5cm/ne"编译器
tiobj2bin.bat在C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/armofd上失败
请访问 processors.wiki.ti.com/.../Tiobj2bin_Failed
tiobj2bin.bat在C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/armhex上失败
请访问 processors.wiki.ti.com/.../Tiobj2bin_Failed
出现C:/ti/ccsv7/utils/tiobj2bin/mkhex4bin故障。 放弃。
''
'c:\ti\ccsv7\tools\compiler\gcc-arm-none-eabi-4_9-2015q3\bin\ofd470'未被识别为内部或外部命令,
可操作程序或批处理文件。
文件不存在:在XML_TI_OFD.pm第877行。

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

经过一些调查后,我已经弄清楚了为什么我的特定系统会发生这种情况:

我正在运行CCSv7版本7.1 .0.0.0016万 ,其中包含多个工具链,包括ti-CGT-arm_CCSv.3.LTS 16.9 和gcc-arm-none-eabi-4_9-2015q3。

我的项目最初是在CCSv6的某些版本中创建的,TI编译器是在项目创建过程中选定的。

选中原始调试或发布构建配置后,在项目属性->构建下,第三个选项卡称为步骤。 在此处配置了构建后步骤:

"${cce_install_root}/utils/tiobj2bin/tiobj2bin""${BuildArtifactFileName}""${BuildArtifactFileBaseName}.bin""${CG_tool_root}/bin/armofd""${CG_tool_root}/bin/armhex"

我假定此构建后步骤是在创建项目时创建的。

随后(我不记得是在升级到CCSv7之前还是之后),我按照以下Wiki页面的指示将通过GCC编译添加到项目: processors.wiki.ti.com/.../Using_GCC_with_Tiva_in_CCSv6

添加GCC的过程将创建新的构建配置,因此如果您从调试开始,它将创建Debug__GNU,并且不会影响调试。

上述构建后步骤仍在Debug__GNU中进行配置。

使用TI (调试或发布)进行编译时,一切都正常。

使用GCC (Debug__gnu)编译时,一切都正常,但tiobj2bin失败。 为什么? 因为,上面显示的生成后步骤使用路径变量CG_TOOL_ROOT (在项目属性->链接资源下定义)。 显然,此变量的值会根据所选的版本配置(以及编译器)而变化。 选择gcc时,该变量将被扩展,使其最终尝试调用GCC bin目录(C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/)下的armhex和armhex,并且那里没有此类程序。 (TI编译器的bin目录下有此类程序。 但不在GCC的bin目录下。)

现在,这就引出了一个问题,在GNU下,要将.out转换为.bin,需要什么命令?

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

    您对问题的解释是正确的。 构建后步骤将从原始的调试配置复制到Debug__GNU配置,但是,CG_TOOL_ROOT宏现在指向GCC编译器目录,该目录不包含armofd和armhex可执行文件。

    有几种方法可以解决此问题并使用GNU将.out转换为.bin:

    1)编辑构建后步骤-将cg_tool_root宏更改为到TI编译器bin目录的硬编码路径,以便它仍然可以使用tiobj2bin进行转换,或

    2)删除构建后步骤,而使用GNU工具的objcopy实用程序将.out转换为二进制文件。 您可以通过GUI进入“项目属性”->“生成”->“GNU objcopy实用程序”来执行此操作。 启用该实用程序,然后将选项设置为转换为二进制。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的详细回复。 这是一个好消息。 它可以很好地集成到GUI中,而无需手动配置构建后步骤。

    由于来自tiobj2bin.bat的诊断消息将用户指向上面提到的TI Wiki网页,是否还可以使用此信息更新该网页? 我假设只有TI员工可以更新wiki。 这就是本页: processors.wiki.ti.com/.../Tiobj2bin_Failed
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的反馈。 该Wiki网页已更新了上述信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢。 Wiki上的解释非常清楚,肯定会帮助其他遇到此诊断的人。