一种基于嵌入式程序双区备份映像系统及启动方法与流程

文档序号:17441671发布日期:2019-04-17 04:50阅读:752来源:国知局
一种基于嵌入式程序双区备份映像系统及启动方法与流程

本发明涉及电子技术领域,尤其是一种双区备份映像系统及其启动方法。



背景技术:

随着电子技术的不断发展,目前嵌入式设备软件更新速度加快,因而需要不断对嵌入式设备进行软件更新。现有嵌入式设备采用单一映像的形式,设备加载运行的映像只在存储介质上保存一份,设备上电后先从存储介质上加载映像,进而执行映像,完成设备的启动运行。

如果因为异常操作导致映像被损坏,譬如产品映像更新过程中异常掉电等,都会导致设备再次运行后无法正确加载并运行系统映像,设备启动失败,无法正常工作使用,从而使得设备升级风险较大,设备的可靠性及可维护性较差。

现有的映像启动方法存在如下问题:

嵌入式设备上电加载运行的映像在存储介质上只保存了一份;

嵌入式设备升级过程中,设备掉电情况时有发生,掉电可能导致设备更新失败,进而导致设备无法启动运行;

嵌入式设备升级过程中,可能由于操作不当导致升级了错误的映像,使得设备无法正常启动运行;

存储介质上只保存一份映像,如果映像数据被破坏,将导致设备无法正常启动运行。



技术实现要素:

为了克服现有技术的不足,本发明提供一种基于嵌入式程序双区备份映像系统及其启动方法,实现嵌入式设备双区启动技术,提升嵌入式设备的可维护性。双区备份映像指的是映像存储介质划分为a区和b区,两个区域中都保存相同的映像数据。

本发明解决其技术问题所采用的技术方案是:

一种基于嵌入式程序双区备份映像系统,包括执行映像程序的中央处理器cpu,存放双区备份映像、映像更新标志及启动状态标志的flash,存放运行时映像的ddr;flash存储区域地址空间从低到高依次划分为a区映像启动标志、a区映像更新标志、a区映像、b区映像更新标志和b区映像;其中a区映像启动标志分为启动正常和启动失败;a区映像更新标志分为初始状态、正在更新状态和更新完成状态;a区映像存放设备启动时要加载运行的映像;b区映像更新标志分为初始状态和正在更新状态;b区映像存放a区映像的备份版本;

cpu和flash之间通过localbus总线互连,cpu通过内部集成的ddr控制器完成cpu与ddr之间的数据交互;在嵌入式设备上电启动中,cpu端读取存放在flash上的映像并将映像加载到ddr中;映像加载完成后,cpu从ddr中读取映像数据并执行映像,完成嵌入式设备相关功能。

本发明还提供涉及基于嵌入式程序双区备份映像系统的启动方法,本发明公开的双区备份映像启动方法,对嵌入式设备的映像更新状态和映像启动运行状态进行了明确规定,详细步骤如下:

步骤1:当映像启动时,进入步骤2;当映像需要更新时,进入步骤3;

步骤2、在映像启动过程中,根据a区映像更新标志和a区映像启动状态,智能选取要加载运行的映像,从而保证能够正常启动,映像启动过程为:

1)是否为启动失败状态,如果是,跳转到步骤7),否则跳转到步骤2);

2)更新标志是否为初始化状态,如果是,跳转到步骤8),否则跳转到步骤3);

3)更新标志是否为更新完成状态,如果是,转到步骤4),否则转到步骤7);

4)映像启动标志为启动失败状态;

5)从a区加载映像并启动运行a区映像;

6)判断a区映像是否启动成功,如果启动成功,跳转到步骤9),否则跳转到步骤7);

7)从b区加载映像并启动运行b区映像,跳转到步骤14);

8)从a区加载映像并启动运行a区映像,跳转到步骤14);

9)设置a区映像启动标志为启动正常状态,设置a区映像更新标志为初始化状态;

10)设置b区映像状态为正在更新状态;

11)将a区的映像更新到flash映像存储区域b区,覆盖b区原有映像;

12)通过crc校验方式,校验b区更新后的映像数据正确性,如果校验错误,跳转到步骤11),否则跳转到步骤13);

13)设置b区映像更新标志为初始化状态;

14)映像启动结束;

步骤3:在映像更新状态下,首先确保b区映像能够正常加载启动,对于新的映像,仅更新a区映像,从而确保即使a区映像更新失败的情况下,系统也能从b区映像上正常加载运行。映像更新流程为:

1)判断b区映像更新标志是否为初始化状态,如果是,跳转到步骤5),否则跳转到步骤2);

2)将a区映像更新到flash映像存储区域b区,覆盖b区原有映像;

3)通过crc校验方式,校验b区更新后的映像数据正确性,如果校验错误,跳转到步骤2);

4)设置b区映像更新标志为初始化状态;

5)设置a区映像更新标志为正在更新状态;

6)将新版本映像更新到flash映像存储区域a区,覆盖a区原有映像;

7)通过crc校验方式,校验a区更新后的映像数据正确,如果校验错误,跳转到步骤2);

