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.
您好!
我计划在我的定制设计中使用 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