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.

[参考译文] MSP430F6659:协助实施包含多个图像和自定义引导加载程序的自定义主闪存解决方案

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1081680/msp430f6659-assistance-implementing-a-custom-main-flash-memory-solution-containing-multiple-images-and-custom-bootloader

部件号:MSP430F6659
《线程:UNIFLASH》中讨论的其他部件

TI 论坛大家好,

我正在尝试设计一个解决方案,让我的设备包含两个图像(图像 A 和图像 B),并在其中存储最新固件(比如图像 A) 如果在下载新固件时出现错误或断电,请使用之前的降级版本(如图 B 所示)。

为此,我 计划在闪存中创建一个自定义引导加载程序/最小映像,该映像将在映像 A 和映像 B 之间进行选择,并在 出现错误 或映像问题(无效映像)时与服务器进行基本通信; 我还认为,如果固件更新方式有问题,最小映像可能会更新固件更新代码(但如果太复杂无法实施,我可以将其移至主应用程序映像,映像 A 或映像 B 中)。

我想拥有三个 CCS 项目:一个用于我的自定义引导加载程序,一个用于我的主应用程序(将用作映像 A 或映像 B),另一个用于我的固件更新代码。


我如何将这些代码片段(CCS 项目的二进制输出)存储到各自的内存位置? 我是否需要修改每个项目的链接器文件以将其各自的闪存放置在预定义的区域内? 在将整个设备发送到现场之前,我是否需要使用动态图像来对其进行图像处理(如在三个不同位置闪烁3幅独立图像,一幅用于引导加载程序,主应用程序图像和固件更新代码)? 我是否可以用一种方法将所有三个代码打包成一个二进制文件,并通过无线方式将其发送给当前未实施此解决方案的现场设备,以替换整个主代码闪存?

我计划通过云发布固件更新,因此我希望向设备发送一个二进制比特流,该比特流代表要放入特定 闪存区域的数据位(无论是用于将替换图像 A 还是图像 B 的临时图像, 或者,如果它代表新的固件更新代码)。

附件我有我制作的 PDF 文件,其中显示了我正在尝试访问 implement.e2e.ti.com/.../Proposed-Memory-Map.pdf 的内容

 如果能帮助我们以最佳方式实施这一方案,或者提供我想做的事情的任何例子,我们将不胜感激。

谢谢!