8)设置a区映像更新标志为更新完成状态;

9)设置a区映像启动状态为启动正常状态。

本发明的有益效果在于由于采用了双区备份映像启动技术,将嵌入式设备要加载运行的映像在flash存储空间上采用冗余备份存储的方式,将映像存储在flash的a区和b区,通过映像更新状态和映像启动状态判断双区映像的有效性,从而保证上电后能够加载运行正确的映像,从而有效地解决了嵌入式设备升级失败或升级映像错误而导致设备无法启动的问题。

附图说明

图1为本发明双区映像启交联关系图。

图2为本发明新映像更新过程流程图。

图3为本发明映像启动流程图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

一种基于嵌入式程序双区备份映像系统,包括执行映像程序的中央处理器cpu,存放双区备份映像、映像更新标志及启动状态标志的flash,存放运行时映像的ddr;flash存储区域地址空间从低到高依次划分为a区映像启动标志、a区映像更新标志、a区映像、b区映像更新标志和b区映像;其中a区映像启动标志分为启动正常(0)和启动失败(1);a区映像更新标志分为初始状态(0)、正在更新状态(1)和更新完成状态(2);a区映像存放设备启动时要加载运行的映像;b区映像更新标志分为初始状态(0)和正在更新状态(1);b区映像存放a区映像的备份版本。

cpu和flash之间通过localbus总线互连,cpu通过内部集成的ddr控制器完成cpu与ddr之间的数据交互;在嵌入式设备上电启动中,cpu端读取存放在flash上的映像并将映像加载到ddr中;映像加载完成后,cpu从ddr中读取映像数据并执行映像,完成嵌入式设备相关功能。

一种基于嵌入式程序双区备份映像系统的启动方法,本发明公开的双区备份映像启动方法,对嵌入式设备的映像更新状态和映像启动运行状态进行了明确规定,详细步骤如下:

步骤1:当映像启动时,进入步骤2;当映像需要更新时,进入步骤3;

步骤2、在映像启动过程中,根据a区映像更新标志和a区映像启动状态,智能选取要加载运行的映像,从而保证能够正常启动,映像启动过程为:

1)是否为启动失败状态,如果是,跳转到步骤7),否则跳转到步骤2);

2)更新标志是否为初始化状态,如果是,跳转到步骤8),否则跳转到步骤3);

3)更新标志是否为更新完成状态,如果是,转到步骤4),否则转到步骤7);

4)映像启动标志为启动失败状态;

5)从a区加载映像并启动运行a区映像;

6)判断a区映像是否启动成功,如果启动成功,跳转到步骤9),否则跳转到步骤7);

7)从b区加载映像并启动运行b区映像,跳转到步骤14);

8)从a区加载映像并启动运行a区映像,跳转到步骤14);

9)设置a区映像启动标志为启动正常状态,设置a区映像更新标志为初始化状态;

10)设置b区映像状态为正在更新状态;

11)将a区的映像更新到flash映像存储区域b区,覆盖b区原有映像;

12)通过crc校验方式,校验b区更新后的映像数据正确性,如果校验错误,跳转到步骤11),否则跳转到步骤13);

13)设置b区映像更新标志为初始化状态;

14)映像启动结束;

步骤3:在映像更新状态下,首先确保b区映像能够正常加载启动,对于新的映像,仅更新a区映像,从而确保即使a区映像更新失败的情况下,系统也能从b区映像上正常加载运行。映像更新流程为:

1)判断b区映像更新标志是否为初始化状态,如果是,跳转到步骤5),否则跳转到步骤2);

2)将a区映像更新到flash映像存储区域b区,覆盖b区原有映像;

3)通过crc校验方式,校验b区更新后的映像数据正确性,如果校验错误,跳转到步骤2);

4)设置b区映像更新标志为初始化状态;

5)设置a区映像更新标志为正在更新状态;

6)将新版本映像更新到flash映像存储区域a区,覆盖a区原有映像;

7)通过crc校验方式,校验a区更新后的映像数据正确,如果校验错误,跳转到步骤2);

8)设置a区映像更新标志为更新完成状态;

9)设置a区映像启动状态为启动正常状态。

通过对映像更新状态和映像启动运行状态的有效处理,保证在任何状态下,flash上的a区映像和b区映像中,至少有一份有效可执行映像,从而确保嵌入式设备在升级之后能够正常工作,避免出现因为升级失败导致设备无法正常运行,提高设备的可靠性。

本发明构建一个双区映像启动系统,包括:

中央处理器,用于执行烧录的映像程序,本发明采用飞思卡尔power系列p2020处理器,与之配套的为风河vxworks6.9操作系统;

flash,采用镁光128mbflash芯片,flash挂接在p2020处理器local总线,地址空间为0xf8000000—0xffffffff,其中a区映像部署在0xfa100000地址,b区映像部署在0xfc100000地址;

ddr,采用microsemi公司w3j128m72g-800lbi芯片,容量为1gb,挂接在p2020处理器ddr控制其上。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1