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.
工具/软件: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 的经验)。
非常感谢您对这些实用程序的任何更新或可行的解决方法。
此致
[引用用户="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 创建的目标文件中的详细信息。 我在一个小例子上做了这个实验,我没有发现任何问题。
谢谢、此致、
乔治