TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] CCS/TMS570LS3137:如何为 TMS570LS3137的 UART 引导加载程序创建二进制(.bin)文件

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/872902/ccs-tms570ls3137-how-to-create-a-binary-bin-file-for-uart-bootloader-of-tms570ls3137

器件型号:TMS570LS3137

工具/软件:Code Composer Studio

您好!

我使用的是 Code Composer Studio (CCS) 9.3.0.00012、我想为 UART 引导加载程序创建一个二进制(.bin)文件。
我使用的硬件是 TMS570LS3137 HDK 板、因此我参考有关该 MCU 的 TI 论坛、
以下是 URL: e2e.ti.com/.../402100

我从该论坛下载了 Jean-Marc Mifsud 提供的引导加载程序文件"Data.zip。
"Data.zip"文件包含两个有关 UART 引导加载程序的项目。
项目"boot_uart_TMS570LS3137"是一个引导加载程序项目、
另一个"TMS570LS3137_Blinky_Bootloader"项目是使 TMS570LS3137 HDK 上的 LED 闪烁的项目。
在项目"TMS570LS3137_Blinky_Bootloader"发布目录中有一个名为"TMS570LS3137_Blinky_Bootloader"的二进制文件。
我知道我可以通过 Hyperterminal 将此应用程序映像(二进制文件)下载到内部闪存。
但我不知道如何使用 Code Composer Studio 为引导加载程序生成二进制文件。
我看到了很多关于通过 CCS 为"LM 闪存编程器"生成二进制文件而不是为引导加载程序生成二进制文件的教学。
那么、我的问题是、如何为引导加载程序生成二进制文件?

此外、我发现"TMS570LS3137_Blinky_Bootloader.bin"二进制文件似乎不能被其他引导加载程序使用。
为了解决 Flash API 库版本引起的编译器问题、我使用 QJ Wang 提供的引导加载程序项目。
网址是 :e2e.ti.com/.../869521 (特别感谢 QJ Wang 的帮助!)
然后、我尝试使用 Ymodem 协议将二进制代码下载到器件:
在 Tera Term:File->Transfer->YMODEM-> Send 中、然后选择"TMS570LS3137_Blinky_Bootloader.bin"二进制文件进行下载。
在使用引导加载程序将二进制(.bin)文件下载到 TMS570LS3137 HDK 后、我单击超级终端中的选项3。
此时、系统应在 TMS570LS3137 HDK 上执行 LED 闪烁、但我没有看到 HDK 上的 LED 闪烁。
此问题是否由引导加载程序工程和二进制文件之间的不兼容性引起?
以及如何为 QJ Wang 提供的引导加载程序项目生成二进制文件?

此外,Jean-Marc Mifsud 先生提到:
此代码具有2个构建配置:(TMS570LS3137_Blinky_Bootloader 项目)
A]调试。 这是为了调试代码。 它将刷写到0x0000_0000、不需要引导加载程序。
b]释放。 这是要在您希望使用引导加载程序下载代码时使用的配置。 在此配置中、代码被移动到地址0x0002_0000而不是0x0000_0000。
这是否意味着我在生成二进制文件之前需要检查任何设置?


感谢您的帮助!

