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.

[参考译文] TMS320F280025C:仅生成可执行数据来生成.bin 映像文件

Guru**** 2394305 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1295656/tms320f280025c-generating-bin-image-file-with-only-executable-data

器件型号:TMS320F280025C

大家好、

我正在尝试生成一个程序的.bin 映像文件、该程序可由引导加载程序进行串行下载、并使用闪存 API 编程到闪存中。 为此、镜像文件必须仅包含需要在存储器扇区中写入的数据、这一点至关重要。 我可以使用十六进制实用程序工具生成应用程序的.bin 文件、但.bin 文件的大小达到28KB、而应用程序在 ROM 中仅使用13KB。 我假设出现这种情况是因为生成的.bin 文件还包含调试信息和其他不需要的信息。 我能够找到几种方法来解决这个问题...

1) 1)在十六进制实用程序工具中使用-image 选项、但它需要在其链接器命令文件中包含 ROM 指令。

2)使用符号去除实用程序工具 strip2000直接从目标文件中删除符号表和调试信息。

请建议如何处理此问题、或者是否有任何其他方法可获取所需输出。

谢谢。

马赫什

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

    您好!

    我已将此主题提请编译器专家注意。  请注意,由于当地假日,回复时间可能会推迟。

    谢谢

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

    原始二进制文件不会有任何符号、重定位信息或调试信息;它严格属于应用程序段的内容-内存转储。  有关原始二进制文件的更多信息、请参阅此链接

    您的原始二进制文件可能会填充空穴、从而增大大小。  另外、您将如何构建您的应用? 您是否打开了有利于减小代码大小的编译器优化?

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

    您好、Alan!

    感谢您的答复。  

    您是否启用了有利于减小代码大小的编译器优化?

    否、我尚未对代码大小进行任何优化。 虽然在挖掘后,我找到了一个解决问题的方法。 如前所述:

    Unknown 说:
    1)在十六进制实用程序工具中使用-image 选项、但它需要在链接器命令文件中包含 ROM 指令。

    我使用了十六进制实用程序工具并选择了-image 选项。 这需要在工程外部创建定制 ROM 指令.cmd 文件(以便不会与链接器命令文件混淆)、它指定我需要转换为.bin 格式的器件存储器的起始地址和数据长度。

    ROMS 
    {
        all_mem: o = 0x85000, l = 0x036C3
    }
    //Here o = [Starting address], l = [length]
    //In my case, reads memory from 0x85000 to 0x886C3

    要使用此 ROM 指令、我们需要在项目属性的"Hex Utility"工具选项卡下将文件名添加到命令行模式中。

    "${command}${flags}${output_FLAG}${output}${inputs}C:\...\ROMcommand.cmd"

    这种方法的唯一缺点是每次更新应用程序时都必须首先检查应用程序的 ROM 使用情况并更改 ROM 指令。 这只为我提供了我需要的可执行数据、因此我甚至不需要担心.bin 文件中的漏洞。 向将来面临此问题的其他用户共享此信息。

    尽管此问题已经得到解决、但我想进一步了解您之前提到的优化:

    优化代码大小的编译器

    最好能为我提供一个链接、以便访问相同的相关文档。

    谢谢。此致、

    马赫什

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

    好的--请在 C28x 编译器手册 中搜索标题为"调用优化"和"控制代码大小与速度"的子章节