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.

[参考译文] MSP430FR2633:刷新引导时、程序不工作

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1116339/msp430fr2633-the-program-does-not-work-when-the-boot-is-refreshed

器件型号:MSP430FR2633

大家好、

以下是客户可能需要您帮助的问题:

客户使用自定义引导加载程序。 引导程序有问题、需要修改。 但产品是密封的、因此他们需要使用应用程序来刷写引导程序。

原始引导和应用程序 cmd 文件如下所示:

引导的指令跳转到应用程序:asm (" mov &0xEDFE、PC;");

由于新的引导程序大于原始的引导程序、因此不能使用该应用程序直接刷新引导、因此设计了两个应用程序:App1和 App2。App1主要用作传输。 程序从原始引导程序跳转到 app1、app1重定向中断矢量、然后跳转到 App2;App2接收数据并将其存储在存储器中(存储器空间是原始 boot+app1)。 相关的 cmd 文件如下所示:


A 到 B:成功

B 到 C:App2接收和存储数据。 当它被存储到0xF400时、程序不起作用(它们在更新引导时使用打印调试信息来监视程序、并且发现程序在程序接收到引导程序数据后无法运行。 它在断电和重新启动后也无法运行)。

他们猜可能是由 INT 区域引起的。 当应用程序刷新引导时、将使用中断。 这可能是因为应用程序刷新时会重写 APP1的 INT 中断矢量、并且无法找到中断、并且中断不起作用。

谢谢、 此致、

耶鲁李

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

    您好、Yale、

    我不确定我是否了解客户方法。 请更正以下假设:

    • 客户需要增加引导的大小
    • App1被设计为立即跳转到 APP2
    • App2是一个特殊的一次性引导加载程序、它将更新系统自定义的'boot'引导加载程序

    是这样吗?

    此外、客户重定向中断的策略是什么? 我不理解您在上面发布的代码。

    请注意、SYSRIVECT 可用于更改中断表的位置:

    客户为什么不使用 BSL? 如果客户认为他们无法使用 BSL、则仍然可以将 BSL 源代码作为引导加载程序操作的示例。  

     请参阅 https://www.ti.com/tool/MSPBSL

    客户是否有非密封装置可用于试验? 这是理想情况、因此它们可以避免锁定密封器件?

    此致、

    Evan

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

    您好 Evan、

    没错。

    我知道他现在为什么这么设计:

    因为他想更新引导、而不是使用引导来更新应用程序。

    请注意他最初的引导程序上的以下说明:

    [引用 userid="514648" url="~/support/microcontroller /msp-lower-power-microcontroller 组/msp430/f/msp-lower-microcontroller -forum/1116339/msp430fr2633-the-program-do-do-mode-do-do-de-when -boot-is 刷新"] asm (" mov 0xEDFE"、quot[];quote[p[]

    谢谢、此致  

    耶鲁李

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

    您好、Yale、

    如果客户应用和/或引导使用中断、则他们不能依赖"INT (APP1)" 0xF400-0xF300来转发 IRQ、因为在某些情况下新的引导代码会覆盖它、对吧?

    我建议更新中断表以直接指向新的 ISR (位于0xEDFE)或改用 SYSRIVECT。

    希望这会有所帮助。 如果您有更多问题、请告诉我。

    此致、

    Evan

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

    您好 Evan、

    感谢您的后续支持。 很抱歉、这种延迟确认。

    谢谢、此致

    耶鲁李