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.

[参考译文] 编译器/C6000-CGT:[用于 C6000-CGT 编译器的二进制资源]如何将二进制资源链接到可执行输出文件?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/896903/compiler-c6000-cgt-binary-resource-for-c6000-cgt-compiler-how-to-link-a-binary-resource-into-an-executable-output-file

器件型号:C6000-CGT
主题中讨论的其他器件:TMDSEVM6678

工具/软件:TI C/C++编译器

目标器件 TMDSEVM6678/TMDSEVM6678LE    

大家好、

我已经看到以下链接、了解如何将二进制资源(例如图像或8位数据数组)链接到可执行文件中、但是非常旧。  

我知道我可以使用 ld 命令使用 gcc 链接器来实现这一点... (ld -r -b 二进制-o outfile.o infile.bin)

但我想知道 C6000 TI 编译器(例如8.3.x)中是否有这样的功能

如果您知道这些实用程序,请告诉我... 我只是倾向于不将二进制文件转换为 c 代码、然后进行编译;特别是因为二进制数据对于我的情况来说非常大(140MB)、编译器可能会崩溃(我已经有过 QT MinGW gcc 的经验)。

非常感谢您对这些实用程序的任何更新或可行的解决方法。

此致

https://e2e.ti.com/support/tools/ccs/f/81/t/154409

http://e2e.ti.com/support/tools/ccs/f/81/t/792875?CCS-TMS320DM6437-How-to-import-a-bin-file-as-source-in-CCS-project

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

    [引用用户="Mike ITGeek"]

    我知道我可以使用 ld 命令使用 gcc 链接器来实现这一点... (ld -r -b 二进制-o outfile.o infile.bin)

    但我想知道 C6000 TI 编译器(例如8.3.x)中是否有这样的功能

    [/报价]

    不幸的是、不

    您的帖子中的第二个链接显示了使用 objcopy 将二进制文件更改为 C6000目标文件的方法。  我从未使用过这种方法。  但它看起来值得一试。

    谢谢、此致、

    乔治

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

    这实际上适用于一个小二进制文件、但没关系(我也会测试一个大文件...)

    我还收到了以下警告、我不确定这些警告是什么意思、因为我更喜欢软件开发人员(直到最近、我还没有多少嵌入式编程经验)

    arm-none-eabi-objcopy --alt-machine-code=140 --input-target=binary --output-target=ELF32-lLittle test.bin Debug/test.obj
    arm-none-eabi-objcopy:此目标不支持140个备用机器码
    arm-none-eabi-objcopy:将该数字视为绝对 e_machine 值

    如果您有任何意见、请告诉我。

    此致

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

    底线是,您可以忽略这些诊断...

    [引用 USER="Mike ITGeek">ARM-NONE - eabi-objcopy:此目标不支持140个备用机器代码
    arm-none-eabi-objcopy:将该数字视为绝对 e_machine 值、而不

    objcopy 的最新联机文档 包含以下选项的说明--alt-machine-code ...

    如果输出架构具有备用机器码、请使用索引码而不是默认的索引码。 如果机器被分配了一个正式代码并且工具链采用了新代码、但其他应用仍然依赖于所使用的原始代码、这将非常有用。 对于基于 ELF 的架构、如果索引替代不存在、则该值被视为要存储在 ELF 头文件的 e_machine 字段中的绝对数。

    最后一句适用。  值140存储在输出目标文件头文件的 e_machine 字段中。  要了解正确答案、请参阅 《C6000嵌入式应用二进制接口应用报告》。  搜索 e_machine 以查找以下内容...

    符合此规范的目标文件必须具有值 EM_TI_C6000 (140、0x8c)。

    要进行进一步确认、请使用 c6000实用程序 ofd6x nm6x 转储使用 arm-none-eabi-objcopy 创建的目标文件中的详细信息。  我在一个小例子上做了这个实验,我没有发现任何问题。

    谢谢、此致、

    乔治