TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] TMS320F28379D:TMS320F2837xD 现场固件更新过程

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/949485/tms320f28379d-tms320f2837xd-field-firmware-update-procedure

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

您好!

我计划在我的定制设计中使用 TMS320F2837xD。 然后再继续执行后续步骤。 我需要 一些有关 TMS320F2837xD 现场固件更新的信息。

根据我的理解 、TMS320F2837xD 将支持 I2C 引导模式。 已参考 "TMS320F2837xD 双核 Delfino 微控制器" TRM 中的4.9.4.4 I2C 引导模式部分。

I2C 引导模式配置设置可通过使用https://www.ti.com/lit/an/sprt720/sprt720.pdf?ts=1603132051489&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FLAUNCHXL-F28379D"中的"独立引导模式"设置来完成

参考上述文档。 我需要进行以下更改才能从 I2C 引导。

GPIO-72和84 (BOOTCTRL 引脚)分别设为1'b 和1'b、即 GetMode

OTP_KEY = 0x5A

OTP_BMODE = 0x05 (I2C-A)

因此、上述序列通过后。 引导 ROM 将开始将存储在从地址0x50的 I2C EEPROM 中的应用固件加载到 RAM 中、并开始执行应用。 我的理解是否正确?

如何将 OTP_KEY 和 OTP_BMODE 设置为所需值。 如何将数据写入我所需的操作。

引导 ROM 将包含 I2C 引导代码"C:\ti\c2000\C2000Ware_DigitalPower_SDK_3_00_01_00\c2000ware\libraries\boot_rom\f2837xd\revB\rom_sources\F2837x_bootrom\cpu01-bootrom\source "。 默认情况下,此引导 ROM 是否预装载了所有引导装载程序支持?

根据我的理解、CCS 将生成.hex 文件、该十六进制文件应加载到 I2C EEPROM (0x50)中。 只有在引导模式下、I2C 引导 ROM 才能从 EEPROM 中获取应用固件并加载到 RAM 中并开始执行。 那么、在这里、我的查询是如何将我的应用程序编程到 I2C EEPROM 中。 我们是否有我可以使用的任何参考设计?

-->由于在 I2C 引导 ROM 中以及在 TRM 中,我发现了引导加载程序。 我找不到有关引导程序员的任何信息。 那么、我是否需要在多主控模式下将另一个微控制器连接到同一 EEPROM、并需要将.hex 文件编程到 EEPROM。 或 TMS320F2837xD 可以实现这一点。 如果 TMS320F2837xD 可以、我需要如何使器件保持引导编程器模式并将应用固件更新为 I2C EEPROM。

我是否可以将应用固件更新到 TMS320F2837xD 闪存(256Kx16)中提供的闪存中、而不是使用 I2C EEPROM。 是否需要执行该操作。 我认为我需要使用来自主机编程器的 UART。

"C:\ti\c2000\C2000Ware_DigitalPower_SDK_3_00_01_00\c2000ware\utilities\flash_programmers\serial_flash_programmer"。 我的理解是否正确? Dow 我们有任何将应用固件加载到闪存中的参考设计。 以及我需要从主机使用的接口。 我想拥有我的定制独立闪存编程器。  

此致、

