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.

[参考译文] LAUNCHXL-F28P65X:了解 TI 65x 板上通过 CAN 实现的引导模式、LFU 和固件更新

Guru**** 2540720 points
Other Parts Discussed in Thread: SYSCONFIG, TIDM-02011

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1431061/launchxl-f28p65x-understanding-boot-modes-lfu-and-firmware-updates-through-can-on-ti-65x-boards

器件型号:LAUNCHXL-F28P65X
主题中讨论的其他器件:SysConfigTIDM-02011

工具与软件:

尊敬的 TI 专家:

我目前正在通过 CAN 对65x 板进行固件更新、我对引导模式和 LFU 有一些疑问。  

我介绍了有关引导模式和外设引导的 LFU 和 TRF 的大多数可用文档。 根据我的理解、LFU 需要自定义引导加载程序、并且 CAN 内核以及能够刷写到指定闪存组中的闪存 API。 黄金映像入口点是地址 0x0008 0000的闪存组0。 自定义引导加载程序需要驻留在此地址、以检查 REV 以决定它需要分支到我的应用程序代码的闪存组。 闪存存储体的扇区2应包含 START、KEY 和 REV 的值。

在引导模式下、系统会在复位时检查特定的引导模式选择引脚、以确定引导模式。 配置的 BMSP 在 BOOTPINCONFIG 中定义、它位于用户 OTP 中的区域1或区域2、具体取决于所刷写位置的用户配置。

现在我的怀疑,

引导模式选择引脚将决定应该采用哪种引导模式。 在本例中、我希望通过 CAN 进行固件更新、因此假设我使用了3个 BMSP 来实现此模式。 谁应该做的工作,侦听 CANA 引脚,下载固件,闪存到闪存库等 引导 ROM 是否具有执行此操作的能力、或者我们是否必须编写我们自己的自定义引导加载程序来执行此功能。 如果我必须将自定义引导加载程序编写到应该放置在哪里? . 有哪些 BOOTDEF 值。 它在这里的意义是什么?  

2.您如何刷新 DCSM 以配置所需的配置。 我是否只需要在每个电路板上刷写一次应用程序代码。 我已在 SysConfig 中浏览过 DCSM、这就是我感到困惑的原因。  

3.在 LFU 中、应用程序根据主机系统的命令决定何时以及如何进行固件更新。 LFU 的建议方式是否要求闪存组0始终是黄金映像、并且是唯一具有组选择逻辑的映像? 当我刷写到新闪存组时、我是否要将应用程序代码和引导加载程序以及它们一起刷写到闪存组中。  

我对这些缺陷的理解也是一样的、因为我是第一次接触 TI 生态系统。 因此、如果我的任何一个表述有误、请纠正我。

提前感谢您

