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.

[参考译文] CCS/UCD3138064A:UCD3138064A 的引导加载程序代码

Guru**** 2531950 points
Other Parts Discussed in Thread: UCD3138064A, UCD3138064, UCD3138

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/743929/ccs-ucd3138064a-bootloader-code-of-ucd3138064a

器件型号:UCD3138064A
主题中讨论的其他器件: UCD3138064UCD3138

工具/软件:Code Composer Studio

尊敬的 TI,

我想知道 UCD3138064A 中是否有任何引导加载程序代码。我已经开始阅读技术参考手册。但是、我认为一个更好的示例、这将让我知道它的工作原理。

谢谢、

Larry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定我们专门为 UCD3138064提供的是什么。 引导加载程序没有太多的调用、因此我们没有公开可用的引导加载程序。
    所以、我可以问一个正确的问题、您能告诉我您需要哪种类型的引导加载程序:

    PMBus 或 UART (或来自 EEPROM 的 SPI 或 I2C)

    您是否使用一半的程序存储器来运行电源、然后将新程序下载到另一半? 如果是这样、您不需要引导加载程序、而是需要在主程序中添加动态开关。

    请注意、064和064A 应与引导加载程序完全相同。 从引导加载程序的角度来看、没有变化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bower,先生

    大家好、我对引导加载程序很熟悉。阅读技术参考手册后、我对它的概念仍然很模糊。我想了解实际功能。因此、如果可以的话、我真的需要知道如何使用 PMBus 引导加载程序进行升级。

    当您提到动态开关时,我不知道它是什么。但我知道 UCD3138有1*32k pflash,而 UCD3138064(A)中有2*32k pflash 块。是否有动态开关用于选择其中一个块?

    谢谢、

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

    您好 Larry

    引导加载程序的功能是允许应用程序固件的现场更新。 因此、您可以在微控制器离开生产工厂后更新应用固件。 它在器件上作为单独的程序运行,因此您将拥有一个引导加载程序和一个单独的应用程序,其中包含运行电源的代码。

    引导加载 程序只运行一个通信处理程序、将来自外部主机(例如 PMBus、SPI、I2C、UART)的命令转换为应用程序更新所需的操作、例如闪存擦除、闪存编程和闪存更新验证。 因此、主机可以通过引导加载程序向其理解的引导加载程序发送命令来更新应用程序固件。

    出于参数考虑、假设您使用的是 UCD3138。 您有32kB 的程序闪存可用于在 UCD3138上存储固件、并且您已将前2kB 分配给引导加载程序。 剩余的30KB 可用于存储您的应用程序。

    在正常运行期间、加电/复位后、引导加载程序将在应用程序之前执行。 例如、它需要通过校验和测试测试30KB 应用程序的完整性、然后如果校验和测试通过、引导加载程序将控制权传递给应用程序。 因此、在正常运行期间、引导加载程序在上电/复位后启动时执行一次、在应用程序开始运行之前增加了一个小延迟、但这一点很难察觉。

    例如、假设应用程序正在运行、并且主机需要升级应用程序固件、因为您要向固件添加某些功能、或者您发现了必须修复的错误。 主机将向应用程序发送命令、指示其将控制权传递给引导加载程序。 应用程序将关闭电源、然后将控制权传递给引导加载程序。

    主机将执行的操作

    -向引导加载程序发送命令、指示其擦除30KB 应用程序。 引导加载程序将此命令转换为擦除30KB 闪存的操作。

    -发送一组包含应用程序新二进制文件的"写入闪存"命令。 然后、引导加载程序将执行以下操作:将这些命令转换为使用新二进制文件更新30KB 闪存的操作。

    -在应用程序更新后向引导加载程序发送命令、以在应用程序上运行完整性测试(例如、校验和或 CRC 测试)、作为验证更新的一种方法  

    假设该测试通过、主机最终将向引导加载程序发送命令、指示其运行新的应用程序。

    UCD3138系列包含存储在 ROM 中的引导加载程序(我们将其称为"引导 ROM"程序)。 引导 ROM 可与 Fusion PMBus GUI 配合使用(该 GUI 还具有专为生产环境设计的版本)。 我们的许多客户都使用了引导 ROM 和 PMBus GUI。 它的优势是无需自己编写引导加载程序。 此外、您还可以使用应用程序的所有程序闪存。 从开发工作的角度来看、这无疑是最简单的途径。 更多   详细信息、请参阅 www.ti.com/.../sniu028a.pdf 第437页。

    或者、如果您想编写自定义引导加载程序、我们提供了一些使用 PMBus 和 UART 的示例、如果您想沿此路线行驶、我可以共享这些示例。

    正如 Ian 提到的、我们还提供了一种"动态"解决方案、甚至不需要在固件升级期间关闭电源。

    如果您有更多问题或意见、请告诉我。

    此致

    Cormac

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Larry
    关于"动态"解决方案-正如我提到过的、这允许在根本不关闭电源的情况下进行升级。

    在此解决方案中、您将拥有存储在器件上的应用程序的两个相同副本、对于 UCD3138064A、一个副本位于程序闪存块0中(大小为32kB)、另一个副本位于程序闪存块1中(大小为32kB)。

    如果要升级固件、主机将发送一条命令、将控制权从应用程序的第一个副本传递到第二个副本、然后在第二个副本运行时发送命令以更新第一个副本、 然后、在第一个副本更新后、主机将指示第二个副本将控制权传递回第一个副本、然后在第一个副本处于控制状态时发送命令以更新第二个副本。

    关键是电源固件持续运行、更新期间无需关闭。

    UCD 中将主机命令转换为操作(例如擦除闪存和写入闪存)的通信处理程序在两个副本的后台进程中运行、因此应用固件可以像引导加载程序那样解释从主机发送的此类命令。 因此、引导加载程序被"缝入"应用程序、此解决方案不需要专门用于引导加载程序的单独闪存区域。

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

    由于您的详细解释、我知道引导加载程序是什么。PC (作为主机)可以通过 PMBus 向引导加载程序发送命令。然后引导加载程序解释相应的命令并运行应用程序。这是我以前不知道的 UCD3xxx 器件 GUI 的用途。

    最后我了解了启动闪存和启动 ROM。我认为它们都存在、直到我注意到"我们的许多客户都使用了启动 ROM 和 PMBus GUI。 它的优势是无需自己编写引导加载程序。 此外、您还可以使用应用程序的所有程序闪存。 "

    但是、我真的想在阅读《技术参考手册》后再试一下。但我无法从任何方面进行开发。如果您能使用 PMBus 和 UART 为我提供示例、我将不胜感激。

    谢谢、
    Larry
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Larry
    我很高兴你现在对这一点有了更好的了解。
    您能否与我共享您的电子邮件地址、我会向您发送一些示例代码?
    此致
    Cormac
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Cormac:
    感谢您的帮助。我的电子邮件是 larry.he@wpi-group.com。
    谢谢、
    Larry
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Larry
    没问题。
    我将准备一些示例代码和说明、并将在下周初向您发送电子邮件。
    此致
    Cormac
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Larry
    我正在准备一个适用于所有器件和许多不同引导类型的通用引导加载程序工程。
    在进一步思考后、我认为最好在准备好时与您分享、因为我的正在进行的工作版本将会有错误、并且没有记录、我认为此时它会使人困惑而不仅仅是启发。
    完成可能需要几周时间。
    同时、您能否联系您当地的 TI 销售代表处理此请求、以便我们可以离线处理?
    此致
    Cormac
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Cormac、
    您是说我可以按下按钮"这解决了我的问题"、并向销售代表寻求帮助吗?我可以认为您将在几周后通过个人邮件为我提供支持吗?
    谢谢、
    Larry
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Larry

    是的、最好联系当地的销售代表、如果项目符合目的、我也会与您联系一次、如果可以的话。

    如果同时需要更多帮助、您可以打开另一个线程。

    非常感谢

    Cormac