同一个 PIC32MZ 中有多个引导加载程序?

Multiple Boot loaders in same PIC32MZ?

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

您需要了解链接器文件。我还没有对 MX/MZ 行执行此操作,但我已经在许多 dsPIC33 上执行过此类操作。几乎是以下方式:引导加载程序在 .gld 中获得一定数量的闪存,通常是单个页面,因此更容易擦除(0x400)然后超级引导加载程序(辅助引导加载程序)仅在您实际加载时加载到 PIC 中一个新的引导加载程序。所以超级引导加载程序实际上是一个更小的应用程序,旨在简单地更新引导加载程序,然后跳转到引导加载程序的重置地址。我个人不会一直将 secondary/super 引导加载代码保留在那里,只是为了避免以后出现混淆。您可以使用 PIC 外部的更新技术真正做到这一点。同样,我不能提供有关 PIC32 系列的直接帮助,但如果您想查看 dsPIC33 系列的示例链接器文件,我可以提供这些文件。