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.

[参考译文] 编译器/MSP432E401Y:在闪存中共存2个应用。 主应用程序将跳转到第二个应用程序。 然后、第二个应用程序会更新主应用程序。

Guru**** 2586265 points
Other Parts Discussed in Thread: MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/794614/compiler-msp432e401y-coexist-of-2-apps-in-flash-main-app-jumps-to-the-second-app-then-second-app-updates-the-main-one

器件型号:MSP432E401Y

工具/软件:TI C/C++编译器

您好!

我希望您能帮我解决这个问题:我有一个通过 UART 连接到 MSP432E401Y 微控制器的4G 调制解调器。
我的目标:通过调制解调器接收新的闪存映像并更新我的主应用程序(无 RTOS)。

约束:我知道 SDK 中有一个引导加载程序示例: dev.ti.com/.../node
问题是我已经使用此引导加载程序通过以太网更新主应用程序。

在这种情况下、我想到的是闪存中有2个应用:一个是我的主应用、另一个是更新第一个应用的应用。
CPU 运行主应用程序、当它从调制解调器接收到指示我们应该更新应用程序映像的命令时、它会跳转到第二个应用程序。
第二个应用程序接收闪存映像并开始写入主应用程序所在的闪存部分。

这是我拥有的(两个应用都不使用 RTOS):

第一个应用程序:

第二个应用程序:

如果我还附加了两个应用程序的链接器命令文件、请执行以下操作:

第一个应用程序的.cmd 文件:

第二个应用程序的.cmd 文件:

我可以看到主应用程序跳到第二个应用程序、但它在几毫秒后停止工作。 请帮帮我。
该计划是否有效、或者我缺少什么?


谢谢!
Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Richard、
    您如何处理中断矢量表? 具体而言、您是否设置 VTABLE 寄存器、它是向量表偏移量?
    www.ti.com/.../slau723a.pdf

    此致、
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Chris、正如您在屏幕截图中看到的、我没有修改中断矢量表。 在.cmd 文件中、我具有以下内容:

    .vtable:>0x20000000

    当我从主应用程序跳转到第二个应用程序时、我不会对此进行修改。 据我所知、编号0x20000000是 SRAM 的开始位置

    我应该修改该寄存器吗? 我该怎么做? 这是我第一次尝试这样做,所以如果这是显而易见的,请原谅我。

    感谢您的帮助!
    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    链接器会将中断矢量表放置在您指定的 intvecs 中。 当您跳转到第二个应用程序时、您需要确保将矢量表偏移量设置为新位置、即0xF0010。

    此处的引导加载程序示例使用了类似的方法:
    dev.ti.com/.../node

    此致、
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您有其他问题、请使用"提出相关问题"按钮。

    此致、
    Chris