此致、Chen Yan-Li

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

    您好、Yan-Li、

    您可以在 CCS 中将文件转换为二进制文件。

    在工程属性的 CCS 编译的编译后处理步骤中使用以下脚本:

    "${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin ""${BuildArtiftFileName}""${BuildArtiftFileBaseName}.bin""${CG_TOOL_ROOT}/bin/armofd ""${CG_TOOL_ROOT}/bin/armhex ""${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin

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

    QJ Wang、您好!

    我尝试了您说的方法、即添加
    "${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin ""${BuildArtiftFileName}"
    "${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/armofd "${CG_TOOL_ROOT}/bin/armhex
    "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin
    在 CCS 编译工程属性后执行的编译步骤中进行了介绍。

    但是、在我执行 CCS 编译(针对工程的'Debug')后、
    我在 CCS 工程目录中找不到文件扩展名为.bin 的二进制文件。

    我是否可以问哪一步出错了?
    我应该在哪个工程中设置上述内容、引导加载程序工程? 或闪烁的 LED 项目?


    感谢您的帮助!

    此致、Chen Yan-Li

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

    您好、Yan-Li、

    它为您当前的编译项目生成二进制文件。 此实用程序用于将*。out 文件转换为*。bin 文件。 如果编译器/链接器先生成文件、然后生成二进制文件。 请检查您是否在调试文件夹中获得了*。out 文件。  

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

    QJ Wang、您好!

    感谢您的回复!
    是的、我在项目的调试文件夹中找到了"TMS570LS3137HDK_UART_Bootloader.out"文件、
    但在添加"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin...之前、此文件已经生成 步骤中进行了介绍。

    那么、我能否理解在添加"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin...后*。out 文件 构建将成为".bin"文件、
    但文件扩展名是否仍保留".out"?

    然后、我是否应该通过引导加载程序将"TMS570LS3137HDK_UART_Bootloader.out"直接下载到 HDK 器件?
    或者、我是否应该将文件扩展名更改为"TMS570LS3137HDK_UART_Bootloader.bin"?
    还是在通过引导加载程序下载到 HDK 器件之前进行一些转换?


    感谢您的帮助!

    此致、Chen Yan-Li

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

    您好、Yan-Li、

    请从调试文件夹中删除旧的*。out 文件、然后检查是否生成了新的 out 文件。 该实用程序不会使用旧的现有输出文件。  

    BTW、引导加载程序不需要二进制格式。 您需要应用程序的二进制文件(例如 LED 闪烁)。 示例引导加载程序仅支持二进制文件格式。

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

    QJ Wang、您好!

    已理解、因此在我通过 JTAG 将引导加载程序烧写到 TMS570LS3137之后、我不需要使用引导加载程序项目。
    那么、我只需要通过"示例 LED 闪烁"项目生成二进制文件(应用文件)、对吧?

    让我来看看、我能否直接使用"示例 LED 闪烁"项目生成的新.out 文件(TMS570LS3137_Blinky_Bootloader.out)?
    在通过引导加载程序下载到 HDK 器件之前不进行一些转换?


    感谢您的帮助!

    此致、Chen Yan-Li

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

    您好、Yan-Li、  

    1.你是对的。 引导加载程序不需要二进制文件。 引导加载程序通过 JTAG 加载。

    不支持、示例 UART 引导加载程序仅支持二进制格式。  

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

    QJ Wang、您好!

    感谢您的回复!
    通过 JTAG 加载引导加载程序后、我认为我完全理解您的指令。
    然后、我可以下载应用程序文件(*。bin 文件)以通过引导加载程序更新程序。

    生成引导加载程序使用的应用程序文件(*。bin 文件)的步骤如下:
    添加"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin..." 步骤中进行了介绍。
    从调试文件夹中删除旧的*。out 文件并重建整个项目。
    完成步骤1和2后、可以在调试文件夹中找到新生成的二进制文件(*。bin 文件)。
    (由示例 TMS570LS3137_Blinky_Bootloader 项目生成的二进制文件为 TMS570LS3137_Blinky_Bootloader.bin)

    通过引导加载程序更新应用程序的步骤如下:
    启动超级终端并连接通信接口(我使用 Tera Term VT 和 UART 引导加载程序默认 USB 电缆)
    2.在引导加载程序的主菜单中选择"1.将应用程序映像下载到内部闪存"。
    3.单击“File->Transfer->YMODEM->Send”并选择要下载的二进制文件(TMS570LS3137_Blinky_Bootloader.bin)。
    下载二进制文件后、在引导加载程序的主菜单中选择"3.Execute the Application Code"。
    (理论上、在完成上述步骤后、HDK 板上的 LED 应闪烁)

    如果我的上述描述正确、我遇到了严重问题、
    通过引导加载程序更新应用程序后、HDK 板不会使 LED 或其他功能闪烁。

    我已经使用 JTAG 方法来确认 TMS570LS3137_Blinky_Bootloader 项目的功能。 HDK 板上的 LED 会闪烁。
    但是、在我使用引导加载程序方法更新程序后、HDK 板上的 LED 不响应。
    我已经尝试过其他项目使用引导加载程序来更新应用程序、但更新后它不会显示任何函数。

    上述引导加载程序过程中是否存在任何错误操作?
    引导加载程序之后的程序没有正确更新有什么原因吗?


    感谢您的帮助!

    此致、Chen Yan-Li

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

    您好、Yan-Li、

    您是否按如下方式更改了应用程序代码的链接器 cmd:

      引导程序(X) :origin=0x00010020 length=0x00000020

    引导程序(X)的原始地址应为应用程序的起始地址。  

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

    QJ Wang、您好!

    我已尝试更改您描述的应用程序存储器设置、
    即修改 TMS570LS3137_Blinky_Bootloader 项目源文件夹中的链接器 cmd 文件"sys_link_debug.cmd"。

    以下是 sys_link_debug.cmd 中的原始内存设置:
    存储器

    引导程序(X):origin=0x00000000 length=0x00000020
    FLASH0 (RX):origin=0x00000020 length=0x0013FFE0
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0002EB00

    然后、我将 sys_link_debug.cmd 的原始设置更改为:
    存储器

    引导程序(X):origin=0x00010020 length=0x00000020
    FLASH0 (RX):origin=0x00010040 length=0x0013FFE0
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0002EB00

    但是、当我为引导加载程序使用此新存储器设置生成的二进制文件时、它仍然不起作用。
    我甚至删除了调试文件夹并重新编译整个工程、以确保新生成二进制文件。

    实际上、我之前对存储器设置进行了类似的更改。
    因为我还记得提供 TMS570LS3137_Blinky_Bootloader 项目的 Jean-Marc Mifsud 先生提到:

    此代码具有2个构建配置:(TMS570LS3137_Blinky_Bootloader 项目)
    A]调试。 这是为了调试代码。 它将刷写到0x0000_0000、不需要引导加载程序。
    b]释放。 这是要在您希望使用引导加载程序下载代码时使用的配置。 在此配置中、代码被移动到地址0x0002_0000而不是0x0000_0000。
    (e2e.ti.com/.../402100

    根据上述说明、我在名为"sys_link_release.cmd"的项目中找到了一个链接器 cmd 文件"从编译中排除"。
    sys_link_release.cmd 的内存设置如下:
    存储器

    引导程序(X):origin=0x00020000 length=0x00000020
    FLASH0 (RX):origin=0x00020020 length=0x0013FFE0
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0002EB00


    根据上述说明,我已尝试将内存设置更改为以下内容:
    (或取消 sys_link_release.cmd 的"从编译中排除"、并将其更改为 sys_link_debug.cmd、作为"从编译中排除")
    存储器

    引导程序(X):origin=0x00020000 length=0x00000020
    FLASH0 (RX):origin=0x00020020 length=0x0013FFE0
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0002EB00

    但是、在我尝试上述修改后、通过引导加载程序更新后、工程生成的二进制文件仍然无法使 HDK 上的 LED 闪烁。
    引导加载程序是否还有其他可能无法正确更新应用程序?

    如果您能为我提供兼容的引导加载程序和应用示例项目以供参考、我将不胜感激。
    如果您有其他与此引导加载程序兼容的示例应用程序项目、请您将其提供给我吗?


    感谢您的帮助!

    此致、Chen Yan-Li

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

    您好、Yan-Li、

    此链接器命令文件中的起始地址应与引导加载程序中定义的起始应用程序地址一致。

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

    QJ Wang、您好!

    感谢您的回复!
    那么、在哪里可以看到在引导加载程序中定义的起始应用程序地址?
    它是否位于引导加载程序的 cmd 文件中? 以及如何理解内部的定义?


    感谢您的帮助!

    此致、Chen Yan-Li

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

    它位于 BL_CONFIG.h 中:

    //引导加载程序的闪存映像不得大于此值。
    //
    #define APP_START_ADDRESS 0x00010020

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

    QJ Wang、您好!

    谢谢! 您提供的信息是解决问题的关键。
    由于 bl_config.h 中的 APP_START_ADDRESS 设置、无法正确更新应用程序

    Bootloader 项目的默认 APP_START_ADDRESS 设置为0x00010100而不是0x00010020、
    因此、应用程序之前的 APP_START_ADDRESS 设置(0x00010020)将小于定义的默认启动应用程序地址。

    现在、我创建的应用程序成功使 HDK 上的 LED 板闪烁。
    非常感谢您的帮助!


    感谢您的帮助!

    此致、Chen Yan-Li