Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory management 在同一个PIC32MZ中有多个引导加载程序?_Memory Management_Boot_Bootloader_Microchip_Pic32 - Fatal编程技术网

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

Memory management 在同一个PIC32MZ中有多个引导加载程序?,memory-management,boot,bootloader,microchip,pic32,Memory Management,Boot,Bootloader,Microchip,Pic32,标题似乎有点奇怪,我也不知道我应该写什么,但希望我能让你们明白我到底想做什么! -我将有主引导加载程序和辅助引导加载程序都将驻留在内存的不同区域(可能是引导闪存或程序闪存)。 -其中一个引导加载程序一次将处于活动状态,另一个将处于非活动状态。 让我们考虑一下,主引导加载程序是活动的,现在我将下载我的应用程序固件。我还从应用程序固件读取活动引导加载程序版本,以便检查是否需要更新引导加载程序。 -如果我需要更新引导加载程序,那么非活动引导加载程序将被激活,它将用更新的引导加载程序替换以前活动的引导加

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

您需要了解链接器文件。我还没有这样做的MX/MZ线,但我没有在许多dsPIC33的这类事情。基本上是这样的:引导加载程序在.gld中获得一个指定数量的闪存,通常是一个页面,因此更容易擦除(0x400),然后超级引导加载程序(辅助引导加载程序)仅在实际加载新引导加载程序时加载到PIC中。因此,superboot loader实际上是一个较小的应用程序,旨在简单地更新引导加载程序,然后跳转到引导加载程序的重置地址。我个人不会一直将辅助/超级引导代码保存在那里,只是为了避免以后的混淆。你真的可以使用图片之外的更新技术来实现这一点。再一次,我可以;我不提供有关PIC32线路的直接帮助,但如果您想查看dsPIC33线路的示例链接器文件,我可以提供这些文件。

PIC32MZ中有启动闪存可用,如果我使用实时更新引导加载程序,它将如何工作?