【问题标题】:How do we align the output generated by IAR Embedded Workbench for ARM to 4 bytes automatically?我们如何将 IAR Embedded Workbench for ARM 生成的输出自动对齐到 4 个字节?
【发布时间】:2022-12-14 12:36:33
【问题描述】:

我试图让输出 .hex 文件在每次生成时自动对齐到 4 个字节。 使用 ielftool 需要我执行额外的手动步骤来计算我要添加的字节数,因此它没有用。 此外,将填充设置为最大文件大小可以解决此问题,但这意味着即使实际二进制文件非常小(即 5KB),我们也必须下载整个大小(即 256KB)。

【问题讨论】:

  • 请澄清:问题出在二进制文件的开头还是结尾?
  • 问题出在文件的末尾,如果可以的话。我想让它在 4 字节的倍数位置结束。
  • 内存填充允许您设置填充的结束地址。作为解决方法,您可以将其设置为合理的上限,例如 8kB 或最近的闪存扇区末端。
  • 此外,您可以使用项目后生成功能在编译结束时自动调用脚本以执行多个 ielftool 命令。在过去的项目中,我使用自定义 Python 脚本来做到这一点。
  • 你是对的,这就是我现在正在做的,但这些选项要求我将最终二进制文件的大小设置为一个固定值。我想要的是无论编译代码大小是多少(不固定),但最后仍然设置一个小填充(如果需要),以便它始终对齐。

标签: arm hex alignment iar dword


【解决方案1】:

可以使用 end alignment 为链接器配置定义一个块。

一个“.icf”库存配置可以是:

place in FLASH_region { readonly };

建议的通用解决方案,基于库存配置:

define block ROBLOCK with alignment = 4, end alignment = 4 { readonly };
place in FLASH_region { block ROBLOCK };

使用带有末端对齐的块应该随着应用程序的增长而动态调整。

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 2018-03-08
    • 2011-02-25
    • 2012-06-09
    • 2013-06-21
    • 1970-01-01
    • 2012-08-18
    • 2013-10-20
    相关资源
    最近更新 更多