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:基于闪存的引导加载程序问题

Guru**** 2391315 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1190169/tm4c129xnczad-flash-based-bootloader-issue

器件型号:TM4C129XNCZAD

尊敬的先生:

Tiva 库中给出的示例用法。

我正在使用基于闪存的引导加载程序。

配置 UART 0的引导加载程序代码位于地址0x0000上

应用程序代码位于地址0x4000上。

用于转储.bin 文件的 LM 闪存加载程序。

它在工作。

现在、当通过 Lm 闪存加载程序@0x4000应用程序地址转储新文件时、通信因电源 故障而中断。  

现在无法恢复先前的一个程序。

我的问题是

1.如果编程转储被任何东西中断,则我之前的程序将在重新启动设备后保留?(在我的情况下不是这样)

我们如何再次转储或重新启动 过程

2.如果程序中断、则再次尝试通过 LM 闪存加载程序转储、则不会响应接受转储(如 UART 0正在使用)

3.如所附 文件启动代码步骤中所示,我们必须编写或在示例中提供。 我们使用 Keil RV MDK。

我想您已经在 Tiva 库中给出了示例、这意味着它已经过验证、并且已经有了步骤  

对存储器进行初始化、将引导加载程序从闪存复制到 SRAM

请建议  

此致、

Rajesh

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

    您好 Rajesh、

    您会看到、现在如果引导加载程序配置了0x4000的 APP_START_ADDRESS、并且该地址似乎有效的应用程序代码、即使应用程序代码未完全加载、它也会启动应用程序而不是引导加载程序。

    防止这种情况的两种最佳方法如下:

    1) 1)添加一个可被切换的 I/O、此 I/O 可被用来强制引导加载程序运行。 标准实现在检查有效的应用程序代码之前、引导加载程序会轮询 I/O 引脚以检查电平、如果匹配高电平或低电平、则忽略应用程序代码检查并进入引导加载程序。  这在闪存引导加载程序中随 可配置的 Forced_update 参数一起提供。

    2)将验证检查添加为引导加载程序的一部分。 在确认已刷写完整映像之前、不允许执行代码。 如果验证失败、引导加载程序会返回到等待新应用程序代码的状态。 这可以通过闪存引导加载程序中的 CHECK_CRC 功能来完成(需要对应用程序进行一些调整、您必须阅读使用情况)、也可以通过本应用手册 https://www.ti.com/lit/pdf/spma083中所述的更高级的过程来完成

    此致、

    Ralph Jacobi