Prasanna

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

    Prasanna、一个 SME 明天就会回来。 谢谢、Sira

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

    [引用 user="Prasannakumar M N"]

    参考上述文档。 我需要进行以下更改才能从 I2C 引导。

    GPIO-72和84 (BOOTCTRL 引脚)分别设为1'b 和1'b、即 GetMode

    OTP_KEY = 0x5A

    OTP_BMODE = 0x05 (I2C-A)

    因此、上述序列通过后。 引导 ROM 将开始将存储在从地址0x50的 I2C EEPROM 中的应用固件加载到 RAM 中、并开始执行应用。 我的理解是否正确?

    [/报价]

    是的、没错

    [引用 user="Prasannakumar M N"]

    如何将 OTP_KEY 和 OTP_BMODE 设置为所需值。 如何将数据写入我所需的操作。

    [/报价]
    请注意、OTP 是一次性可编程的、因此请确保首先遵循引导 TRM 一章中的仿真引导详细信息。 您可以使用 CCS 闪存实用程序(连接到器件、转至 Tools->onChip flash)或器件应用程序对 OTP 进行编程。 对于应用、请参阅 C2000Ware (\device_support\f2837xd\examples\CPU1\blinky_with _DCSM)中的。

    [引用 user="Prasannakumar M N"]

    引导 ROM 将包含 I2C 引导代码"C:\ti\c2000\C2000Ware_DigitalPower_SDK_3_00_01_00\c2000ware\libraries\boot_rom\f2837xd\revB\rom_sources\F2837x_bootrom\cpu01-bootrom\source "。 默认情况下,此引导 ROM 是否预装载了所有引导装载程序支持?

    根据我的理解、CCS 将生成.hex 文件、该十六进制文件应加载到 I2C EEPROM (0x50)中。 只有在引导模式下、I2C 引导 ROM 才能从 EEPROM 中获取应用固件并加载到 RAM 中并开始执行。 那么、在这里、我的查询是如何将我的应用程序编程到 I2C EEPROM 中。 我们是否有我可以使用的任何参考设计?

    [/报价]
    是的、所有这些引导加载程序都已包含在 ROM 中。 这些源用于参考和/或通过 ROM 进行调试。
    我不知道一个参考设计、但在 C2000Ware 中、有一个 I2C EEPROM 示例可修改为写入 EEPROM。

    [引用 user="Prasannakumar M N"]
    -->由于在 I2C 引导 ROM 中以及在 TRM 中,我发现了引导加载程序。 我找不到有关引导程序员的任何信息。 那么、我是否需要在多主控模式下将另一个微控制器连接到同一 EEPROM、并需要将.hex 文件编程到 EEPROM。 或 TMS320F2837xD 可以实现这一点。 如果 TMS320F2837xD 可以、我需要如何使器件保持引导编程器模式并将应用固件更新为 I2C EEPROM。
    [/报价]
    这会因您的设计而异。 选择 I2C 引导模式后、如果 EEPROM 十六进制密钥不正确、它将引导至闪存。 因此、一旦您进入闪存应用程序、如果您需要更新、您的应用程序可以切换到一种模式、在该模式下、它使用一些通信外设接收新应用程序、然后对 EEPROM 进行编程。 然后您可以重置器件、它将加载新的 EEPROM 映像。 这只是一个想法。

    [引用 user="Prasannakumar M N"]
    我是否可以将应用固件更新到 TMS320F2837xD 闪存(256Kx16)中提供的闪存中、而不是使用 I2C EEPROM。 是否需要执行该操作。 我认为我需要使用来自主机编程器的 UART。

    "C:\ti\c2000\C2000Ware_DigitalPower_SDK_3_00_01_00\c2000ware\utilities\flash_programmers\serial_flash_programmer"。 我的理解是否正确? Dow 我们有任何将应用固件加载到闪存中的参考设计。 以及我需要从主机使用的接口。 我想拥有我的定制独立闪存编程器。

    [/报价]
    是的、这是正确的实用程序。 请参阅应用手册 :https://www.ti.com/lit/sprabv4

    此致
    Chris

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

    Chris、

    感谢您提供详细信息、我可能需要更多的澄清。 请查看我的在线评论。

    请注意、OTP 是一次性可编程的、因此请确保首先遵循引导 TRM 一章中的仿真引导详细信息。 您可以使用 CCS 闪存实用程序(连接到器件、转至 Tools->onChip flash)或器件应用程序对 OTP 进行编程。 对于应用、请参阅 C2000Ware (\device_support\f2837xd\examples\CPU1\blinky_with _DCSM)中的。

    >>您的意思是、通过使用 JTAG、我需要将器件保持在仿真模式并更新 OTP_KEY 和 OTP_BMODE。 正如您提到的、通过使用器件应用程序、我也可以通过 OTP 进行编程。 应用固件可用于访问 DCSM 寄存器并更改 BMODE。 我的理解是否正确?

    这会因您的设计而异。 选择 I2C 引导模式后、如果 EEPROM 十六进制密钥不正确、它将引导至闪存。 因此、一旦您进入闪存应用程序、如果您需要更新、您的应用程序可以切换到一种模式、在该模式下、它使用一些通信外设接收新应用程序、然后对 EEPROM 进行编程。 然后您可以重置器件、它将加载新的 EEPROM 映像。 这只是一个想法。

    >>假设我的 EEPROM 十六进制密钥也正确、这意味着它将开始运行我的应用程序(只考虑我的应用程序固件版本1.4)、并且我需要更新新版本的应用程序固件(以免为1.5)、我如何将器件保持在引导编程模式。 其他一些通信意味着支持哪些模式。

    引导 ROM,固件无法正确修改?

    是的、这是正确的实用程序。 请参阅应用手册: ++

    >>该实用程序使用来自主机 PC 的 UART 命令并将固件更新为闪存。 但我想从主控制器获取 I2C 数据并更新闪存。 这是可能的。 闪存内核就像在闪存中保留第二级引导加载程序。 它可以接收 I2C 数据并将其编程到闪存/EEPROM 任何内容。 要对十六进制文件进行解码以及如何对其进行编程,请参阅您所述的应用手册。

    我可以从何处获取闪存内核的源代码。 以及它所在的位置。 如何更新闪存内核?

    此致、

    Prasanna

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

    你好

    [引用 user="Prasannakumar M N"]

    请注意、OTP 是一次性可编程的、因此请确保首先遵循引导 TRM 一章中的仿真引导详细信息。 您可以使用 CCS 闪存实用程序(连接到器件、转至 Tools->onChip flash)或器件应用程序对 OTP 进行编程。 对于应用、请参阅 C2000Ware (\device_support\f2837xd\examples\CPU1\blinky_with _DCSM)中的。

    >>您的意思是、通过使用 JTAG、我需要将器件保持在仿真模式并更新 OTP_KEY 和 OTP_BMODE。 正如您提到的、通过使用器件应用程序、我也可以通过 OTP 进行编程。 应用固件可用于访问 DCSM 寄存器并更改 BMODE。 我的理解是否正确?

    [/报价]

    引导仿真模式允许您在 RAM 中测试引导配置值、以确保设置正确。 然后您可以更放心地对 OTP 进行编程,因为一旦设置 OTP,OTP 就无法更改。 您可以使用应用程序进行编程、这只是另一个选项。 同样,一旦在 OTP 中设置了引导模式,则无法更改它。 我假设大多数用户都通过 CCS 闪存实用程序进行设置。

    [引用 user="Prasannakumar M N"]

    这会因您的设计而异。 选择 I2C 引导模式后、如果 EEPROM 十六进制密钥不正确、它将引导至闪存。 因此、一旦您进入闪存应用程序、如果您需要更新、您的应用程序可以切换到一种模式、在该模式下、它使用一些通信外设接收新应用程序、然后对 EEPROM 进行编程。 然后您可以重置器件、它将加载新的 EEPROM 映像。 这只是一个想法。

    >>假设我的 EEPROM 十六进制密钥也正确、这意味着它将开始运行我的应用程序(只考虑我的应用程序固件版本1.4)、并且我需要更新新版本的应用程序固件(以免为1.5)、我如何将器件保持在引导编程模式。 其他一些通信意味着支持哪些模式。

    [/报价]

    使用 EEPROM 中的有效密钥、I2C 引导加载程序将始终将该应用加载到 RAM 中以运行。 按照您所述设置引导 GPIO 后、该 I2C 引导加载程序将在每次器件复位时运行。 您的应用将需要一种方法对 EEPROM 进行重新编程、然后拉取器件复位、器件复位将运行新的应用。 如何实现这一点、具体视您的设计而决定。 在 RAM 中运行的应用程序可以通过 SCI、I2C、CAN 等确定更新固件的时间、并将其编程到 EEPROM。 完成后、可以重置器件以运行更新后的应用程序。

    [引用 user="Prasannakumar M N"]

    >>该实用程序使用来自主机 PC 的 UART 命令并将固件更新为闪存。 但我想从主控制器获取 I2C 数据并更新闪存。 这是可能的。 闪存内核就像在闪存中保留第二级引导加载程序。 它可以接收 I2C 数据并将其编程到闪存/EEPROM 任何内容。 要对十六进制文件进行解码以及如何对其进行编程,请参阅您所述的应用手册。

    我可以从何处获取闪存内核的源代码。 以及它所在的位置。 如何更新闪存内核?

    [/报价]

    我们提供的闪存内核适用于 SCI、您可以将它们用作参考、以便使用 I2C 创建内容。 闪存内核位于 C2000Ware 中(\device_support\f2837xd\examples\dual)

    此致

    Chris