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.

[参考译文] MSP430G2553:跳过范围

Guru**** 2534260 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/579560/msp430g2553-jump-out-of-range

部件号:MSP430G2553

我想在0xFFE0处的中断向量下面设置一个跳转表。  引导程序将指向跳转表,因此所有固件版本的引导程序都相同,希望我不会遇到BSL密码问题。  但是,有些跳跃毫无疑问将远远超出JMP的范围,我相信目前的PC是+/- 1024。  对于这些人来说,我不知道是否有任何巧妙的手法,可以“长”跳下去。  我曾想过将目的地址写入PC。  这样做是不是最好的办法,还是有更好的办法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将任意16位地址和指令操作码压缩到单个16位字中并不是一个"巧妙的技巧"。 (请参阅鸽子孔原理。)

    只需使用"BR #address"指令,它实际上是"MOV #address,PC"的简写,使用两个词。

    但为什么您遇到BSL密码问题? 要重写整个闪存,您不需要密码,您可以禁用“错误时擦除密码”功能,而对于调试,JTAG/SBW将更合适。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Clemens Ladisch"]

    但为什么您遇到BSL密码问题? 要重写整个闪存,您不需要密码,您可以禁用“错误时擦除密码”功能,而对于调试,JTAG/SBW将更合适。

    [/引述]

    非常感谢您的回复。

    这是我第一次参加BSL冒险活动,所以我可能不理解,也许你可以帮忙。   基本的问题是,在这个项目中,可能会有 许多固件版本可由不同的作者编写,最终用户将是“平民”,他们将能够跳转这些版本进行试用。  并非所有设备都要更新到最新版本,至少最初不是这样。  因此,密码问题在于了解用户的*从*更改哪个版本,以及需要为每个版本维护密码文件。  当然,如果所有用户都需要购买Launchpad和使用JTAG,那么所有这一切都可以避免,但如果可能,我只想通过在项目板上嵌入价格便宜得多的CP2102和USB插孔来避免这种情况。   然后,他们需要刷新新固件的唯一硬件是USB电缆。

    我认为一个解决方案是使0xFFE0处的中断向量表,因此口令 对所有版本都是相同的,方法是 让这些向量指向 一个跳转表,该表将 指向 真正的服务例程。   只有跳转表的内容会在不同版本之间更改。  我很乐意考虑任何更好的解决办法。

    但我可能对大规模擦除问题感到困惑。  我知道,如果0xFFDE处有一个空字,则会禁用erase-on-wrong-password功能。  但是,大容量擦除命令又如何呢?  我的理解是,即使在0xFFDE处使用空词, 批量擦除命令仍会擦除INFOA中的校准数据,而这是我必须使用的命令才能访问所有FF。  为了保留 INFOA, 我必须使用段擦除命令,当然,这些命令是受密码保护的命令。  我错了吗?  是否有办法在不知道密码的情况下清除除INFOA之外的所有内容?

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

    将更便宜的CP2102和USB插孔嵌入到项目板上

    这是否比使用带有USB BSL的MSP430F55xx更便宜?

     质量擦除命令仍将擦除INFOA中的校准数据

    MSP430Tm使用启动加载器(BSL)进行编程的2.4 .4.4 部分说:

    BSL版本2.01 及更高版本支持自动清除保护信息闪存的Locka位。 当从重置条件输入BSL时,BSL将清除Locka,以大量擦除闪存,包括信息存储器。 在应用程序中输入BSL时,用户软件应确保在启动BSL之前将Locka写入为1。 否则,在BSL大规模擦除期间不会擦除信息闪存。

    这听起来好像您可以在进入BSL之前确保设置了Locka (即,不要切换它)。

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

    [报价用户="Clemens Ladisch"]

    将更便宜的CP2102和USB插孔嵌入到项目板上

    这是否比使用带有USB BSL的MSP430F55xx更便宜?

     质量擦除命令仍将擦除INFOA中的校准数据

    MSP430Tm使用启动加载器(BSL)进行编程的2.4 .4.4 部分说:

    BSL版本2.01 及更高版本支持自动清除保护信息闪存的Locka位。 当从重置条件输入BSL时,BSL将清除Locka,以大量擦除闪存,包括信息存储器。 在应用程序中输入BSL时,用户软件应确保在启动BSL之前将Locka写入为1。 否则,在BSL大规模擦除期间不会擦除信息闪存。

    这听起来好像您可以在进入BSL之前确保设置了Locka (即,不要切换它)。

    [/引述]

    我从未看过任何带USB的MSP430s,因此我不知道该选项。 此时,我们看到的是带有DIP处理器的通孔板。  CP2102将以预焊接模块的形式添加,安装在板上,成本为1.45美元。

    到目前为止,将通过连接USB电缆并在/reset和测试时提供BSL输入模式来输入BSL。  我相信这将从重置条件进入。  因此,在BSL启动之前,我没有办法做任何事情。  我一直不清楚如何从我的申请中输入BSL。  我是否直接跳到0x0C00?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SLAU319的表21显示了如何对BSL进行软件调用。