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.

[参考译文] TM4C129EKCPDT:更新程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/593905/tm4c129ekcpdt-update-program

器件型号:TM4C129EKCPDT

您好!

首先、我要提到的是、我不熟悉 TM4C129EKCPDT。

我有以下任务:在 TM4C129EKCPDT 系统上、我正在运行一个应用程序、该应用程序将从内部闪存存储并引导。 我希望能够更新这个程序、因此我有一个基于应用的传输(通过以太网协议)、它检索更新并将其存储在闪存中的某个位置。 完成该操作后、系统将重新启动、并将在该扇区中查看、如果存在某个位集、引导加载程序将重新编写整个应用程序、擦除该位并重新启动。

我已经看到、有用于从 SPI 等运行的引导加载程序、但我目前不知道从哪里开始。 有人能给我一个提示吗?

此致

Micky

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、
    此处提供简单指南:
    -在链接器上定义存储器结构、并保留一个闪存区域以存储新固件。
    -创建某种协议以确定您正在接收新固件并对其进行验证。
    -收到后、设置标志以确定下一个引导的行为。
    -在闪存的小区域中使用单独的引导加载程序,以验证更新的状态-如有必要,将新的引导加载程序复制到主内存扇区中。
    您还可以实现一些其他可能的功能。 例如、如果新固件在 x 秒后不允许看门狗(新固件损坏)、则可以恢复旧固件、甚至可以使用外部控制消息强制恢复。
    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bruno、
    您是指 TM4C 的闪存镜像模式吗? 有没有示例? 我在 API 中找不到这种情况、实际上在其他地方也找不到。
    此致
    Micky
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Micky、
    我没有提到任何特定的示例。 以上"步骤"只是您尝试实现的目标的基础。
    闪存操作可通过 Tivaware 中的闪存驱动程序来完成。
    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    布鲁诺
    在 API 中、我只能看到用于擦除、写入等的函数 但不支持微行模式。 因此、该作业将设置寄存器并尝试错误... sigh。
    Micky
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Micky、
    你想要实现的全部目标不是2天的努力... 我们花了将近半年时间才有一个可靠的图书馆...
    但是的、它基本上只是从一个位置"移动字节"到另一个位置、并设置智能标志。
    我可以分享、来自 Tivaware 的闪存 API (以及硬件本身)一直非常可靠地工作。 我们确实使用 EEPROM 来存储这些条件标志、并且有一个单独的自定义引导加载程序来决定要执行的操作。
    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    布鲁诺

    我今天完成了引导加载程序、它运行得很好。 我只是没有使用闪存微镜、因为我没有找到好的文档、很显然没有 TI 官员在这里给出任何建议。

    至少感谢您的基本建议!

    BTW:您是否使用了 TI 的 RTOS 或 BIOS? 您是否有经验、是否有良好的性能?

    此致
    Micky

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    这太棒了-而且很快-恭喜!
    我没有使用 RTOS/BIOS、这里的编码全部是 Tivaware 和"纯"C。我在其他文章中讨论了是否采用 TI-RTOS、至少对于任务调度控制、但我们仍然使用某种自制调度程序。
    特别是在引导加载程序上、它没有任何调度、甚至没有主循环-它只是一个非常小的顺序程序、用于检查 EEPROM 标志并决定是否移动闪存块。
    谢谢、
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bruno、
    这也是我的猜测、在"普通" C 语言中工作。我上次为 C55x 系列评估 DSP BIOS (大约10年前)时、不是很推荐-但10年是很长的时间、所以我的问题...
    引导加载程序实际上是我的应用程序工作流程中的一小段代码和一些惯例、但它始终是这样:问题一旦得到解决就会消失。
    此致
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、
    请注意、我没有真正投票反对使用 RTOS。 我刚才讨论过、对它进行了大量评估、但尚未实施。
    但它似乎具有一些优势:非常灵活的调度引擎、易于控制 CPU 负载、以及一些其他的铃声和口哨-这根本不能证明我们放弃有限但有效的当前解决方案的努力是合理的。
    布鲁诺