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:c29objcopy -生成二进制(-O 二进制)时填充

Guru**** 2460850 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504381/f29h850tu-c29objcopy---padding-when-producing-binary--o-binary

器件型号:F29H850TU

工具/软件:

您好 TI 专家、

您能否详细介绍如何在 c29objcopy 中实现填充? 根据我可以收集的信息、二进制映像有时会用0x00填充、而其他时间则用0xFF 填充。

提前感谢您、

节拍

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

    您好:

    我已提请编译器专家注意此主题。 请注意,由于当地假日的原因,可能会被取消回复。

    谢谢

    Ki

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

    我将您的帖子分为两个单独的问题。

    1. 发生填充的原因是什么?
    2. 当填充发生时、 它是 用什么填充的?

    对于#1、请参阅文章 二进制文件简介。  重点关注名为 Holes in a Binary File (二进制文件中的孔)的部件。   

    对于#2、默认值为0。  使用选项将默认值更改为0xff -- gap-fill=0xff

    谢谢。此致、

    -乔治

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

    您好、George、

    非常感谢您的答复。 我不知道  -- gap-fill=0xff  选项。 很高兴知道它存在。

    但是、似乎还有更多的事情要做。

    我使用 TI"led_ex1_blinky"工程运行了两项测试、一项具有 RAM 链接、另一项用于闪存链接。

    在为 RAM 进行链接时 --盖填充 确实有效果、默认值为0x00、正如您所写的:

    ${CG_TOOL_objcopy}-O 二进制文件${ProjName}.out ${ProjName}.bin
    ${CG_TOOL_objcopy}-O 二进制文件--GAP-Fill=0x00 ${ProjName}.out ${ProjName}_00.bin
    ${CG_TOOL_objcopy}-O 二进制文件-gap-fill=0xff ${ProjName}.out ${ProjName}_FF.bin

    md5 led_ex1_blinky*.bin
    MD5 (led_ex1_blinky.bin)= 579bc756d35ab23f6f1f9ae9a6376c34
    MD5 (led_ex1_blinky_00.bin)= 579bc756d35ab23f6f1f9ae9a6376c34
    MD5 (led_ex1_blinky_FF.bin)= eaeef27043a84d3de6b0037798a80892

    但是、在为 闪存进行链接时、 --盖填充 无效、默认值为0xFF:

    ${CG_TOOL_objcopy}--remove-section=cert -O binary ${ProjName}.out ${ProjName}.bin
    ${CG_TOOL_objcopy}--remove-section=cert -O binary --gap-fill=0x00 ${ProjName}.out ${ProjName}_00.bin
    ${CG_TOOL_objcopy}--remove-section=cert -O binary --gap-fill=0xff ${ProjName}.out ${ProjName}_FF.bin

    md5 led_ex1_blinky*.bin
    MD5 (led_ex1_blinky.bin)= 760801c0ecf598965b546cabc8ed040b
    MD5 (led_ex1_blinky_00.bin)= 760801c0ecf598965b546cabc8ed040b
    MD5 (led_ex1_blinky_f.bin)= 760801c0ecf598965b546cabc8ed040b

    这是预期行为吗?

    再次感谢大家、此致

    节拍

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

    在为 RAM 构建时、二进制文件中没有间隙、即没有需要填充的内容。  这有道理吗?  如果没有、请输入 .out 该 zip 文件、并 该 zip 附加到下一篇文章中。

    谢谢。此致、

    -乔治

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

    你好乔治-我刚刚意识到上面的一个拼写错误,现在修正了,造成了混淆。

    我写的是"但是、在链接 闪存时、 --盖填充 无效、默认值为0xFF"。

    你是绝对正确的这个图像没有任何间隙来填补,因此他们有相同的校验和!

    这一切都很合理、感谢您的帮助。

    节拍