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.

[参考译文] F29H850TU:C29的输出文件转换工具

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1471652/f29h850tu-output-file-conversion-tool-for-c29

部件号:F29H850TU

工具与软件:

您好!

我需要将.out 文件转换为一个 c 数组。 对于 F28、使用 hex2000时、在尝试转换 F29 .out 文件 hex2000时可能会报告错误:

c29clang 工具链似乎没有任何类似的工具。 有没有遗漏的东西?

提前感谢 Dmitri

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    ]尝试转换 f29 .out 文件 hex2000时报告错误

    C2000编译器工具链未进行文档记录或测试、不能与 C29编译器工具链创建的文件一起使用。

    Unknown 说:
    c29clang 工具链似乎没有任何类似的工具。

    C29工具链不包含十六进制实用程序。

    请考虑另一个解决方案。  此解决方案依赖于编译器的一个特性、该特性称为 #embd. .  以下是有关此功能的一些注意事项:

    • 实验性  
    • α 质量
    • 文档中没有提供
    • 未经测试以及记录的功能

    综上所述、它是解决您的问题的一种极具吸引力的方法。

    第一步是将此文件转换为输出文件...

    Unknown 说:
    我需要将.out 文件转换为一个 c 数组。

    ...二进制文件。  要了解我的术语 进制文件的含义、请参阅文章二进制文件简介。  这篇文章显示 创建二进制文件的命令类似于...

    % c29objcopy -O binary file.out file.bin

    使用 #embd. 将此二进制文件集成到 C 文件的指令...

    /* embed_example.c */
    const unsigned char binary_data[] = {
        #embed "file.bin"
    };

    当你构建这个文件,你得到一个警告诊断...

    % c29clang -c embed_example.c
    embed_example.c:3:6: warning: #embed is a C23 extension [-Wc23-extensions]
        3 |     #embed "file.bin"
          |      ^
    1 warning generated.

    #embd.  C 编程语言的 C23标准中介绍了 Feature。  c29clang 编译器不支持 C23。  但它支持这一功能作为扩展。

    假定 file.bin 是同一个创建在文章 二进制文件简介.  要查看二进制文件中的字节是否已集成、请使用类似于...的命令检查目标文件。

    % c29objdump --full-contents --section=.rodata.binary_data embed_example.o
    
    embed_example.o:        file format elf32-c29
    Contents of section .rodata.binary_data:
     0000 bbbbbbbb bbbbbbbb bbbbbbbb bbbbbbbb  ................
     0010 00000000 00000000 00000000 00000000  ................
     0020 aaaaaaaa aaaaaaaa                    ........

    阵列中 BINARY_DATA 位于名为 .rodata.binary_data .  以了解有关该命令的信息 c29objdump 及其选项、请查看 c29clang 在线文档中的相应页面

    谢谢。此致、

    -George.

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

    感谢您的彻底答复,乔治,将尝试这种方式。