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.

[参考译文] TMS320F28377S:引导 ROM 问题

Guru**** 2448780 points
Other Parts Discussed in Thread: TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/891771/tms320f28377s-boot-rom-questions

器件型号:TMS320F28377S

团队、  

我的客户正在其中一个电路板上使用 TMS320F28377S。 他们希望为 TMS320F28377S 芯片实现引导加载程序解决方案、以便通过 RS-485轻松升级固件。 以下是他们的问题、我希望您能帮助解决:

根据我的理解、每个 TMS320F28377S 芯片的 ROM 都带有编程的"引导 ROM"、无法更改或更改、对吧?

在这种情况下、GPIO72和 GPIO84都连接到上拉电阻器。 根据我对引导 ROM 工作原理的理解、引导模式:GPIO72 = GPIO84 = 1会导致引导 ROM 跳转到闪存地址、对吧?

由于引导 ROM 无法更改或更改、 由于连接到 GPIO72和 GPIO84的电流上拉电阻器、是否可以在引导 ROM 跳转到闪存地址后更改 SCI 闪存内核引导加载程序固件并将其放入闪存(如果选择了 SCI 引导加载程序模式、通常会转到 RAM 地址)?

如果是、是否还可以更改用户应用固件并将其放置在闪存中的其他位置(通常会转到预定义的闪存地址、但 SCI 闪存内核现在将位于该地址)?

我参考了 TI 有关 C2000中串行闪存编程器的应用手册、还查看了有关引导加载程序的其他开发人员论坛文章。 但是、如果您能为我解答这些问题、我将不胜感激!

谢谢

