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.

[参考译文] TMS320F280025C:实时固件升级、无需使用 OTP 存储器

Guru**** 2412050 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1190942/tms320f280025c-live-firmware-upgrade-without-using-otp-memory

器件型号:TMS320F280025C

大家好、TI gurus。

我想使用 I2C 端口升级软件而不使用 OTP 内存。

我已经阅读了以下材料:

 C2000 MCU 上具有器件复位功能的实时固件更新(修订版 A)(TI.com)

 TMS320F28x 引导特性和配置(修订版 A)

但无法详细了解我的应用程序的实时固件更新。

通过使用 F280025C、只有一个128KB 闪存组(闪存组0)无法使用(1)中的方法、因为它使用 F280049作为示例、并且它有两个闪存组。

我 注意  到、通过在 ROM 中使用闪存 API 可以减少 RAM 的使用、并且闪存不能同时读取/写入。

因此、执行此任务的唯一方法是将必要的函数移动到 RAM (包括 I2C 数据传输内核)、使用 ROM 闪存 API 读取新的固件包/将其写入闪存。

如果有其他方法、请告诉我。

下面  是几个问题:

1.收到新固件包后、如何设置下一次器件复位的入口点?

2.我是否需要修改引导选择表以将闪存入口点(如从扇区0更改为扇区4)、或者我可以 在新固件工程中将任何地址指定为链接器命令文件中的入口点?

此致、谢谢。

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

    您好、Chun-Lin、

    是的、对于 F28002x 器件、有一个闪存组可供使用、因此必须考虑这一点。 对于问题:

    1) 1)要为下一次器件复位设置入口点、您可以将链接器命令文件更改为将地址0x84000用于应用的开始部分。

    2) 2)无需自行修改引导选择表。 如果闪存存储器的扇区不可用、这种情况更适合、除非您希望始终从0x80000以外的位置启动闪存存储器。  

    谢谢、

    查尔斯

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

    感谢您的快速回复。

    我需要确认一件事。

    senario 是:第三次打开设备时、我加载新固件入口点0x84000、但没有修改引导表。

    器件将直接从0x84000执行代码或从0x80000 (由引导表设置)开始执行代码、然后跳转至0x84000?

    谢谢。

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

    您好、Chun-Lin、

    在这种情况下、如果器 件设置为默认闪存引导模式、则它将从引导表指示的0x80000开始、然后必须跳转到0x84000。   

    谢谢、

    查尔斯

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

    谢谢! 这对我们有 很大帮助!