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.

[参考译文] TMS570LS0232:从 CC studio 生成的二进制文件中删除零填充

Guru**** 2425370 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1541750/tms570ls0232-remove-zero-fill-from-binary-file-generated-by-cc-studio

器件型号:TMS570LS0232


工具/软件:

使用 CC 进行构建时、是否可以删除二进制文件中的 0x00 填充?

 我们的闪存部分只被部分归档,但它填充了部分的其余部分零,这大大增加了闪烁时间。


     Name            使用的原点长度   未使用的  attr  填充
----------------------------  -----  -----  -----  -----   ---------------

 FLASH0         00021500  0013eb00 000c69f2 0007810e R X

有没有方法可以防止 CC 用零填充存储器、或者我是否必须使 FLASH0 段变小?

谢谢、

Quentin。

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

    我曾尝试缩小 FLASH0、但它仍然用 0x00 填充。

    我尝试了最后使用 ARM 十六进制实用程序并使用--fill 0xFF 命令、但它仍然放置 0x00。

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

    尊敬的 Quentin:

    是否在链接器 cmd 文件中使用“fill":“:

    如果您使用的是 vfill、请尝试使用 vfill 而不是 fill:

    (+) TMS570LS3137:ECC 问题、vFill 与填充问题 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    fill 将为整个闪存生成具有 0xFFFFFFFF 所有未使用数据字的映像、因此这会大量增加二进制大小。

    --
    此致、
    Jagadish。

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

    我根本不使用 fill(请查看下面的 FLASH0)。 我已经将长度减小到映像的大小附近、但它仍然用.hex 中的 0x00 填充闪存的其余部分

    移动数据

      start_marker (RX):origin = 0x0001FFF0 长度= 0x00000010
      矢量   (X) :origin = 0x00020000 length = 0x00000020
      PART_NUMBER (RX) :origin = 0x00020020 length = 0x00000060
      FLASH_API   (RX):origin = 0x00020080 length = 0x00001480
      FLASH0    (RX):origin = 0x00021500 length = 0x000D0000
      FLASH1    (RX):origin = 0x00180000 length = 0x0001FFF0
      end_marker   (RX):origin = 0x0019FFF0 长度= 0x00000010
      栈    (RW):origin = 0x08000000 length = 0x00002000
      RAM      (RW):origin = 0x08002000 length = 0x0002D000
    }

    我想我可以编写一个脚本来从十六进制中删除这些空扇区、但我原本希望这个扇区可以作为一个构建选项来完成。

    此外、我已关闭 ECC、将尝试在链接器中使用 vfill 选项。

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

    尊敬的 Quentin:

    您是否有机会将以下选项保留为“是“?

    --
    此致、
    Jagadish。

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

    未选中它。 我已经尝试了所有上述选项关闭,它仍然做到了!

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

    是否可以与我们分享您的项目? 您也可以与私人聊天分享它。 因为我可以快速验证所有设置并看到问题活跃。

    如果是机密信息、我们可以尝试其他方法。

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

    我无法发送项目。 我可以发送具有所有设置的.cproject 文件。

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

    删除它、因为它没有用。

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

    尊敬的  Quentin:

    我们在以下常见问题解答中有几个示例、没有一个示例在闪存的空位置填充了全零。 因此、我建议您引用一次它们、尤其是引用它们的链接器文件和工程属性。

    (+)【常见问题解答】TMS570LC4357:适用于 Hercules 控制器的示例和演示(例如 TMS570x、RM57x 和 RM46x 等)-基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    --
    此致、
    Jagadish。

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

    非常感谢这一点。 我能够比较设置、它们将与我的工程相匹配。

    我发现了与构建选项完全无关的罪魁祸首... 我继承了这个代码;结果决定在闪存的末尾写一个标记。

    #pragma location (application_end_marker、0x0019FFFC)
    const uint8_t application_end_marker[4]={0xAA、0x55、0xAA、0x55};

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

    做得很好!