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.

[参考译文] MSP430F2619:修复不同固件的密码

Guru**** 2562970 points
Other Parts Discussed in Thread: MSP430F2619

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/603781/msp430f2619-fix-password-for-different-firmwares

器件型号:MSP430F2619

大家好、客户使用 MSP430F2619。 他们希望使用 BSL 更新 MSP 中的固件。 他们生产的固件版本不同、适用于不同的应用。 由于 BSL 的密码是中断表的内容、因此所有版本的密码都可能不同。 他们可以使用相同的密码固件吗?

此致、Holger

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果中断表不同、则密码不同。 不能使用其他密码。

    如果提供了无效密码(请参阅数据表中表5的脚注7)、则可以禁用闪存擦除功能、但这必须在旧固件中完成。 (或者更新之前的批量擦除是否会成为问题?)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HS WG-FAE 您好、

    Clemens 的回答正确。 遗憾的是、此类器件具有有限的 BSL 安全特性。 BSL 密码通过中断矢量表进行设置。 如果两个固件之间的中断矢量表没有变化、则它们将具有相同的密码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为解决这个问题的最佳方法是让所有使用的中断矢量指向矢量空间正下方的中间分支表。  分支表的内容可能会因版本而异、但所有版本的中断矢量都是相同的、因此密码将始终相同。  0xFFFE 处的复位矢量将始终指向0xFFDC、例如、其中包含一条分支指令、指向复位代码的实际地址、该地址可能会因版本而发生变化。  这会占用少量的内存、并由于额外的跳转而为每个中断服务增加一些额外的时间。  此外、这是一种在项目开始时需要采用的方法。   如果不同版本的密码已经不同、则它们是不同的、我不知道您可以做什么。

    另一种方法是修改 BSL 代码、使其接受正确提供的任何密码。  如果可以修改 F2691的 BSL 代码、则更改可能只会是一个字节或字、将条件跳转更改为非条件跳转。  嗯、我没有尝试过、但它似乎应该起作用。  但是、如果它无法修改、那么我必须返回跳转表。

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

    这里有一个很好的建议。 这是一项非常前期的工作、需要对链接器进行一些操作、但可能会起作用。 正如您所说的、如果这不是在一开始就完成的、那么密码将会有所不同。

    至于您的第二个建议,很遗憾 F2xxx 器件的 BSL 是 ROM,不可修改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Jace H">您好、George、

    这里有一个很好的建议。 这是一项非常前期的工作、需要对链接器进行一些操作、但可能会起作用。 正如您所说的、如果这不是在一开始就完成的、那么密码将会有所不同。

    至于您的第二个建议,很遗憾 F2xxx 器件的 BSL 是 ROM,不可修改。

    [/报价]

    是的、这需要预先进行一些额外的工作、但是您只需执行一次-对于这个芯片或者对于任何需要 BSL 密码的 MSP430芯片。  从那时起、它可以是复制粘贴代码。  我仅在汇编器中对这些器件进行编程、并使用 NWN 汇编器。   因此、我不知道使用 CCS 或 IAR 在 C 语言中获取地址有多困难。  他们可能会坚持将实际复位代码地址放在0xFFFE 上、这不是您想要的。   使用我不太清楚的汇编器可能会更容易做到这一点。

    我已经为 G2553做了一些 BSL 工作、这与密码类似。  可以使用/Reset 和 Test 上的特殊信令放弃正常的 BSL 进入过程、并在确定是否启动 BSL 的信息存储器中设置引导代码、然后执行您需要执行的任何操作来解决密码问题。  这需要复制 TI BSL 代码、直到测试密码为止、更改密码、使其始终测试正常、然后跳回 ROM 代码。  但我怀疑这比跳转表更有效。

    最后、我为低成本 G2231编写了一个 BSL、它本身没有 BSL。  我使用了 TI 提供的示例代码的修改版本、还编写了可驱动该过程的 Windows 刷写程序(相当于 BSLDEMO2)。 当然、该协议比 F2619或 G2553 BSL 更原始。  它只做一件事情、那就是刷写整个主存储器、即使它大部分是 FF 也是如此。  当然、没有密码可供处理。  有人可以为 F2619做同样的事情、但由于有更多的空间、它可以更优雅。

    我要把所有的东西放在一起、在某个地方张贴、但不确定我应该在哪里做。  也许是 Github。  有什么建议吗?  

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

    您为 G2231制作了一个 BSL、真是太棒了。 43OH 论坛可能是一个发表这方面信息的好地方、因为它有很多 MSP430爱好者、他们有着类似的想法和下载内容。 话虽如此、我们确实为没有 BSL 或没有可修改 BSL 的器件提供了 MSPBOOT。 (用于 FRAM 器件的 MSPFRBOOT。)

    此外、我们的某些器件只有 BSL 密码由中断表指定(MSP430F1xxx、2xxx、4xxx 和 MSP430G2xxx 器件)。 MSP430F5xx/6xx 和 MSP430 FRAM 器件具有 BSL 密码、可以独立于 ISR 表进行设置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Jace H"] MSP430F5xx/6xx 和 MSP430 FRAM 器件具有 BSL 密码、可以独立于 ISR 表进行设置。

    这是如何工作的? SLAU319、SLAU550和 SLAU610都说密码是中断矢量表的顶部。

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

    [引用用户="Jace H">您好、George、

    您为 G2231制作了一个 BSL、真是太棒了。 43OH 论坛可能是一个发表这方面信息的好地方、因为它有很多 MSP430爱好者、他们有着类似的想法和下载内容。 话虽如此、我们确实为没有 BSL 或没有可修改 BSL 的器件提供了 MSPBOOT。 (用于 FRAM 器件的 MSPFRBOOT。)

    此外、我们的某些器件只有 BSL 密码由中断表指定(MSP430F1xxx、2xxx、4xxx 和 MSP430G2xxx 器件)。 MSP430F5xx/6xx 和 MSP430 FRAM 器件具有 BSL 密码、可以独立于 ISR 表进行设置。

    [/报价]

    例如、我从未想过将闪存到 G2553中的 MSPBOOT 代码的大小。  此外、似乎还需要使用 Launchpad。  我的 G2231 BSL 使用嵌入 式 USB 转串 行适 配器、要求用户仅使用 USB 电缆来刷写新固件-最初为定制 BSL 格式化芯片后、无需 Launchpad。  我怀疑 G2231太小、无法使用 MSPBOOT。  无论如何、我的项目基本上是对在 MSP430项目板中嵌入 USB 转串行适配器的想法的检查。  具有 micro-USB 连接器的适配器模块现在很小、 并且成本低于2美元、因此使用此类假 COM 端口的可行定制 BSL 协议将是替代 Launchpad 成本以及平民将 Launchpad 连接 到项目电路板以通过 JTAG 进行固件更新的复杂性的好方法。

    感谢43OH 论坛的建议。  我当然可以在那里发布项目的相关信息、但我需要在网上提供源代码和可执行文件、以便人们可以在有兴趣的情况下下载这些代码和可执行文件。  我想 Github 是这样做的自然之地。  只是 我在那里创建了一个帐户后收到了大量垃圾邮件。

    很好的一点是、后面的部分提供了单独的密码。  就在您和我之间、早期器件上的整个密码并不是 TI 的最佳工作。

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

    我从 BSL 创建程序中获得了一些有关后续器件的 BSL 密码的说明。 似乎我将这个系统与 JTAG 密码在这些器件中的工作方式混合在一起。 为了澄清这一点、MSP430F5xx/6xxx 和 FRAM 器件上的 BSL 密码由诸如 MSP430F2xxx/4xx/G2xx 器件的中断矢量决定。 为了增加混乱、BSL 文档指出密码可以由用户定义、但这会产生误导性、因为它们是由中断矢量决定的。 从技术上讲、您可以添加初始化的 ISR 矢量来定制 BSL 密码、但我不会将其定义为用户定义的密码。 将更新此语言以反映这一事实。 很抱歉造成混淆。