主题中讨论的其他器件: UCD3138064、 UCD3138
工具/软件:Code Composer Studio
尊敬的 TI,
我想知道 UCD3138064A 中是否有任何引导加载程序代码。我已经开始阅读技术参考手册。但是、我认为一个更好的示例、这将让我知道它的工作原理。
谢谢、
Larry
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.
工具/软件:Code Composer Studio
尊敬的 TI,
我想知道 UCD3138064A 中是否有任何引导加载程序代码。我已经开始阅读技术参考手册。但是、我认为一个更好的示例、这将让我知道它的工作原理。
谢谢、
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