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 使用引导加载程序为 TM4C1294NCPDT 下载十六进制文件

Guru**** 2524550 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/877755/tm4c1294ncpdt-how-to-use-bootloader-via-uart-for-hex-file-download-for-tm4c1294ncpdt

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

您好!

我不熟悉引导加载程序和相关的内容。现在、我必须在应用程序运行时使用引导加载程序通过 UART 加载十六进制文件。

我获得了与引导加载程序相关的所有源文件和两个示例代码、它们介绍了如何跳转到引导加载程序。由于我对引导加载程序有非常基本的了解、因此无法正确使用这些文件。

是否有任何详细的示例代码以开头?

或任何解释实施的文档?

注:- TivaWare_C_Series-2.1.4.178中的源代码和示例代码

此致、

Satheesh

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

    TM4C1294N 器件上的 ROM UART 引导加载程序不加载十六进制文件。 它加载二进制文件。 TivaWare 中的闪存引导加载程序示例也是如此。 您可以制作一个闪存引导加载程序、以加载您选择的格式的十六进制文件、但我怀疑您当前的问题更简单。

    将项目 boot_serial、boot_demo1和 boot_demo2导入到工作区中、方法是:

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl

    使用 Code Composer Studio、加载并运行 boot_serial 程序。 复位电路板。

    打开 LM Flash Programmer。 将其设置为手动配置、串行(UART)和115200波特。 将 COM 端口设置为器件管理器中的"Stellaris 虚拟串行端口"编号。 您可以使用 LM Flash Programmer 上的"设备管理器"按钮来打开设备管理器。 它应如下所示:

    现在、在"程序"选项卡上、浏览到 boot_demo1.bin 文件。 (C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\boot_demo1\ccs\Debug\boot_demo.bin)将程序地址偏移量设置为4000。

    再次按下电路板上的复位按钮。 现在、您将看到 LED D1闪烁。 您已成功使用闪存引导加载程序将新代码加载到器件中。

    按下 SW1、LED 停止闪烁、因为 CPU 现在再次运行引导加载程序。 返回到 LM Flash Programmer 并加载 boot_demo2。 按下电路板上的 RESET。 现在、D2在闪烁。

    您可以检查这三个项目、并查看如何构建基于闪存的 UART 引导加载程序以及这两个应用程序代码是如何完成的。 下面是一些指向更多详细信息的链接。

    有关引导加载程序工作原理的详细信息:

    http://www.ti.com/lit/ug/spmu301d/spmu301d.pdf

    有关如何实现加载程序(PC 端)的详细信息:

    http://www.ti.com/lit/an/spma074a/spma074a.pdf

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

    您好 Bob、

    您的关注、细节和由此产生的清晰性使您能够破解、年轻的员工注意到、"即使 CB1也能做到这一点!"   …   (可能)

    您 可能会注意到、"员工和我长期观察论坛用户"、"需要引导加载程序"-但"从未/曾经"如此"需要"是合理/详细的!"    他们的项目的完成被淘汰、有时甚至被放弃...  

    海报可能会被证明是明智的、以考虑他们的"项目的正确性能"是否应该"以前"-他们的"紧迫"(但从未解释过) "需要引导加载程序..."

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

    尊敬的 Bob:

    非常感谢您的详细、简化的回答。我已经完成了、它正在工作。现在、我们将 了解它的详细信息、并告诉您我们是否停留在某个位置

    这是我们实现产品 OTA 兼容性的第一步。

    项目要求

    我们必须在不进入客户站点的情况下从工厂本身对器件进行编程。因此、在该项目中、我们将使用 WiFi 转 UART 转换器、它将接收从我们的系统传输的十六进制文件、并将其提供给我们目标的 UART (位于客户站点)  目标本身应该在 没有任何手动干预的情况下更新程序。

    此项目处于初始阶段。您的帮助使我们能够以正确的方向开始。

    最后、我们必须使用十六进制文件而不是二进制文件。如果我们在这方面获得一些文档、示例代码或应用程序代码、将会大有帮助

    此致、

    Satheesh

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

    我建议您首先熟悉 TivaWare 引导加载程序使用的串行更新协议。 中记录了这一信息:

    C:\ti\TivaWare_C_Series-2.1.4.178\docs\SW-TM4C-BOOTLDR-UG-2.1.4.178.pdf

    重要的一点是、在开始执行该代码之前、您需要确保已编程的新代码中没有错误或遗漏。 错误可能会阻止 CPU 返回到引导加载程序、这意味着器件需要现场服务或将其返回。

    十六进制文件有多种格式。 查看"C:\ti\TivaWare_C_Series-2.1.4.178\boot_loader\BL_packet.c"中的 ReceivePacket ()函数。 您可以在此函数中将 UART 接收到的十六进制输入转换为原始数据。