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.

[参考译文] TM4C129XNCZAD:TM4C129X 的示例代码

Guru**** 2399305 points
Other Parts Discussed in Thread: TM4C129XNCZAD, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/988101/tm4c129xnczad-example-code-for-tm4c129x

器件型号:TM4C129XNCZAD
主题中讨论的其他器件: EK-TM4C1294XLDK-TM4C129X

我们需要适用于闪存引导加载程序的示例代码、而不是适用于 TM4C129X 开发板的 ROM 引导加载程序。 我们在设计中使用 TM4C129XNCZAD 控制器。

我使用 LM Flash 加载程序来练习使用 TM4C129X 电路板。

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

    您好!

     TivaWare 库中提供了多个闪存引导加载程序示例。  

     您可以在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl 中找到这些示例。 boot_serial 和 boot_emac_flash 是引导加载程序、其余是要引导加载的应用程序。 有关详细信息、另请参阅引导加载程序用户指南。  www.ti.com/.../spmu301

    如果您感兴趣的是 CAN 引导加载程序、还提供了一份包含示例的应用手册。

    https://www.ti.com/lit/pdf/spna245

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

    您好、Charles、

    Tm4c129x 开发板

    我已通过 LM 闪存加载程序转储 boot_serial @0x0000、并且修改后的 Bl_config.h 包含应用地址@ 0x4000

    现在构建 一个应用程序@0x4000、并通过具有 UART 选项的 LMFlash LODER 尝试转储偏移量为0x4000的代码、但是

    我们遇到错误"与电路板建立通信失败"  

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

    您好!

     需要检查的几件事。 您是否选择了正确的 COM 端口? 您是否选择了正确的波特率? 请参阅下面的 LM 闪存编程器。 在我的设置中、我有 COM5。 在 USB 枚举之后、您可能会显示其他 COM 端口。  

    转至 Windows 设备管理器、确保 COM 端口(在我的情况下为 COM5)具有正确的设置。  

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

    尊敬的 Charles:

    已再次检查,配置没有问题,但仍出现上述 错误。 配置已连接到参考

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

    您好!

     在设备管理器中、您能否右键单击 COM27并确保其波特率设置确实为115200且具有一个停止位且无奇偶校验? 查看我在上次回复中上传的图片。  

     如果仍然不起作用、您能否取消单击 "禁用自动波特率支持"、正如我在上次答复中所显示的那样。 有什么不同吗?

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

    查尔斯

    我已经尝试过上述操作、但很抱歉未在我的帖子中发布。  

    有无勾选均不成功

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

    您好!

    [引用 userid="477645" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/988101/tm4c129xnczad-example-code-for-tm4c129x/3650000 #3650000"]

    我已通过 LM 闪存加载程序转储 boot_serial @0x0000、并且修改后的 Bl_config.h 包含应用地址@ 0x4000

    现在构建 一个应用程序@0x4000并通过具有 UART 选项的 LMFlash LODER 构建

    [/报价]

    我只想在此澄清一些问题。 您说过您修改了 bl_config.h 并构建了您的应用程序。 您能否在 bl_config.h 文件中阐明您所做的更改?  

    您能否按原样尝试 TivaWare 示例? 请勿修改任何内容。 在 TivaWare 中、已经有一个 boot_serial (这是一个引导加载 程序)、并且有两个应用程序(boot_demo1和 boot_demo2)将由引导加载程序加载。 bl_config.h 已配置为通过 UART 进行引导加载。 如果您按原样尝试 TivaWare 示例、则无需修改任何内容。 您能不能尝试一下、您是否遇到了相同的问题? 您可以在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_serial 中找到引导加载 程序、并在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_demo1中找到该应用程序。 同样、无需修改任何内容。 这些示例已经过验证。 如果它们不能正常工作、则需要查看 PC 端。  

    您可以在另一台计算机上尝试吗?

    您能向我展示您的设备管理器显示吗?

    能否探测 UART0TX 和 UART0RX 引脚? 当 PC 将命令发送到 MCU 时、您应该在 UART0RX 引脚上看到一些活动吗? 你看到什么?

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

    我已按照您的建议进行了尝试。

    我再次安装 2.2.0.295软件包。

    我已经通过 LM 闪存加载程序+ JTAG@0x0000 位置转储了上面软件包中可用的任何 boot_serilal.bin 文件。 成功

    然后选择手动配置和波特115200+串行 UART 并转储 boot_demo1.bin @0x4000。成功

    然后再次选择 手动配置和波特115200+串行 UART,并转储 BOOT_DEU2@ 4000 ,但收到相同的错误。

    我有 Stellaris LM3S9B96开发板。 我应用了相同的过程、例如 boot_serial、boot_demo1、boot demo2 (Stellaris 软件包提供的文件)及其与 stellearis 板的工作

    但相同的过程不适用于 TM4C129X

    TM4C129X 使用器件型号 TM4C129XCNzaD、您建议的文件夹是  tm4c1294xl。 这会产生任何差异吗?

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

    您好!

     抱歉、我以为您使用的是 EK-TM4C1294XL launchHpad。 看起来您使用的是 DK-TM4C129x EVM 板。 正确吗? 请确认您是否有 EK-TM4C129xXL Launchpad、您可以运行 boot_serial 和 boot_demo1/boot_demo2。 boot_demo1要求按下 LaunchPad 上的 SW1以启动加载另一个程序。 但是、LaunchPad 上的开关与 DK EVM 板不同。 您可以自己修改它、或者如果您只有 DK EVM 板、请参阅以下文章、其中 Ralph 提供了一个可在 DK EVM 板上运行的示例应用。  

     https://e2e.ti.com/support/microcontrollers/other/f/other-microcontrollers-forum/987359/tm4c129xnczad-bootloader-with-tm4c129x

     我将再次连接应用。

    e2e.ti.com/.../5751.boot_5F00_demo_5F00_uart_5F00_flash.zip

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

    尊敬的 Charles:

    我使用的是 TM4C129X 开发板。

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

    您好!

     了解您使用的是 TM4C129X 开发板。 同样、您是否有机会使用我上次答复中随附的修改后的 boot_demo_uart_flash.zip?

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

    您好、Charles、

    首先,我在 程序偏移量0x00处通过 LM 闪存加载程序转储 boot_serial.bin,JTAG。 成功。

    我通过 LM Flash 加载程序在程序偏移量0x4000处使用手动配置+串行 UART 转储 boot_demo_uart_斜 杠代码

    然后它运行"它在屏幕上显示位信息"。这意味着它运行。

    现在、我已经通过 LM Flash 加载程序转储了我的代码、此加载程序具有手动+串行 uartat 程序偏移量0x4000。 已成功导入代码,但屏幕上未显示任何内容。

    为了交叉检查、我 在程序偏移量0x0000处使用具有 JTAG 的 LMFLASH 转储我的代码、然后 内容显示在屏幕上。

    问题出在哪呢?

    偏移是否不匹配?

    我在执行代码转储时所遵循的流程存在问题。

    e2e.ti.com/.../8473.New_5F00_Error_5F00_Calculator.zip

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

    您好!

    [引用 userid="477645" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/988101/tm4c129xnczad-example-code-for-tm4c129x/3657866 #3657866"]

    我通过 LM Flash 加载程序在程序偏移量0x4000处使用手动配置+串行 UART 转储 boot_demo_uart_斜 杠代码

    然后它运行"它在屏幕上显示位信息"。这意味着它运行。

    [/报价]

    很高兴它能正常工作。  

    [引用 userid="477645" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/988101/tm4c129xnczad-example-code-for-tm4c129x/3657866 #3657866">现在、我已经通过 LM Flash 加载程序转储了代码、手动+串行 uartat 程序偏移量0x4000。 已成功导入代码,但屏幕上未显示任何内容。

    这证明了引导加载程序的工作原理。 但您的应用可能有问题。 您是如何开发应用的。 您开发的应用程序代码是否以0x0或0x4000开头?  

    [引用 userid="477645" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/988101/tm4c129xnczad-example-code-for-tm4c129x/3657866 #3657866"]要进行交叉检查,请使用 程序偏移量为0x0000的 JTAG 转储我的代码,然后 在屏幕上显示内容。

    似乎建议您在0x0处开发应用。 你不能这么做。 您必须使用链接器设置来开发应用程序、该设置会将应用程序映像重定位在0x4000处。 查看 boot_demo_uart_flash 示例的链接器文件。 引导加载程序从0x0开始。 引导加载程序启动时、它会检查0x4000处是否有应用程序映像。 如果在0x4000处有一个映像、则引导加载程序将跳转到该映像以运行应用程序。 现在、您有一个应用程序"已编程"到0x4000、但该映像实际上从0x0而不是0x4000开始。  

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

    尊敬的 Charles:

    谢谢。 我已修改链接器的起始地址 及其工作方式。

    BOOT_serial 在 UART 0上工作。 我想使用 UART1。 如果我将根据 UART1修改 boot_serial bi_UART.c,则它将在 ?

    或建议需要修改其他文件

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

    您好!

     是的、您只需将 UART0修改为 UART1即可、但它应该起作用。 但是、请记住、EVM 板仅将 UART0路由到用于 COM 端口的 ICDI 调试探针。 如果您想使用 UART1、则需要有一个 USB 转 UART 桥接芯片。

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

    尊敬的 Charles:

    明白。

    在转储代码时故意关闭器件电源 、然后无法与 LM 闪存加载程序通信。

    如何 在编程中解决/避免此问题?

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

    您好!

     有关 CRC 功能的详细信息、请参阅引导加载程序用户指南。  https://www.ti.com/lit/pdf/spmu301。其理念是、如果在引导加载过程中断电、则只 能对固件进行部分编程。 当您再次加电或复位器件时、引导加载程序将检查您是否具有正确的 CRC 值。 否则、它将尝试再次启动加载固件。  

    这些帖子也可能有用。

    https://e2e.ti.com/support/microcontrollers/other/f/other-microcontrollers-forum/953150/tm4c123gh6pge-bootloader-corrupted-not-working-properly-after-the-device-power-down-when-flashing/3522062#3522062