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.

[参考译文] TM4C1294NCPDT:使用 UART 和引导加载程序升级定制板的固件。

Guru**** 2461020 points
Other Parts Discussed in Thread: TM4C1294NCPDT, ENERGIA

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/641015/tm4c1294ncpdt-upgrade-the-firmware-of-custom-board-using-uart-and-bootloader

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: TM4C123ENERGIA

我有自己的定制板、其设计基于 TM4C1294NCPDT。 我想使用 UART 和引导加载程序升级定制板的固件。 我不知道怎么做。

我们非常感谢您提供的任何意见/见解/分步指南。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在定制 PCB 上安装了 JTAG 连接器? 升级似乎意味着闪存之前已使用应用程序固件编写过?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Techinspirred、您好!

    首先、我建议查看我们的 TivaWare 示例"boot_serial"和"boot_demo"、让您在 LaunchPad 上尝试 UART 引导加载程序示例。 了解该示例在 LaunchPad 上的工作原理后、您还可以将其移植到定制板。 这是了解 TM4C 的 UART 引导加载程序并使其在您的定制硬件上运行的最快捷、最简单的方法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="BP101">您是否在定制 PCB 上安装了 JTAG 连接器? [/报价]

    感谢您的回复...是的、我的定制 PCB 上有一个 JTAG 连接器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经介绍了"boot_serial"和"boot_demo"两个示例。 我无法完全理解在全新定制板上转储固件或使用基于 ROM 的串行引导加载程序对其进行升级的步骤。 是否有任何文档会详细解释这些步骤?

    另外、我想知道我能否单独使用 LM Flash 程序员和 Out CCS、在 LM Flasher 中选择"Mannual Connection"并选择"Serial (UART)"并转储 bin 文件? 如果是...您能向我解释一下连接吗?

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

    您好!

    为什么不尝试几件事看看它是否连接、 回忆一下带 JTAG 的 LM  是无用的。

    /cfs-file/__key/communityserver-discussions-components-files/908/SW_2D00_TM4C_2D00_BOOTLDR_2D00_UG_2D00_2.1.0.12573.pdf

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

    BP101随附了我们的引导加载程序指南、这是我们在文档方面拥有的最佳资源。 如果您四处搜索、您可能会发现其他 E2E 帖子也会有所帮助?

    至于 LM Flash Programmer、我认为我没有尝试将其用于 UART 引导加载程序、但概念与 USB/以太网相同、您需要将 PC 连接到板载 UART 端口、确保 PC 识别 UART (具有 COM 端口)、 然后使用 LM Flash 连接到该 COM 端口以加载.bin 文件。

    关于 ROM 引导加载程序、它将查看所有支持的接口、直到其中一个接口接收到有效信号、然后将使用该接口进行更新。

    如果检测到多个接口、则有一个序列可供选择 USB > ENET > I2C > SSI > UART。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 BP101:

    感谢您的回复和文档。

    [引用 user="BP101"] 调用具有 JTAG 的 LM  是无用的。

    我不明白为什么您这么说、但我在 TM4C123板的 JTAG 的帮助下在我全新的定制板上对任意 MAC 进行了编程。 我想使用"串行 UART"连接。

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

    感谢 Ralph 的回复!

    [引用 user="Ralph Jacobi"]您需要将 PC 连接到板级 UART 端口,确保 PC 识别 UART (具有 COM 端口),然后使用 LM Flash 连接到该 COM 端口以加载.bin 文件。

    我要将 PA0和 PA1的 UART0引脚连接到 USB 到 TTL 板、并将其连接到我的 PC、然后在 LM 闪存编程器中选择"手动"连接和"串行端口"以转储.bin 文件。

    我想问的第二个问题是 boot_demo1示例也是基于闪存的引导加载 程序(我记得我在注释中已经阅读过它)。我需要一个基于串行/UART ROM 的引导程序。 正如我在另一本串行引导加载程序指南中所述、该指南演示了如何将 TM4C123用作编程器器件、并将 TM4C1294NCPDT 用作目标器件。 现在我还不知道:我是否应该在 boot_demo1示例中包含我的固件代码? 或者、我应该先运行它们、然后再运行固件代码吗?

    在 "boot_serial"示例中、只有 bl_config.h 选择 UART 端口与引导加载程序通信。 介绍了如何使用 firmware...please 运行该 boot_serial 示例。

    此外、在引导加载程序指南中、UART 还有特定的自定义协议命令...如果还使用基于串行 ROM 的引导加载程序、则还需要此命令和数据包构建?

    谢谢

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

    [引用 user="Techinspired"]我不明白为什么您说过[/引用]

    过去尝试将 XDS100 (JTAG 接头)与 LM3S 一起用于写入 MAC 用户寄存器不 受支持。  TMC123板 有 一个板载 ICDI 仿真 (JTAG)控制引脚 进入目标、并通过 Windows 中的 USB CDM 器件驱动程序传输固件或写入闪存。 这与使用 LM 闪存 尝试  通过 定制 PCB 的 JTAG 接头连接 XDS100/200 JTAG 仿真器的情况不同、因为任何普通人  在 XDS 仿真器上花费大量资金后都会尝试这样做。

    我不同意使用过于复杂的 TMC123方法 对远程目标 TM4C129x 进行编程。 因此、 您似乎不知道 CCS 可以通过 JTAG 仿真器和 接头直接连接到定制 PCB 、以加载固件、 通过 SWO 对其进行调试以及 使用    CCS 中内置的寄存器调试功能。  一款理想的高速 JTAG 仿真器(预算内) 是 TI store 出售的 XDS200、 可能会对知识的不断发展有所帮助。

    与     调用嵌入式 ROM 版本 TM4C129x 相比、串行引导加载程序应用很麻烦、增加了复杂性。

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

    Techinspirred、您好!

    TivaWare 中的示例确实在闪存中运行、因为它是一个可帮助用户学习的示例。 如果您认为使用闪存版本很好地掌握了引导加载程序、则可以使用 ROM 引导加载程序。

    一旦您知道如何将 boot_demo1放入电路板中、我会说您也会尝试为自己的代码加载.bin、以便按照所需的方式设置程序的位置。 您不会将固件包含在 boot_demo1中、而是加载 boot_demo1、而是加载固件。 boot_demo1具有重复跳转到闪存引导加载程序的功能、因此您可以看到如何通过 GPIO 触发引导加载程序。

    [引用用户="Techinspire"]

    在 "boot_serial"示例中、只有 bl_config.h 选择 UART 端口与引导加载程序通信。 介绍了如何使用 firmware...please 运行该 boot_serial 示例。

    [/报价]

    boot_loader 文件夹包含应用程序的其余部分。 bl_config.h 文件是唯一应编辑的文件、因此它位于示例的主目录中。

    [引用用户="Techinspire"]

    此外、在引导加载程序指南中、UART 还有特定的自定义协议命令...如果还使用基于串行 ROM 的引导加载程序、则还需要此命令和数据包构建?

    [/报价]

    是的、您需要将它们用于 ROM 引导加载程序。

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

    根据我对 ROM UART 引导加载程序的理解、它只涉及 BOOTCFG 寄存器的 EN 位清零或地址0x4全为 F、参考:  

    现在、我的定制板之前使用 TM4CICDI 进行了编程、因此它的闪存必须被擦除(以在 LMFlash Pragrammer 中调用基于 ROM 的引导加载 程序)、所以我使用了 TM4C3's ICDI 来擦除闪存。

    并 通过空白检查测试检查闪存是否为空、在我的电路板上、该测试已通过。

    然后、我移除了 JTAG 连接、并将定制板的 PA0 (RX)和 PA1 (TX)引脚连接到具有 COM 端口9的 USB 至 TTL 板(我在器件管理器中将波特率设置为115200、并在 LM 闪存编程器中保持相同的波特率)

    并尝试将 blinky.bin 编程到我的定制板、但它给出了类似这样的错误。

    在 LM 闪存编程器中调用 UART ROM 引导加载程序是否有任何重要步骤、我在这里缺失了吗?  

    谢谢。

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

    很抱歉耽误你的时间。 我认为您需要在刷写.bin 文件之前设置程序偏移量。 此 E2E 主题讨论了以下内容: e2e.ti.com/.../2013487
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    感谢您的回复!

    我想问的几个问题:

    1) 1)我能否在 Launchpad 上测试整个引导加载程序过程、该 LaunchPad 的 UART0引脚未在接头上输出。 那么调试电缆是否适用于 UART0? LM 闪存编程器中的 COM 端口将是 launchpad 的调试 COM 端口...对吧? 我应该移除/安装哪些其他跳线?

    2) 2)擦除闪存并对应用程序库进行编程后、是否需要在两者之间对 boot_serial.bin 进行编程?

    3) 3)"boot_serial"示例有什么作用?

    4) 4)如果我在链接器 cmd 文件中设置#define APP_base 0x2000、那么我将在程序偏移地址中输入相同的偏移地址
    LM 闪存编程器中的位域? 但在 bl_config.h 中、APP_START_ADDRESS 定义为0x4000而不是0x2000...所以这个东西就是
    令人困惑。

    5) 5)如果我需要在链接器 cmd 文件中设置程序偏移量、那么对于在 CCS 中构建的工程、但我的应用程序已经内置、这是可以实现的
    在 Energia 中、我在哪里设置/查找链接器 cmd 文件、BTW 我已在 CCS 中导入 Energia 代码并使用 JTAG 转储应用。

    此致。

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

    1) 1)您可以通过 ICDI USB 端口在 LaunchPad 上测试整个过程。 LM 闪存编程器将可以看到 UART 接口、这样您就可以像使用 UART 转 USB 转换器连接到 PC 一样对其进行编程。 正确、LM Flash Programmer 中的 COM 端口是 LaunchPad 的调试 COM 端口。 只要电源被选为 ICDI 并且 CAN/UART 接头被设置为 UART、您就不需要移除任何跳线。

    2) 2)您可以随时对 boot_serial.bin 进行编程、无需先擦除闪存。 您也可以从 CCS 对其进行编程。

    3) 3)它是一个闪存引导加载程序。 您可以通过修改.h 文件为每个不同的引导加载程序示例配置它。 它基本上是每个可能的串行协议闪存引导加载程序(UART、I2C、SPI、CAN 和 USB)的一体式项目。

    4) 4)您需要在链接器中为您的 APP_BASE 定义、以匹配 bl_config.h 文件中 APP_START_ADDRESS 的定义。 这也是您需要在 LM 闪存编程器中为"Progam 地址偏移:0x"框指定的偏移量。

    5) 5)我不知道 Energia 如何处理所有这些问题。 我建议首先尝试使用 CCS 示例、以确保关闭 UART 引导加载程序部分、然后在 Energia 论坛上询问他们如何使用该示例执行引导加载程序应用、以及可以在何处修改 APP_BASE 地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    非常感谢您的详细解释和帮助!

    不过、我尚未在 Launchpad 或我的定制板上测试整个引导加载程序过程、 由于我遇到了另一个无法为我的定制板获取 IP 地址的问题,因此此任务优先于“UART 引导加载程序”任务...但是,一旦我解决了 IP 地址问题(我也在该论坛上发布了该问题...希望在这里获得解决方案/帮助, 因为我已经为这个问题挣扎了一段时间。 TI 硬件设计团队的任何人可以在这方面为我提供帮助吗?) 我将在稍后测试串行引导加载程序、并随时向您发布有关更新的信息。

    此致、
    技术尖头

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

    也许这可以为您提供服务: i.imgur.com/LFHuP3J.png

    显示了作为调试器/编程器连接到另一个的 TM4C1294NCPDT 开发板。 它实际上是我用来对原型^_^进行编程的东西
    将一个小带状电缆连接器连接到10引脚插头以供移动使用不会太麻烦。

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

    你(们)好

    您必须 使用 JTAG 加载"boot_serial"示例。 一旦运行、它将通过 LM 闪存编程器下载 boot_demo1.bin。 请参阅 TivaWare boot_serial (引导加载程序)和 boot_demo1.bin (应用程序)示例。

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

    [引用 USER="Prachi Patil"]。。。但是,一旦我解决了 IP 地址问题(我也在这个论坛上发布过),我就希望在这里获得解决方案/帮助

    您好 Prachi、

    感谢您的验证!  

    您的定制 PCB 是否还获得了 IP 地址。 许多人似乎 最终 在 论坛中发布 EMAC0 无法获取 IP 地址。 如果 仍有问题、请通过 PM 发送帖子链接、祝您在新年顺利。