Viktorija

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据我的理解、每个 TMS320F28377S 芯片的 ROM 都带有编程的"引导 ROM"、无法更改或更改、对吧? 
    [BC]正确

    在这种情况下、GPIO72和 GPIO84都连接到上拉电阻器。 根据我对引导 ROM 工作原理的理解、引导模式:GPIO72 = GPIO84 = 1会导致引导 ROM 跳转到闪存地址、对吧?
    [BC]更正 、因为引导 ROM 无法更改或更改、 由于连接到 GPIO72和 GPIO84的电流上拉电阻器、是否可以在引导 ROM 跳转到闪存地址后更改 SCI 闪存内核引导加载程序固件并将其放入闪存(如果选择了 SCI 引导加载程序模式、通常会转到 RAM 地址)?

     [BC]是的、您可以将内核放置在闪存中

      如果是、是否还可以更改用户应用固件并将其放置在闪存中的其他位置(通常会转到预定义的闪存地址、但 SCI 闪存内核现在将位于该地址)?

    [BC]您只能跳转至应用程序或内核的一个地址。 通常情况下、应用程序和应用程序中包含的内核决定是否调用内核。

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

    谢谢! 后续问题:

    1.如果选择了 SCI 引导加载选项、原始引导 ROM 会将 SCI 闪存内核放入 RAM 中、这意味着入口点为0x00000000、对吧?

    2.原始 SCI 闪存内核会将用户应用程序放入闪存中、这意味着入口点为0x00080000、对吧?

    3.如果在引导 ROM 中选择了引导至闪存选项、执行将跳转到闪存入口点、对吗?

     

    如果所有三个问题的答案都是肯定的:

    因此、可以重新路由 SCI 闪存内核、将其编程到闪存(而不是 RAM)中、入口点为0x00080000 (而不是0x00000000)、对吧? 如果是,如何做到这一点? 更具体地说、我应该在哪里/如何为 SCI 闪存内核更改此入口点?

    2、可以重新路由用户应用程序、以便在新地址(而不是0x00080000)编程到闪存中、对吧? 如果是,如何做到这一点? 更具体地说,在哪里/如何更改 User Application 的此入口点?

    3.那么、在引导 ROM 中选择引导至闪存选项后、是否可以从0x00080000的入口点执行 SCI 闪存内核、然后跳转到位于新闪存地址(上面#2)的用户应用程序?

     

     或者、您建议使用以下方法:

    1.将 SCI 闪存内核源代码(初始化 SCI-A 通信、自动波特锁定、接收和回送从软件接收的数据、以及将接收到的数据复制到主用户应用程序起始地址)集成到用户应用程序项目中、并具有0x00080000的入口点? 因此、当选择"引导至闪存"选项后引导 ROM 跳转至闪存时、位于0x00080000的新用户应用程序将首先检查是否接收到"A"(自动波特率锁定)。 如果接收到"A"、则继续使用 SCI 闪存内核代码。 如果未收到"A"并且超时、请继续使用用户应用程序代码。 是这样吗?

    谢谢!

    Viktorija

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

    1.如果选择了 SCI 引导加载选项、原始引导 ROM 会将 SCI 闪存内核放入 RAM 中、这意味着入口点为0x00000000、对吧?

    [BC]引导 ROM 将 SCI 内核放入 RAM 中、但它可以位于任何 RAM 地址。 不一定位于0x0。

    2.原始 SCI 闪存内核会将用户应用程序放入闪存中、这意味着入口点为0x00080000、对吧?

    [BC]同样、这可以位于应用程序编译到的任何地址

    3.如果在引导 ROM 中选择了引导至闪存选项、执行将跳转到闪存入口点、对吗?

    [BC]是的

     

    如果所有三个问题的答案都是肯定的:

    因此、可以重新路由 SCI 闪存内核、将其编程到闪存(而不是 RAM)中、入口点为0x00080000 (而不是0x00000000)、对吧? 如果是,如何做到这一点? 更具体地说、我应该在哪里/如何为 SCI 闪存内核更改此入口点?

    [BC]您无法使用引导 ROM。 您必须获取原始内核映像(例如映像1)。 并为 SCI 内核编译另一个映像以保留在闪存中(例如映像2)-您可以通过简单地更改 CCS 中的构建配置(BANK0_NO_LDFU)来实现此目的。 现在将映像1加载到 RAM、并使用该加载映像2至闪存。

    2、可以重新路由用户应用程序、以便在新地址(而不是0x00080000)编程到闪存中、对吧? 如果是,如何做到这一点? 更具体地说,在哪里/如何更改 User Application 的此入口点?

    [BC]您需要在链接器命令文件中进行更改(查找*。cmd)

    3.那么、在引导 ROM 中选择引导至闪存选项后、是否可以从0x00080000的入口点执行 SCI 闪存内核、然后跳转到位于新闪存地址(上面#2)的用户应用程序?

    [BC]是的

     

     或者、您建议使用以下方法:

    1.将 SCI 闪存内核源代码(初始化 SCI-A 通信、自动波特锁定、接收和回送从软件接收的数据、以及将接收到的数据复制到主用户应用程序起始地址)集成到用户应用程序项目中、并具有0x00080000的入口点? 因此、当选择"引导至闪存"选项后引导 ROM 跳转至闪存时、位于0x00080000的新用户应用程序将首先检查是否接收到"A"(自动波特率锁定)。 如果接收到"A"、则继续使用 SCI 闪存内核代码。 如果未收到"A"并且超时、请继续使用用户应用程序代码。 是这样吗?

    [是]

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

     或者、您建议使用以下方法:

    1.将 SCI 闪存内核源代码(初始化 SCI-A 通信、自动波特锁定、接收和回送从软件接收的数据、以及将接收到的数据复制到主用户应用程序起始地址)集成到用户应用程序项目中、并具有0x00080000的入口点? 因此、当选择"引导至闪存"选项后引导 ROM 跳转至闪存时、位于0x00080000的新用户应用程序将首先检查是否接收到"A"(自动波特率锁定)。 如果接收到"A"、则继续使用 SCI 闪存内核代码。 如果未收到"A"并且超时、请继续使用用户应用程序代码。 是这样吗?

    [是]

    关于该过程、您是否有示例代码供我们参考?

    Feng

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

    您好!

    是否有人可以在这方面提供帮助? 非常感谢。

    Feng

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

    如何 将 SCI 闪存内核源代码(初始化 SCI-A 通信、自动波特锁定、接收和回送从软件接收的数据、以及将接收到的数据复制到主用户应用程序起始地址)集成到用户应用程序项目中???

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

    有人可以提供帮助?

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

    很遗憾、我们没有可共享的示例代码。 您可以自行开发。

    使用 Baskaran 提供的建议。

    此致、

    曼诺伊