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:编程和固件更新问题

Guru**** 2436440 points
Other Parts Discussed in Thread: TMS320F280025C, C2000WARE, TIDM-02011

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/989034/tms320f280025c-programming-and-firmware-update-questions

器件型号:TMS320F280025C
主题中讨论的其他器件: C2000WARETIDM-02011

你好!  我有一位客户询问 below....please 帮助建议。

我们有关于 MCU TMS320F280025C SCI 固件更新的问题、希望获得有关的建议。

  1. 是否有任何 Linux 驱动程序/库可用于帮助完成固件更新任务?
  2. C2000 微控制器的串行闪存编程中,我们发现列表中没有列出 MCU 既没有列出闪存内核 A 也没有列出 B。我是否可以确切地知道 MCU 支持哪一个?

从表3-1中可以看出、为了通过 UART 启用固件程序、我们必须在 GPIO32为低电平、GPIO24为低电平时强制为高电平、然后进行电源复位。

当 MCU 引导时、ROM 中的 SCI 加载程序将开始执行、并等待主机自动锁存。 请问这是否是我们在 ROM 中使用 SCI 加载程序时唯一应该注意的设置? 我是否错误地进行了任何设置以通过 UART 启用固件编程?

除了上述问题、我们还想知道主机控制器是否能够在正常运行期间以及在 SCI 固件更新期间通过 UART 向 MCU 发送复位命令? 或者、我们必须从主机控制器触发到 MCU 的复位、以便在固件更新前后更改引导模式??

谢谢!

