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.

[参考译文] TM4C123GH6PM:通过 UART 进行固件编程

Guru**** 2606725 points
Other Parts Discussed in Thread: TM4C123GH6PM, UNIFLASH, EK-TM4C123GXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/748731/tm4c123gh6pm-firmware-programming-through-uart

器件型号:TM4C123GH6PM
主题中讨论的其他器件: TM4C123DK-TM4C123GEK-TM4C123GXL

您好,

我们正在其中一个项目中使用 TM4C123GH6PM、我们想知道我们是否可以使用 UART 命令将二进制文件闪存到 TM4C 中。

如果可能、请告知我们执行相同操作的命令和过程。

谢谢、

Deepanraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、有很多关于为 TM4C123器件实现串行引导加载程序的信息。 如果您已经下载了 TivaWare 器件驱动程序、您将拥有以下三个示例项目:
    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c123g\boot_serial
    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c123g\boot_demo1
    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c123g\boot_demo2

    此外、以下是有关协议的一些信息:
    www.ti.com/.../spma074a.pdf
    有关 TivaWare 库随附的引导加载程序软件的详细信息:
    www.ti.com/.../spmu301d.pdf
    有关片上 ROM 中提供的串行引导加载程序的信息(第2章):
    www.ti.com/.../spmu367.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    实际上、我们能够提供命令并从器件获取响应。

    请告诉我们如何对二进制文件进行编程。 因为我们不知道下载命令中提供的起始地址和大小。

    此外、我们如何使器件从闪存中检索数据并对其他器件进行编程。

    对于闪存编程、我们如何从主机 PC 调用函数、我需要使用哪个库

    谢谢、
    Deepanraj

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

    另外、请告知我们如何使用 USB 对 TM4C 进行编程。 我的 TM4c 通过 USB 连接到 PC。 我们希望使用 USB 从 PC 对 TM4C 二进制文件进行编程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Deepanraj Anbarasan"]请告诉我们如何对二进制文件进行编程

    是否要为 PC 编写自己的程序、或使用现有程序? 您可以使用 LMFlashProgrammer 通过串行引导加载程序将二进制文件加载到器件中。 如果您想编写自己的代码、TivaWare 中有一个示例代码、位于 C:\ti\TivaWare_C_Series-2.1.4.178\tools\sflash

    [引用 user="Deepanraj Anbarasan"]此外,我们如何使器件从闪存中检索数据并对其他器件进行编程。

    您可以使用引导加载程序上载器件的闪存内容、但该器件必须运行引导加载程序。 除非器件中的应用程序代码能够调用引导加载程序、否则它将运行应用程序、而不是引导加载程序。 在这种情况下、您需要使用电路内仿真器(JTAG 或 SWD)来读取器件的内容。 另外请注意、器件可能禁用调试端口、或将闪存的一部分配置为"仅执行"。 在这种情况下、您无法读取闪存的内容。

    也许如果你告诉我你正试图做什么,我可以给你更好的建议。

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

    尊敬的 Bob:

    我们希望通过 PC (Linux)对 TM4C 进行编程。  是否可以从基于 Linux 的机器对 TM4C 进行编程。

    实际上、我们无法找到起始地址和大小。 从何处获取应用程序的起始地址和大小。

    可为应用程序提供的最大大小是多少。是否存在任何限制?

    请告诉我们、在您建议的应用中、C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c123g\boot_demo1。 引导加载程序是否存在?

    我们如何刷写引导加载程序和应用程序。

    下面是我们遵循的过程:

    将 boot_serial 刷写到器件中、使用 LM 闪存编程器、我们尝试刷写二进制文件、但波特率同步会出错。

    谢谢、

    Deepanraj

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

    [引用 user="Deepanraj Anbarasan">我们希望通过我们的 PC (Linux)对 TM4C 进行编程。  是否可以从基于 Linux 的计算机对 TM4C 进行编程。

    如果您使用的是 JTAG 扫描控制 器、则可以在 Linux 计算机上使用 UniFlash。 如果您计划使用串行引导加载程序、则需要创建您自己的应用程序。 C :\ti\TivaWare_C_Series-2.1.4.178\tools\sflash 中提供了示例源代码

    [引用 user="Deepanraj Anbarasan">实际上,我们无法找到起始地址和大小。 从何处获取应用程序的起始地址和大小。

    这取决于您的应用。 通常应用从地址0开始、但如果使用闪存引导加载程序、则应用程序启动可能会偏移。 示例串行引导加载程序将应用程序偏移到地址0x2800。 您应该在 Code Composer 生成的.map 文件中看到应用程序的起始地址和大小。

    [引用 user="Deepanraj Anbarasan">请在您建议的应用中告知我们 C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c123g\boot_demo1。 引导加载程序是否存在?[/quot]

    否、引导加载程序位于 boot_serial 中。 boot_demo1和 boot_demo2是偏移量从地址0x2800开始的应用程序、因此它们可以由引导加载程序进行编程、而不会覆盖引导加载程序。

    [引用 user="Deepanraj Anbarasan"]将 boot_serial 刷写到器件中,使用 LM 闪存编程器,我们尝试刷写二进制文件,但波特率同步出错

    编程 boot_serial.out 后复位器件。 然后、使用设置为115200波特的 LM 闪存编程器使用0x2800的起始地址对 boot_demo1.bin 进行编程。

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

    但是、我们仍然会得到与先前观察到的相同的误差。
    甚至检查了 COM 端口设置、似乎一切都正常。

    谢谢你
    Deepanraj
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否能够使用 Code Composer Studio 将 boot_serial.out 编程到器件中? 该器件是否位于 EK-TM4C123GXL launchpad 上?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    我们能够使用 CCS 进行编程。

    是的、我们使用的是 EK-TM4C123GXL。

    谢谢、

    Deepanraj

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

    好的、让我们验证串行连接是否正常工作。 您是否在设备管理器中看到了 Stellaris 虚拟 COM 端口? 它应如下所示:

    然后从以下位置将"hello"项目导入您的工作区:

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c123gxl\hello

    构建并加载"hello"。 使用器件管理器中标识的 COM 端口在 Code Composer 中配置"终端"、并将波特率设置为115200。

    让程序运行。 您应该会看到"Hello、world!" 打印在终端窗口中。

    您是否能够成功执行这些步骤?

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

    尊敬的 Bob:

    我们能够成功执行这些步骤。

    另外、让我们知道、在我们的最终设计中、我们使用的是外部闪存。 请告诉我们、硬件/软件中是否需要任何 GPIO 设置、以便器件从外部闪存引导。

    谢谢、
    Deepanraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用 Windows 或 Linux 系统完成了这些步骤?

    不支持从外部闪存引导。 TM4C123器件上没有为外部闪存提供地址和数据总线信号的"外部外设接口"。 TM4C129系列器件上提供了该接口。

    外部闪存可通过串行 USB 或 SPI 端口连接到 TM4C123器件、但 CPU 无法从这些端口执行指令。 闪存需要被读取并复制到 RAM 中以供执行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    我们在 Windows 系统中完成了这些步骤。

    谢谢、

    Deepanraj

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

    好的、 您有 EK-TM4C123GXL Launchpad 吗? 我附加了一个包含三个项目的.zip 文件。 第一个只是串行引导加载程序"boot_serial"。 接下来的两个项目是简单的 LED 闪烁项目、这些项目偏移到地址0x2800、并且可以演示串行引导加载程序。 首先、使用 Code Composer Studio 将 boot_serial.out 编程到 TM4C123器件中。 接下来、使用 LM Flash Programmer 通过  115200波特的串行端口对"EK-BOOTDemoBlueBlinky.bin"或"EK-BOOTDemoRedBlinky.bin"进行编程。 您应该会看到 LED 闪烁。 按住 SW1直到 LED 停止闪烁。 您现在回到了引导加载程序中、可以为另一种颜色对例程进行编程。 这将演示如何在 PC 上使用串行引导加载程序。

    /cfs-file/__key/communityserver-discussions-components-files/908/EK_2D00_SerialBootDemo.zip

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

    实际上、我们是评估板、我们已将 USB 电缆连接到调试端口。

    这是通过 UART 对二进制文件进行编程的正确方法。

    由于使用您的二进制文件时、我们也无法进行编程、因此我们会遇到相同的错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是正确的配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    请告诉我们、我们的行为是错误的。

    因为我们已经检查了所有配置、但无法使用该工具刷写二进制文件。

    谢谢、

    Deepanraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,我不知道。 我还在使用 EK-TM4C123GXL、我无法重现您的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    是否有任何其他方法可以在不使用该工具的情况下将二进制文件加载到偏移地址。

    谢谢、
    Deepanraj
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Deepanraj、您好!
    当我们无法使简单部件正常工作时、我犹豫是否要提出更复杂的建议。 我向您发送了一个朋友请求。 我知道我们有很大的时区差异、但希望我们可以为 WebEx 会议确定一个共同的时间。 也许这样我们就可以使事情正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    感谢您的支持。

    当然会有 Web ex 会话。 请建议您在 WebEx 课程中使用合适的时间。

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

    尊敬的 Bob:

    我们能够将.bin 文件刷写到我们的 TM4C 器件中。

    但是、引导加载程序串行命令我们不会执行并获取应答。

    tm4c 设备是否有任何 BIM?

    谢谢、
    Deepanraj

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

    尊敬的 Bob:

    BIM 是指引导映像管理器。

    谢谢、

    Deepanraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不知道用于 PC 的任何类似内容、但有大量信息涉及如何使用器件附带的基于 ROM 的引导加载程序或使用基于定制闪存的引导加载程序。
    www.ti.com/.../spmu301d.pdf
    www.ti.com/.../spma074a.pdf
    www.ti.com/.../spmu367