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

时间:2017-04-04 08:38:56

标签: memory-management boot bootloader microchip pic32

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

1 个答案:

答案 0 :(得分:0)

您需要了解链接器文件。我还没有为MX / MZ系列做这个,但我在很多dsPIC33上都没有这样的东西。几乎是以下方式:Bootloader在.gld中获取一定数量的专用闪存,通常是单页,因此更容易擦除(0x400),然后Superboot加载程序(辅助引导加载程序)仅加载到PIC中你实际上正在加载一个新的引导程序。那么superboot加载器实际上是一个较小的应用程序,旨在简单地更新引导加载程序,然后跳转到引导加载程序的重置地址。我个人不会一直将二级/超级引导代码保留在那里,只是为了避免以后混淆。您可以使用PIC外部的更新技术来实现此目的。我可以再次提供PIC32系列的直接帮助,但是如果您想查看dsPIC33线路的示例链接器文件,我可以提供这些。