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**** 2392215 points
Other Parts Discussed in Thread: UNIFLASH, EK-TM4C1294XL

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

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

器件型号:TM4C129XNCZAD
主题中讨论的其他器件:UNIFLASHDK-TM4C129XEK-TM4C1294XL

尊敬的先生:

我已编译代码 boot_serial @0x0000并  通过在配置中选择 TM4C129X 开发板+JTAG、通过 LM 闪存加载程序转储.bin 文件

已阅读、bl_config.h 中设置了通过 UART 使能更新的固件

之后、我具有 bulid simpll blink 代码@0x4000位置、并 通过在配置@程序偏移量0x4000中选择 TM4C129X 开发板+JTAG 来通过 LM 闪存加载程序转储相同的代码

现在、我构建代码 @0x4000位置并通过 LM 闪存加载程序转储相同的位置 、方法是选择手动配置+接口串行 UART+Baud Rate 115200、但我得到了错误。

什么是问题?

因为我在以正确的方式行事、或者有些事情出错。

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

    Abhijit、您好!

    [引用 userid="186046" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/987359/tm4c129xnczad-bootloader-with-tm4c129x @]之后、我将 simpll blink 代码@0x4000位置、并通过在配置程序偏移量0x4000[/quot]中选择 TM4C129X 开发板+JTAG、通过 LM 闪存加载程序转储相同的代码

    我认为这一步是你遇到问题的地方。

    加载引导加载程序后、应使用该加载程序来加载偏移量为0x4000的程序。

    当通过 JTAG 编程时、即使使用偏移地址也是如此、我认为它可能是通过引导加载程序写入的。 我从未尝试过、但如果发生这种情况、我也不会感到惊讶。 如果您使用 CCS Uniflash、您可以在对引导加载程序进行编程后读取闪存、然后在通过 JTAG 对偏移量0x4000进行编程后再次进行检查、您可以看到引导加载程序代码是否仍然存在于0x0000。

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

    这次我通过 LM+JTAG 使用 boot_serial (@0x0000位置)。

    2.在 UART 模式(@0x4000)转储中 boot_demo1到 LM 成功。

    3.尝试通过 Lmin UART 模式(@0x4000)加载我的代码、但收到错误"与电路板建立通信失败"

    什么是问题?

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

    尊敬的 Ralph:

    我的过程与第一次提到的线程一样正确。

    我还有 Stellaris LM3S9B96演示板。 我已经对它们执行了引导加载程序活动。

    我已经编译了代码 boot_serial @0x0000并  通过在配置中选择 LM3S9B96开发板+JTAG 来通过 LM 闪存加载程序转储.bin 文件

    之后、我添加了 boot_demo1代码@0x1800位置、并 通过 LM 闪存加载程序转储相同的位置、方法是选择 LM3S9B96开发板+JTAG in configuration @ program offset 0x4000、方法是选择 erase necessary pages、这样引导加载程序就不会擦除。

    现在、我构建代码 @0x180000位置、 并通过选择手动配置+接口串行 UART+Baud Rate 115200并 成功运行、通过 LM 闪存加载程序转储相同位置。

    我再次重复该过程、并通过 UART 转储 BOOT_DE演 示1、它也起作用。

    但 TM4C129X 情况并非如此。 什么是问题?

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

    Abhijit、您好!

    [引用 userid="186046" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/987359/tm4c129xnczad-bootloader-with-tm4c129x/3648273 #3648273]3. 尝试通过 Lmin UART 模式(@0x4000)加载我的代码、但收到错误"无法与电路板建立通信"

    您如何触发引导加载程序以准备好接收另一个程序?

    该演示设置为具有一个触发器、以再次调用引导加载程序。

    如果不使用该触发器、则引导加载程序不会自动连接。 因此、仅当用户想要更新应用程序时、才会更新应用程序。

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

    我已参考以下链接。

    https://e2e.ti.com/support/microcontrollers/other/f/908/t/366681?TM4C129x-BOOT-Loader

    这就是为什么不成功写入 E2E 的原因。

    在此链接中、首先使用 boot_serial、然后通过 UART (编译器- CCS)进行代码转储、就像我在使用 Keil 编译器一样。  

    按照相同的行转储 BOOT_SERIAL @0x0000位置、然后使用带 UART 的 LMFlash 加载程序转储我们的代码。

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

    Abhijit、您好!

    好的、我现在明白了。 我不建议使用该代码、它已使用了7年。 让我帮您处理较新的代码。

    我们的 TivaWare SDK 中提供了完全最新的引导加载程序示例、但我们确实没有适合 DK-TM4C129X 的良好闪存引导加载程序演示项目。

    EK-TM4C1294XL 的闪存引导加载程序也可用于 DK-TM4C129X。 此项目在  TivaWare 的 EK-TM4C1294XL 示例文件夹下是 boot_serial。

    接下来、我修改了 DK-TM4C129X 的 BOOT_DEMO_UART 项目、以使用闪存引导加载程序。 随函附上  供您使用的电子邮件地址:e2e.ti.com/.../boot_5F00_demo_5F00_uart_5F00_flash.zip

    现在、这个设置应该 能够可靠地协同工作、我已经测试过、我能够使用闪存引导加载程序多次重新加载引导演示项目。

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

    尊敬的 Bob:

    我正在使用 Keil 编译器。 我已按照建议使用 Boot_serial、并在 Keil 环境中使用您的 zip 文件。

    在 BOO_serial 中 、有一个 bl_config.h       、其中定义了 APP_START_ADDRESS 0x10000和 VTABLE _START_ADDRESS 0x10000。

    使用配置为 Tm4C129X 的 LM 闪存加载程序开发板+JTAG 转储 boot_serial.bin 映像@0x0000位置

    编译我的项目应用 程序 Boot_demo_uart_1@) x10000和转储、配置相同(LM 闪存加载程序+TM4C129X 开发板+JTAG)、具有擦除必要页选项。

    但不显示任何内容。

    附加工程文件以供参考。  

    我在处理过程中出错的地方?

    e2e.ti.com/.../Boot_5F00_Project.zip

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

    Abhijit、您好!

    您需要在.cmd 文件中为使用引导加载程序加载的程序设置 app_base 地址、以匹配  bl_config.h 文件中定义的 app_start_address。

    我们刚刚发布了一个新文档、其中有一个部分对其进行了很详细的描述。 请查看我们的 TivaWare 入门用户指南 的第6部分:https://www.ti.com/lit/pdf/SPMU373

    它将引导您完成所需的所有修改。

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

    尊敬的 Ralph:

    谢谢。 工作  

    我已经修改了命令,现在它正在工作。 我 还可以通过 UART 上传代码。

    如果要将 UART 从0更改为1,则需要进行哪些修改。 BOOT_serial 还需要更改?

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

    Abhijit、您好!

    正确、您需要使用 UART0_BASE 将所有内容更改为 UART1_BASE 、并且您需要在 bl_config.h 中更改引脚配置以反映 UART1的新引脚。

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

    尊敬的 Ralph:

    我正在通过 UART 转储代码。在此过程中、电源突然关闭、然后无法与 LM Flash 加载程序工具通信。

    编程的方式或预防措施是什么。 为避免这种情况、需要修改哪些内容。

    为什么它不会保存之前的代码、因为代码没有完全转储到控制器。

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

    Abhijit、您好!

    引导加载程序操作无法还原原始固件。 如果引导加载程序进程中断、映像因此损坏、 则引导加载程序需要一种方法来从该过程中恢复。 对于 ROM 引导加载 程序、可以配置 GPIO 以在加电时手动触发引导加载程序。 对于闪存引导加载程序、有一个 CRC 功能用于检查映像的有效性、如果映像无效、则重新启动引导加载程序进程。

    启用后、每次上电或器件复位时、引导加载程序将检查加载的映像是否具有正确的 CRC 值。 如果发现该值不正确、则会再次触发启动加载过程、以便您可以写入新映像。

    有关这一点的详细信息、请参阅 TivaWare 引导加载程序用户指南中  CHECK_CRC 配置下的第10节: https://www.ti.com/lit/pdf/spmu301