Ashwin Bhaskar A.

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

    尊敬的 Ashwin:

    1. 只要您 相应地配置了 BOOTPIN_CONFIG 和 BOOTDEF 位置、引导 ROM 就能够执行您所描述的操作。 在这种情况下、无需为 CAN 编写自定义引导加载程序、因为它位于引导 ROM 中。 我建议您参考 TRM 的第4.7.9节 、了解有关 BOOTDEF 配置选项的信息、这些选项确定引导加载程序使用哪些 GPIO 以及启用的引导选项(CAN、SPI 等)。  
    2. 我会就此向 DCSM 专家咨询、并在得到答案后立即与您联系。
    3. 如果尚未 阅读、请参阅此 LFU 应用手册。 如果您仍对此有疑问、我将咨询 LFU 专家。

    此致!

    Matt  

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

    尊敬的 Matt:

    感谢您的答复、

    我需要对引导 ROM 做一个后续说明。 我要配置3 BMSP 以使 CAN-FD 用于外设引导。 引导加载程序是否也支持 CAN-FD/MCAN 固件刷写?

    BOOTDEF 值到底是什么。 这些值是否对应于不同的 BMSP 配置或闪存入口点?

    关于 LFU、

    我已经浏览了无器件复位的 LFU 应用手册、我的问题仍然存在。 我们是否需要将自定义引导加载程序刷写到我们使用的每个闪存组。 并且闪存组0包含永久映像。

    还有这个问题的后续跟进  

    您如何准确地将引导加载程序链接到闪存组的扇区0中、并将应用程序代码链接到另一个扇区和闪存 API 中。 在通过 CAN 或任何外设权限发送之前、它将全部制成单个二进制文件。 ? 如何确保闪存存储在特定的闪存扇区中。

    再次,我是新手在这个如此正确的我,如果我的任何假设这是错误的。  

    此致  

    Ashwin Bhaskar A.

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

    尊敬的 Aswin:

    1. 是的、 F28P65x 支持 CAN 和 CAN-FD 引导加载。
    2. 您不一定需要3个 BMSP 来获得 CAN-FD 引导加载。 您可以将其视为预先指定的引导模式的自定义查找表。 BOOTPIN_CONFIG。 BMSP0-3配置要用于对表进行索引的 GPIO。  BOOTDEF。 BOOTDEFx 位置指定表的每个条目处的引导选项。 我强烈建议您阅读 TRM 的第4.4.3节 以了解示例用法。  
    Unknown 说:
    如何准确刷写 DCSM 以配置所需的配置

    为此、您可以通过 片上闪存工具或 SysConfig 配置 DCSM。 片上闪存工具允许您配置特定的段、同时 SysConfig 会强制您一次对所有 DCSM 进行编程。  

    以下是一些 DCSM/片上闪存工具参考:

    至于您的 LFU 问题、我将在专家的协助下解决这些问题。

    此致!
    Matt  

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

    Ashwin、

    我已经浏览了无器件复位的 LFU 应用手册、我的问题仍然存在。 我们是否需要将自定义引导加载程序刷写到我们使用的每个闪存组。 并且闪存组0包含永久映像。

    这取决于您如何对系统进行分区。 是否同时使用 CPU1和 CPU2并分别从闪存上运行不同的应用程序? 是否会在 CPU1和 CPU2上执行 LFU?

    我可以给您一个示例-假设您将闪存组0、1和2分配给 CPU1、将3、4分配给 CPU2。 假设您的应用程序大小正好适合1个闪存组。 然后、您可以在 CPU1上执行 LFU、方法是仅在组2中对 LFU 使用自定义引导加载程序、并使 CPU1的当前和未来固件应用程序位于组0和1中、以及两者之间的乒乓。

    对于 CPU2、假设应用程序大小适合1个闪存组(减去存储自定义引导加载程序所用的空间)、则您要将自定义引导加载程序存储在闪存组3和4中、并让 CPU2的当前和未来固件应用程序也驻留在组3和4中、并且在两者之间乒乓。 在这种情况下、您需要在两个组中使用自定义引导加载程序、因为无法同时读取/写入闪存组。 因此、如果应用程序从闪存组3执行、您需要对闪存组4进行编程、自定义引导加载程序需要从闪存组3运行。 反之亦然-当从闪存组4运行并且需要对闪存组3进行编程时、客户引导加载程序需要从闪存组4运行。

    还有这个问题的后续跟进  

    您如何准确地将引导加载程序链接到闪存组的扇区0中、并将应用程序代码链接到另一个扇区和闪存 API 中。 在通过 CAN 或任何外设权限发送之前、它将全部制成单个二进制文件。 ? 如何确保闪存存储在特定的闪存扇区中。

    这在我们的 LFU 参考设计(位于 TIDM-02011中)和用户指南 TIDUEY4中进行了说明。 从根本上来说、这是通过正确设置应用程序和自定义引导加载程序的链接器命令文件来实现的、并确保两者之间没有重叠。 这使它们能够安全运行、而不会相互干扰。 此外、您还可以使用 hex2000实用程序、轻松地将应用程序和自定义引导加载程序二进制文件组合到一个二进制文件中(如果这是您要使用的路径)。 例如、在这种情况下、组 x 上的客户引导加载程序不仅会对组 y 上的应用程序进行编程、还会对组 y 上的 APP+CUSTOM 引导加载程序进行编程。

    谢谢!

    SIRA

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

    您好、Matt  

    谢谢你的澄清的引导模式,我确实通过了你提到的部分,但我感到困惑. 现在很清楚  

    对于 DCSM、我将浏览这些文档、并尝试在仿真模式下在电路板上对其进行编程、以便更好地理解。 如果我有任何问题、我将在论坛上再提出一个问题。

    谢谢您的澄清。

    此致!

    Ashwin

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

    尊敬的 Sira:

    感谢您的答复  

    这取决于您对系统进行分区的方式。 是否同时使用 CPU1和 CPU2并分别从闪存上运行不同的应用程序? 是否会同时对 CPU1和 CPU2执行 LFU?

    目前、在我的用例中、我们只需要 CPU1。 目前、我们将仅从 CPU1运行应用程序。

    我可以举一个示例-假设将闪存组0、1和2分配给 CPU1、将3、4分配给 CPU2。 假设您的应用程序大小正好适合1个闪存组。 然后、您可以在 CPU1上执行 LFU、具体方法是仅在组2中使用 LFU 的自定义引导加载程序、让 CPU1的当前和未来固件应用程序位于组0和1中、并在两者之间交替使用。

    在本例中、我的自定义引导加载程序必须位于闪存组0入口地址中吗? 初始化后、引导 ROM 是否始终运行并检查闪存组0地址? 如果不是、我可以在哪里配置需要检查的闪存组? 因为我的引导加载程序需要具有组选择逻辑、所以此 LFU 能够正常工作?

    此外、在此示例中、引导加载程序单独位于1个闪存组中、并且能够对其他2个闪存组进行编程以进行固件更新?  

    [报价 userid="43439" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1431061/launchxl-f28p65x-understanding-boot-modes-lfu-and-firmware-updates-through-can-on-ti-65x-boards/5492619 #5492619"]仅适用于闪存组2中 LFU 的自定义引导加载程序、CPU1的当前和未来固件应用程序驻留在闪存组0和1中、并且在这两者之间乒乓。

    因此、我需要在两个固件中具有一个函数或任务、以帮助我跳转到闪存组2中的引导加载程序、以便能够正确地启动 LFU 过程?

    这在我们的 LFU 参考设计(位于 TIDM-02011中)和用户指南 TIDUEY4中进行了说明。 从根本上来说、这是通过正确设置应用程序和自定义引导加载程序的链接器命令文件来实现的、并确保两者之间没有重叠。 这使它们能够安全运行、而不会相互干扰。 此外、您还可以使用 hex2000实用程序、轻松地将应用程序和自定义引导加载程序二进制文件组合到一个二进制文件中(如果这是您要使用的路径)。 例如、在这种情况下、组 x 上的客户引导加载程序不仅会对组 y 上的应用程序进行编程、还会对组 y 上的应用程序+自定义引导加载程序进行编程。

    这是非常明确的感谢。 我会向大家详细介绍参考设计、如果还有其他问题、以后还会再来的。

    期待收到您的回复  

    提前感谢您  

    Ashwin

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

    高无光泽

    抱歉、我还有一个有关这个的问题、

    您不一定需要3个 BMSP 来获取 CAN-FD 引导加载。 您可以将其视为预先指定的引导模式的自定义查找表。 BOOTPIN_CONFIG。 BMSP0-3配置要用于对表进行索引的 GPIO。  BOOTDEF。 BOOTDEFx 位置指定表的每个条目处的引导选项。 我强烈建议您阅读 TRM 的第4.4.3节 以了解示例用法。  [报价]

    我对硬件的依赖性是什么,就像如果我需要把这些引脚从接头中出来,并通过导线在引导模式之间进行更改,这对我来说是一个很大的问题。 有什么解决方法吗? 我是否可以在软件端切换这些引脚?  

    问题是此时我的应用程序甚至无法加载、因此如果可能出现类似情况、我可以在哪里对其进行编程。

    在我的应用中、将引脚拔出并将其连接到主系统并不理想。 如果您能向我提供这方面的建议、我们将不胜感激。

    很抱歉、如果这是一个不合逻辑的问题。

    提前感谢您  

    Ashwin

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

    在本例中、我的自定义引导加载程序必须位于闪存组0入口地址中吗? 初始化后、引导 ROM 是否始终运行并检查闪存组0地址? 如果不是、我可以在哪里配置需要检查的闪存组? 因为我的引导加载程序需要具有组选择逻辑、所以此 LFU 能够正常工作?

    如果您将设备设置为从闪存引导、则可以选择多个闪存入口点。 默认位置可能是闪存组0中的位置、也可能是其开头。 该选项应位于器件 TRM 中。 因此、简单的方法是将其设置为使用默认的引导至闪存入口点地址、我想该地址位于闪存组0中、您应该将自定义引导加载程序放在那里。 不仅如此、应该在该地址恰好有一个函数、该函数会检查存储体是否包含有效的应用程序、这是最新的应用程序等、然后跳转到正确的应用程序入口点。 这些都在我们的 LFU 示例中进行了说明。

    此外、在此示例中、引导加载程序单独位于1个闪存组中、并且能够对其他2个闪存组进行编程以进行固件更新?  

    是的、这是一种实现方式。 您还可以将其驻留在两个存储体中(就像我在 CPU2案例中所描述的那样)。

    因此、我需要在两个固件中具有一个函数或任务、以帮助我跳转到闪存组2中的引导加载程序、以便能够正确地启动 LFU 过程?

    正确、我们的 LFU 示例中也对此进行了介绍。 有一条内联汇编指令(LB 或 LCR 连接到自定义引导加载程序中的特定地址)。

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

    我对硬件的依赖性是什么,就像如果我需要把这些引脚从接头中出来,并通过导线在引导模式之间进行更改,这对我来说是一个很大的问题。 有什么解决方法吗? 我是否可以在软件端切换这些引脚?  

    问题是此时我的应用程序甚至无法加载、因此如果可能出现类似情况、我可以在哪里对其进行编程。

    在我的应用中、将引脚拔出并将其连接到主系统并不理想。 如果您能向我提供这方面的建议、我们将不胜感激。

    如果您正在寻求实时固件更新方法、您的系统始终可以在闪存引导模式下启动、转到客户引导加载程序、分支到应用程序入口点、运行所需的应用程序、接受来自主机的固件更新命令、分支到自定义引导加载程序、通过所需的通信外设(CAN、SCI、...)接收来自主机的固件映像、对闪存进行编程、切换和运行新的应用。 无需设置 CAN 引导模式。  我希望这有道理。

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

    尊敬的 Sira:

    LFU 方面是非常清楚的感谢你,但在一个情况下,我的固件有故障(不完整),就像在代码本身有一个错误。 我的引导加载程序将始终分支到这个最新固件映像、我要求固件处于能够进行固件更新的状态、如果不是该状态、那么我就无法再次正确进行固件更新? 在这种情况下,如果我没有引导模式和固件更新的选项,那么我将需要通过 JTAG 闪存,这是不理想的,当我在现场部署我的产品。  

    因此、使用引导模式作为备用电源非常理想。 这就是我需要知道以下答案的原因  

    [报价用户 id="43439" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1431061/launchxl-f28p65x-understanding-boot-modes-lfu-and-firmware-updates-through-can-on-ti-65x-boards/5494169 #5494169"]

    我对硬件的依赖性是什么,就像如果我需要把这些引脚从接头中出来,并通过导线在引导模式之间进行更改,这对我来说是一个很大的问题。 有什么解决方法吗? 我是否可以在软件端切换这些引脚?  

    问题是此时我的应用程序甚至无法加载、因此如果可能出现类似情况、我可以在哪里对其进行编程。

    在我的应用中、将引脚拔出并将其连接到主系统并不理想。 如果您能向我提供这方面的建议、我们将不胜感激。

    [报价]

    我的问题的 LFU 部分是明确的.

    我只是想知道我所描述的是否可行,所以我可以审查我的选择。

    提前感谢您

    Ashwin

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

    尊敬的 Ashwin:

    是的、 可以实现。 本应用手册 介绍了一种无需通过外部源更改引导模式引脚即可进行固件更新的方法。 此操作在 F28004x 上完成、但可应用于任何器件。  

    此致、

    Matt

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

    您好、Matt

    我将通过这一过程,并尝试什么是图示. 感谢您的宝贵意见。

    此致

    Ashwin