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.

[参考译文] TM4C129EKCPDT:合并应用程序和引导加载程序代码的 bin 文件。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1111442/tm4c129ekcpdt-merge-bin-files-for-application-and-bootloader-code

器件型号:TM4C129EKCPDT

大家好、团队、

我正在尝试将应用程序代码和引导加载程序代码的 bin 文件合并到一个 bin 文件中。 我尝试使用"HxD 十六进制编辑器"进行合并、但问题是无法在引导加载程序和应用程序代码之间添加任何偏移。  

我们的引导加载程序代码从0x0000开始,应用 程序的偏移量为0x4000,是否有一个工具可以用来与偏移量合并?

 

在我所访问的论坛中、我遇到 了下面附加的"ARM 汇编语言工具"链接、

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/987775/combine-application-and-bootloader-bin-files-into-one-single-bin-file

但我无法理解执行该操作的过程。 在我不熟悉 TI 软件系列时、您能为我提供帮助吗?  

此致、

Jayesh

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

    您好、Charles、

    在第一个帖子中、我觉得我需要安装 Arm 装配工具。  

    但我以前从未使用过此工具、您能否分享任何可帮助我了解此工具的文档。 这是我需要在 CCS 上添加的插件、还是使用命令提示符来访问所有命令。  

    此致、

    Jayesh

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

    您好!

     所有 ARM 工具均可在相应的 CCS 安装中找到。 请参阅下面的示例。 您可能具有与我的 CCS 不同的版本和编译器版本。 有关  命令的详细信息、请转至 TI Arm 汇编器用户指南 www.ti.com/.../SPNU118U 中的第12.2节。 您可以在命令行上调用 armhex。  

      

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

    您好、Charles、  

    感谢您的快速回答、我介绍了您建议的文档。  

    当我转到各自的 CCS 安装时、我只会在编译器中看到以下选项、  

    当我进一步进入 arm_5.1.6文件夹并尝试执行合并命令时、我遇到以下错误、  

    因此、我尝试转到 c2000_6.2.7文件夹、但它无法识别我的 armhex 命令、如下所示、

    注意:我还尝试为 以下链接安装代码 ARM 代码生成安装程序、但不幸运、

    https://www.ti.com/tool/download/ARM-CGT/20.2.6.LTS

    我不确定我在这里缺少什么。

    此致、

    Jayesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="491707" URL"~/support/microcontrollers/arm-based microcontrollers-group/arm-based microcontrollers/f/arm-based microcontrollers-forum/1111442/tm4c129ekcpdt-merge-bin-file-for-application-and-bootloader-code"]我正在尝试合并应用程序代码库和代码库中的代码库文件以合并我们的代码库和应用程序代码库[

    当您说"bin file"时、我假设您是指二进制文件 、如文章《二进制文件简介》中所述。  我认为可以以某种方式组合2个 bin 文件、但我不知道有什么工具或方法可以这样做。   

    我建议您返回到用于创建 bin 文件的可执行文件。  这些文件是由链接器创建的最终输出。  它们通常具有文件扩展名.out。  可以将可执行文件组合在一起、然后从该组合可执行文件创建二进制文件。

    ARM 编译器工具版本5.1.6大约已使用8年。  使用更最新的工具(如版本20.2.6.LTS)是否实用?  组合可执行文件的方法不适用于旧工具。

    谢谢、此致、

    乔治

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

    您好、George、

    我需要为现有项目使用 CCS 版本6,但是否有方法可以将 ARM 编译器工具更新为最新版本(20.2.6) 并使用它?

    当前 我仅尝试合并.out 文件、稍后将转换为.bin 文件类型。  

    此致、

    Jayesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="491707" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1111442/tm4c129ekcpdt-merge-bine-file-for-application-and-bootloader-code/4120402#4120402" 引用 ARM/20.2"]其中可以使用最新的方法和引用.20.2[.iprine-compiler 方法来更新 arm.20.2"](引用)

    我必须告诉您、CCSv6没有使用 TI ARM 编译器版本20.2.6.LTS 进行测试。  尽管如此、许多客户也同样将较新的编译器与较旧的 CCS 结合在一起、没有问题。  有关该过程的详细信息、请参阅文章 更新编译器。

    谢谢、此致、

    乔治

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

    您好、George、  

    我在 另一台笔记本电脑上安装了最新版本的 CCS11、并尝试了"./armhex boot.out app.out --load_image -o jpmerge.out"命令、但我在下图中收到错误、

    当我尝试转到下图所示的"ti-cgt-C2000_21.6.0.LTS "文件夹时、我出错、请在下面找到两张图片、  

    我是否输入了错误的命令?

    此致、

    Jayesh

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

    根据主题标题、您使用的是具有所有 ARM CPU 内核的 TM4C 器件。  但您的 app.out 文件用于 C28x CPU 内核。  这不是预期的。  您使用什么器件?

    谢谢、此致、

    乔治

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

    您好、George、

    实际上、我使用的应用程序输出文件不正确。 很抱歉、但当我使用正确的 app.out 文件时、我能够成功创建 merge.out 文件。

    我还尝试将新创建的 merge.out 文件刷写到我们的器件中、它工作正常。

    现在,一旦创建了 merge.out 文件,我应该使用哪些命令将其转换为二进制(.bin)文件?

    谢谢、

    Jayesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="491707" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1111442/tm4c129ekcpdt-merge-bine-file-for-application-and-bootloader-code/4121664#41264#.bin]命令将二进制文件转换为什么(?)。

    您现在如何创建二进制文件?  它的工作方式应该相同。

    谢谢、此致、

    乔治

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

    您好、George、

    [引用 userid="4373 " URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1111442/tm4c129ekcpdt-merge-bine-file-for-application-and-bootloader-code/4121790#4121790]应该采用相同的方法[引用/引用]。

    我不明白你想说什么。  

    我需要将.out 文件转换为.bin 文件,您能不能建议使用哪种方法?

    我希望此新创建的 merge.out 文件具有.bin 文件类型的原因是我们的第三方应用程序使用二进制文件进行固件升级。

    谢谢、

    Jayesh

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

    Jayesh、

    George 今天外出了、但他很可能会假设您已经有一种方法可以转换为.bin、正如在最初的帖子中所提到的、您正在尝试合并二进制文件。  许多 TM4C 示例将使用 tiobj2bin 从.out 文件创建二进制文件。  示例工程将具有如下所示的编译后处理步骤:  

    "${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin""${BuildArtiftFileName}""${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/armutilfd""${CG_TOOL_TOOL_ROOT}/hex4intry"}/cce_root/hex/hex4bin

    基本上、它会传递.out 文件、要创建的.bin 的名称以及 armofd armhex 和 mkhex4bin 实用程序的位置。

    此致、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="3175" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1111442/tm4c129ekcpdt-merge-bin-file-for-application-and-bootloader-code/4123230#4123230]、但假设您已经引用了.bin/simme-files/convert 方法、但您可能已经在转换.bin]

    John、

    当我编译 CCS6项目以及.out 和.hex 文件时、会创建我的 bin 文件。 使用 Apllication 和引导加载程序项目文件夹中的.out 文件、我创建 merge.out 文件。 现在、我的最终目标是使用转换后的.out 文件 并生成.bin 文件。 但这里的区别在于、它包含应用程序和引导加载程序代码。 希望这能帮助您了解我想要实现的目标。  

     我需要知道如何使用 tiobj2bin 实用程序将.out 文件转换为.bin。 我在 PC 上的以下位置、

    "C:\ti\ccsv6\utils\tiobj2bin"  

    但不确定该怎么做。 您能帮我解决这个问题吗?

    此致、

    Jayesh

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

    Jayesh、

    如果您要从其所在的文件夹运行 tiobj2bin、则命令如下所示:

    tiobj2bin ".out 文件的路径"要生成的.bin 文件的路径""C:\ti\ccs1120\ccs\tools\compiler\ti-cgt-C2000-21.6.0.LTS \bin\armofd.exe"  "C:\ti\ccs1120\ccs\tools\compiler\ti-cgt-C2000-c2000_21.6 mfd.exe" arm4bin\chexe.bin\chex\arm4bin\arm21.6

    此致、

    John

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

    您好、John、

    此位置"C:\ti\ccsv6\utils\tiobj2bin"中的.bat 文件中包含大量注释和命令。  

    因此、我创建了一个新的.bat 文件、其中包含您在上面提到的文本以及正确的路径、如下所示  

    但是、当我在出现错误后从命令提示符运行该文件时、

     

    您能帮我解决这个问题吗、因为我对这个环境非常了解。  

    注意:JP1.OUT 是我要从上图转换为.bin 的合并输出文件。  

    此致、

    Jayesh  

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

    让我们将讨论恢复到前面的阶段。

    [引用 userid="491707" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1111442/tm4c129ekcpdt-merge-bine-file-for-application-and-bootloader-code/4121664#41264]命令将创建的二进制文件转换为输出文件[?]

    有两种方法需要考虑。

    一个... 此 CCS 中的编译后处理和预编译步骤文档 以 tiobj2bin.bat 为例。  请按照所示的方式使用它。

    两个... 使用实用程序 armobjcopy。  它仅在最新版本的 TI ARM 编译器中可用。  为避免出现 EXT_EP-10558问题 、请使用后面的版本20.2.6.LTS。  请注意、对于使用早期版本的工具创建的可执行文件、可以使用诸如 armobjcopy 之类的实用程序。  使用的命令类似于...

    armobjcopy -O 二进制文件.out file.bin

    谢谢、此致、

    乔治

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

    您好、George、

    我用第二次接近来了,它很感谢。