0

标题似乎有点奇怪,我也不知道我应该在那里写什么,但希望我能让你明白我到底想做什么!- 我将拥有主引导加载程序和辅助引导加载程序,它们都将驻留在不同的内存区域(可能是引导闪存或程序闪存)。- 一个引导加载程序将一次处于活动状态,而另一个将处于非活动状态。- 让我们考虑一下,主引导加载程序处于活动状态,现在我将下载我的应用程序固件。我还在从应用程序固件中读取活动的引导加载程序版本,以便检查是否需要更新引导加载程序。- 如果我需要更新引导加载程序,那么不活动的引导加载程序将被激活,它将用更新的引导加载程序替换以前活动的引导加载程序。辅助引导加载程序将切换回非活动模式。因此,辅助引导加载程序仅在必须更新主引导加载程序时才变为活动状态。- 在整个过程中,我想为 Primary Bootloader 版本、Secondary Bootloader 版本和一些具有固定内存位置的自定义配置数据保留一些内存区域,并且可以从 Primary、Secondary 以及应用程序固件访问。

4

1 回答 1

0

您需要了解链接器文件。我还没有为 MX/MZ 线做这件事,但我已经在许多 dsPIC33 上做过这种事情。几乎如下方式:引导加载程序在.gld中获得一定数量的专用闪存,通常是一个页面,因此更容易擦除(0x400)然后超级引导加载程序(辅助引导加载程序)仅在您实际加载时加载到PIC中一个新的引导加载程序。所以superboot loader实际上是一个更小的应用程序,旨在简单地更新bootloader,然后跳转到bootloader的复位地址。我个人不会一直在其中保留辅助/超级引导加载代码,以免以后混淆。您可以使用 PIC 外部的更新技术真正做到这一点。同样,我不能提供有关 PIC32 线的直接帮助,但如果您

于 2017-04-04T11:49:19.363 回答