Meredith

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

    Meredith、

    我们有一个 F28002x SCI 闪存内核+ Windows 主机端可执行文件、可以使用它。 我们在可执行文件中没有 Linux 方面的支持、但客户可以创建这种支持。

    是的、sprabv4需要使用 F28002x ( 闪存内核 B)进行更新。 F28002x 闪存内核是最近开发的、但 C2000Ware 中尚未发布。

    3、是的、还需注意的是、用于 SCIRX/TX 的默认 GPIO 是 GPIO28/29。

    是的、主机可以在 SCI 引导模式下通过 UART 向 MCU 发送复位命令。 SCI 闪存内核支持多个命令-复位/擦除/验证/固件更新等

    您的最后一个问题更多是实现选择、由客户决定、即他们是希望在闪存引导模式下正常引导、还是仅为固件更新切换到 SCI 引导、还是始终仅在闪存引导模式下引导。 在后一种情况下、它们将需要某些额外的步骤、例如闪存内核需要位于器件的闪存中。

    谢谢、

    Sira

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

    您好,Sira,

    感谢您的快速输入!  后续问题如下

    输入1:“我们在可执行文件中没有 Linux 端支持,但客户可以创建它。”

    问题1:我们是否可以参考任何源代码或文档?

    输入2:“F28002x 闪存内核是最近开发的,但在 C2000Ware 中仍没有发布。”
    问题2:我们是否可以通过任何方式获取内核? 我们需要它来执行一些评估测试。

    输入3:“您的最后一个问题更多是实施选择,由客户决定,他们是希望在闪存引导模式下正常引导,还是只为固件更新切换到 SCI 引导,还是始终仅在闪存引导模式下引导”

    问题3:我们的计划通常是在闪存引导模式下引导、仅在固件更新时切换到 SCI 引导模式。
    在闪存引导模式期间、当 MCU 固件/应用程序正在运行时–固件/应用程序是否能够发出复位信号?

    问题4:由于我们的主机将通过 UART 与 MCU 固件/应用进行通信、如果 MCU 应用能够发出复位命令、则主机可以向 MCU 应用发送 UART 消息并要求其发出复位命令。
    这样、我们就不需要一条物理 GPIO 线(从主机到 MCU 复位引脚)来触发 MCU 复位、我的理解是否正确?

    谢谢、

    Meredith

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

    Meredith、

    1.我想更好地了解 Linux 方面的要求。 客户尝试做什么? 从 Linux 主机更新软件? 如果是、就像我提到的、当前串行闪存编程器可执行文件是一个只适用于 Windows 的应用程序。 我对此没有太多的了解。

    2.是的、我正在为此创建 MySecure 软件版本。 您可以通过电子邮件向我发送详细信息。 它应在下周中旬就绪。

    3.帮助我更好地理解这一点。 应用程序正在运行、您希望 MCU 复位。 为什么? 切换到 SCI 引导并进行固件更新? 例如、可以通过启用看门狗而不对其进行处理来实现这一点。 必须有一些外部/内部触发器。

    这与上面的3有关。 好的、我认为这里有一个细节。 主机通过 UART 与闪存内核通信、闪存内核支持命令、包括复位。 现在、当应用本身运行时、通常不支持任何主机通信。 除非您在应用程序中内置了此支持。 我可以为您提供一个示例- LFU 或实时固件更新。 在这里、我们在闪存引导模式下执行所有操作、即、我们永远不会切换到 SCI 引导(即使固件本身是通过 SCI、即 UART 下载的)。 关键是闪存内核始终驻留在闪存中。 闪存中为其保留了一些空间。 该应用程序具有 SCIRX ISR、使其能够知道何时收到主机命令、解析该命令以及跳转到闪存内核以执行进一步操作。

    可以在此处执行类似的操作。 如果您的应用正在运行、并且您希望主机向其发送一条重置 MCU 的命令。 您需要一个捕获此命令的 SCIRX ISR、然后需要一些分析此命令并执行必要操作的逻辑(在本例中、假设启用看门狗并让其过期、从而使器件复位)。 只是一个想法。

    谢谢、

    Sira

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

    您好,Sira,

    请参阅下面的其他输入/问题...

    1. 是的、我们希望从 Linux 主机更新 MCU 固件/应用程序。 因此、我们正在寻找有关如何构建我们自己的 Linux 编程器的参考。  您是否可以提供(或指向我们)任何指导来提供帮助?

    2.谢谢!

    3、 是的、我们希望重置 MCU、以便可以将其切换至 SCI 引导模式以进行固件更新。   

    4.我们的项目要求是在主机和 MCU 之间建立通信通道,因为我们希望 MCU 应用程序侦听来自主机的命令并按需执行特定任务(例如打开继电器或返回传感器读数)。 此通信通道将使用 UART (RS-485)实现、我们将在 MCU 应用中构建此通信支持。

    由于我们已经建立了此 RS-485通信通道,因此我们认为我们也可以利用它来“告知”MCU 在我们要执行固件更新时自行复位。

    关于 LFU -根据我的理解,我们选择的 MCU (TMS320F280025C)仅包含单组闪存,因此它只能支持“脱机固件更新”,而不支持实时固件更新(需要双组闪存)。 您能帮助检查我的理解是否正确吗?

    谢谢!

    Meredith

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

    尊敬的 Meredith:

    遗憾的是、在 Linux 方面、我们没有更多的资源可供选择。 串行闪存编程器源代码应可轻松移植到 Linux 端应用(客户决定使用的任何一个)。

    F28002x 上也可以使用 LFU。 存在某些限制-关键 ISR 需要在 RAM 之外运行、同样、闪存 API 和循环等待的代码、而闪存 API 运行时也需要从 RAM 运行。 在 LFU 结束时、器件通过看门狗复位。

    实际上、我要创建的 MySecure 是一个 F28002x LFU + SCI 闪存内核联合示例、即它将同时具有这两个示例。

    请告诉我是否可以提供进一步的帮助。

    谢谢、

    Sira

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

    Sira——下面有更多的跟进…

    • 遗憾的是、在 Linux 方面、我们没有更多的资源可供选择。 串行闪存编程器源代码应可轻松移植到 Linux 端应用(客户决定使用的任何一个)。
      • 您能给我们指出编程人员的 Windows 源代码吗?
    • F28002x 上也可以使用 LFU。 存在某些限制-关键 ISR 需要在 RAM 之外运行、同样、闪存 API 和循环等待的代码、而闪存 API 运行时也需要从 RAM 运行。 在 LFU 结束时、器件通过看门狗复位。
      • 感谢您的分享。 您能不能说明上述限制带来了哪些影响(即 ISR 和代码必须耗尽/从 RAM 中运行)? 这是否意味着该方法会消耗大量 RAM?
    • 实际上、我正在创建的 MySecure 软件版本是 F28002x LFU + SCI 闪存内核联合示例、即它将同时具有这两个版本。
      • 有关 F28002x LFU 的更多问题:
        • Q1:听起来像 F28002x LFU 非常酷。 在您看来、与通过 SCI 进行离线固件更新相比、F28002x LFU 的缺点是什么? LCU 是否需要大量额外的开发工作?
        • 问题2:如果使用 F28002x LFU 且由于某些意外原因(例如断电)导致固件更新过程失败、主机是否仍然能够与 MCU 通信并重试 LFU?
        • Q3:当我们从 TI 购买 F28002x MCU 时、是否已启用 LFU 功能(即 SCI 闪存内核已驻留在闪存中)? 回答此问题有助于我们更好地了解生产流程的要求

    谢谢、

    Meredith

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

    Meredith、

    在 C2000Ware 中、路径如下:

    实用程序\flash_programmers\serial_flash_programmer\serial_flash_programmer

    2、是的、由于 ISR +闪存 API (除非 ROM 中提供、这对于 F28002x 是真的)+包装程序函数、RAM 的使用会更高

    3.  

    Q1.我不认为是这样、因为我们提供了参考示例、并且我们已经为其提供了编译器支持。 我确实承认、目前、LFU 的许多配套资料都以双闪存组(F28004x)为中心。 我们在此基础上构建了 TI.com 上的 TID (TIDM-02011)、其中显示了完整的系统示例。 但我们一直收到客户对单个闪存组 LFU 示例的请求、这就是我们刚刚创建简单 LED 单组示例的原因。

    问题2. 如果您使用单组闪存执行 LFU、并且闪存中有一个正在更新的映像、并且更新失败、那么基本上您没有工作映像。 因此、您无法重试 LFU、因为闪存中没有能够支持 LFU 的底层应用程序。 因此、此时您必须进行离线固件升级。

    问题3. 否、LFU 是一种软件功能。 因此、客户需要在生产线上自行将闪存内核等集成到闪存中。

    谢谢、

    Sira