基于linux的设备双系统保护及升级方法

文档序号:6534846阅读:480来源:国知局
基于linux的设备双系统保护及升级方法
【专利摘要】本发明公开了一种基于linux的设备双系统保护及升级方法,其中,上述的linux的设备双系统保护方法,包括如下步骤:S01、在linux文件系统存储空间中建立一个备份系统;S02、判断linux系统是否为第一次启动;S03、判断params分区中的damaged标志位是否被置位,若是,则从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04;S04、判断判断params分区中的appupdate标志位是否被置位;S05、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位;S06、检查kernel分区镜像是否完好;S07、检查rootfs分区镜像是否完好;S08、加载内核分区,linux系统开始工作。本发明通过对系统重要分区进行备份,检测到损坏时用来恢复整个系统。
【专利说明】基于I inux的设备双系统保护及升级方法
【技术领域】
[0001]本发明涉及嵌入式Iinux系统的【技术领域】,尤其涉及一种基于Iinux的设备双系统保护及升级方法。
【背景技术】
[0002]一个典型的嵌入式Linux系统按照存储空间的划分通常包括引导区,内核区与文件系统区,引导区存放Boot Loader与系统参数,内核区存放特定嵌入式平台的定制Linux内核。文件系统包括根文件系统和建立与Flash内存设备之上的文件系统。图形界面系统和用户应用程序就放在文件系统区中:l、Boot Loader占用的空间一般都比较小,它后面紧挨着一个启动参数区,用来保存Linux内核启动参数和用户启动配置。2、Boot Loader程序是嵌入式系统的引导加载程序,是系统加电后运行的第一段软件代码。Boot Loader程序的主要任务就是初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的环境中,Boot Loader程序最重要的任务就是启动Linux内核。3、文件系统是嵌入式Iinux系统占用空间最大的部分,它通常占据了 Boot Loader和内核之外的所有空间,Linux启动完毕之后会加载一个根文件系统,根文件系统包含了系统必备、配置信息、库函数和shell解释器以及核心目录。其他的文件系统则可以挂载在根文件系统下面。BootLoader 一般通过JTAG接口和仿真器烧写到存储器,而内核和文件系统则可以通过串口和网口烧写到存储器。
[0003]现有技术中的嵌入式设备通常使用nandflash作为系统的存储单元,当flash出现坏块等情况时,会极大的影响系统的稳定性和可靠性。另外,系统程序进行升级时,flash出现坏块等情况也会带来对系统稳定性的影响。

【发明内容】

[0004]本发明提出了一种基于Iinux的设备双系统保护及升级方法,主要解决的技术问题是现有技术中flash出现坏块等情况时,会极大地影响系统的稳定性和可靠性的问题。
[0005]为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于Iinux的设备双系统保护方法,包括如下步骤:
[0006]S01、在Iinux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,Iinux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damage、appupdate标志位、以及ker、rootfs与appfs更新标志位;
[0007]S02、判断Iinux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03 ;
[0008]S03、判断params分区中的damaged标志位是否被置位,若是,贝U从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04 ;[0009]S04、判断判断params分区中的appupdate标志位是否被置位,若是,贝U检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区;
[0010]S05、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,则检查需更新的upker、uprootfs及upappfs镜像是否损坏,若是,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs 镜像写入到 kernel、rootfs、appfs 分区中;
[0011]S06、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kerne 1、rootfs、appfs 分区后,删除 damaged 标志位;
[0012]S07、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kernel、rootfs、appfs 分区后,删除 damaged 标志位;
[0013]S08、加载内核分区,Iinux系统开始工作。
[0014]其中,所述步骤S02中将更新的upappfs镜像去掉包括头后写入appfs及bakappfs分区,还包括初始化Ptb表,所述Ptb表保存有更新后的各分区校验码及版本信
肩、O
[0015]其中,所述备份系统还包括bakparamfs分区,所述bakparamfs分区包含初始的params 分区。
[0016]其中,所述步骤S03之后,还包括判断params中的factory标志位是否被置位,若是,则从备份系统中的bakparamfs分区恢复params分区、kernel分区、rootfs分区及appfs分区。
[0017]其中,所述步骤S04中,当upappfs镜像无损坏时,还包括将upappfs中前64byte的包头信息提取,更新到Ptb表中。
[0018]其中,所述步骤S05中,当更新的upker、uprootfs及upappfs镜像无损坏时,还包括提取uprootfs及upappfs的前64byte的包头信息,更新到ptb表中。
[0019]为解决上述技术问题,本发明采用的一个技术方案是:提供了一种基于Iinux的设备双系统升级方法,包括如下步骤:
[0020]S01、接收下载的应用程序的升级包;
[0021]S02、校验下载的应用程序的升级包是否为准确,若否,则停止升级,并向网页返回错误;若是,贝U通过nandwrite将镜像写入到相应的upkernel、uprootfs、upappfs中;
[0022]S03、设置params分区中的标志位;
[0023]S04、重启系统后,执行上述的基于Iinux的设备双系统保护方法的步骤。
[0024]本发明的有益技术效果是:区别于现有技术中flash出现坏块等情况时,会极大地影响系统的稳定性和可靠性的问题,本发明提供了一种基于Iinux的设备双系统保护方法,采用了双系统的设计方法,通过对系统重要分区进行备份,检测到损坏时用来恢复整个系统,具体备用系统包括bakkernel分区、bakrootfs分区及bakappfs分区,在params中的标志位被置位后,若kernel、rootfs以及appfs分区被损坏时,能够通过bakkernel分区、bakrootfs分区及bakappfs分区恢复,能够提高系统的稳定性。【专利附图】

【附图说明】
[0025]图1是本发明基于Iinux的设备双系统保护的流程图;
[0026]图2是本发明基于Iinux的设备双系统升级的部分流程图。
【具体实施方式】
[0027]为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
[0028]params分区:传递用户空间的标志位到uboot, uboot表示bootloader ;
[0029]Ptb分区:储存有Ptb表,用于保存各个分区的crc校验码、版本号等信息;
[0030]kernel分区:内核分区,用于系统运行的内核;
[0031]bakkernel分区:内核备份分区,用于恢复损坏的主内核;
[0032]rootfs分区:根文件系统分区,用于储存系统的根文件系统;
[0033]bakrootfs分区:根文件系统备份分区:恢复损坏的根文件系统;
[0034]paramfs分区:系统数据分区,用于保存应用程序需要的参数;
[0035]bakparamfs分区:系统数据备份分区,用于恢复出厂设置时使用;
[0036]appfs分区:应用程序分区,用于保存系统运行的各个应用程序;
[0037]bakappfs分区:应用程序备份分区,用于恢复损坏的应用程序分区;
[0038]upkernel分区:内核升级分区,用于保存内核升级镜像;
[0039]uprootfs分区:根文件系统升级分区,用于保存根文件系统升级镜像;
[0040]upappfs分区:应用程序升级分区,用于保存应用程序升级镜像。
[0041]请参阅图1,本实施例提供了基于Iinux的设备双系统保护方法,包括如下步骤:
[0042]S01、在Iinux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,Iinux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damage、appupdate标志位、以及ker、rootfs与appfs更新标志位,并可以将其传递至bootloader ;该步骤对系统进行分区,搭建双备份升级系统。
[0043]S02、判断Iinux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03 ;该对upappfs及uprootfs镜像写入Iinux系统及备份系统中。该步骤在于判断系统为第一次启动时,初始化系统参数。
[0044]S03、判断params分区中的damaged标志位是否被置位,若是,贝U从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04 ;该步骤在于,如果上一次系统恢复过程中kernel分区及rootfs分区出现了异常,则重新对kernel分区及rootfs分区进行恢复操作。
[0045]S04、判断判断params分区中的appupdate标志位是否被置位,若是,则检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区;该步骤在于,检查是否有应用程序升级请求,以置位为标志,如果有则进行升级。
[0046]S05、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,则检查需更新的upker、uprootfs及upappfs镜像是否损坏,若损坏,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs镜像写入到kernel、rootfs、appfs分区中;该步骤在于,检查是否有内核、文件系统的升级请求,以置位为标志,如果有则进行升级。
[0047]S06、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kernel、rootfs、appfs 分区后,删除 damaged 标志位;该步骤在于,对内核进行检查,如果损坏,则进行恢复。
[0048]S07、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kernel、rootfs、appfs 分区后,删除 damaged 标志位;该步骤在于,对文件系统进行检查,如果损坏,则进行恢复。
[0049]S08、加载内核分区,Iinux系统开始工作。
[0050]在一实施例中,所述步骤S02中将更新的upappfs镜像去掉包括头后写入appfs及bakappfs分区,还包括初始化Ptb表,所述Ptb表保存有更新后的各分区校验码及版本信息。
[0051]在一实施例中,所述备份系统还包括bakparamfs分区,所述bakparamfs分区包含初始的params分区。
[0052]在一实施例中,所述步骤S03之后,还包括判断params中的factory标志位是否被置位,若是,则从备份系统中的bakparamfs分区恢复params分区、kernel分区、rootfs分区及appfs分区。
[0053]在一实施例中,所述步骤S04中,当upappfs镜像无损坏时,还包括将upappfs中前64byte的包头信息提取,更新到ptb表中。
[0054]在一实施例中,所述步骤S05中,当更新的upker、uprootfs及upappfs镜像无损坏时,还包括提取uprootfs及upappfs的前64byte的包头信息,更新到ptb表中。
[0055]本发明区别于现有技术中flash出现坏块等情况时,会极大地影响系统的稳定性和可靠性的问题,本发明提供了一种基于Iinux的设备双系统保护方法,采用了双系统的设计方法,通过对系统重要分区进行备份,检测到损坏时用来恢复整个系统,具体备用系统包括bakkernel分区、bakrootfs分区及bakappfs分区,在params中的标志位被置位后,若kernel、rootfs以及appfs分区被损坏时,能够通过bakkernel分区、bakrootfs分区及bakappfs分区恢复,能够提高系统的稳定性。
[0056]参阅图2,本发明,提供了一种基于Iinux的设备双系统升级方法,包括如下步骤:
[0057]S01、接收下载的应用程序的升级包;
[0058]S02、校验下载的应用程序的升级包是否为准确,若否,则停止升级,并向网页返回错误;若是,贝U通过nandwrite将镜像写入到相应的upkernel、uprootfs、upappfs中;
[0059]S03、设置params分区中的标志位;
[0060]S04、重启系统后,执行上述的基于Iinux的设备双系统保护方法的步骤;
[0061]S04、在Iinux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,I inux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damage、appupdate标志位、以及ker、rootfs与appfs更新标志位,并将其传递至bootloader ;
[0062]S05、判断Iinux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03 ;
[0063]S06、判断params分区中的damaged标志位是否被置位,若是,贝U从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04 ;
[0064]S07、判断判断params分区中的appupdate标志位是否被置位,若是,则检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区;
[0065]S08、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,则检查需更新的upker、uprootfs及upappfs镜像是否损坏,若损坏,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs 镜像写入到 kernel、rootfs、appfs 分区中;
[0066]S09、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kernel、rootfs、appfs 分区后,删除 damaged 标志位;
[0067]S10、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kernel、rootfs、appfs 分区后,删除 damaged 标志位;
[0068]S11、加载内核分区,Iinux系统开始工作。
[0069]本发明升级基于Iinux的设备双系统升级方法,可分为下载和实际写入两个阶段,分别交给应用程序和bootloader完成,通过应用上述的基于Iinux的设备双系统保护方法,可以提高系统准确性及稳定性。
[0070]另外:
[0071]params分区定义如下:
[0072]
【权利要求】
1.一种基于Iinux的设备双系统保护方法,其特征在于,包括如下步骤: 501、在Iinux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,Iinux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damage、appupdate标志位、以及ker、rootfs与appfs更新标志位; 502、判断Iinux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03 ; 503、判断params分区中的damaged标志位是否被置位,若是,则从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04 ; 504、判断判断params分区中的appupdate标志位是否被置位,若是,则检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区; 505、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,贝1J检查需更新的upker、uprootfs及upappfs镜像是否损坏,若损坏,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs 镜像写入到 kernel、rootfs、appfs 分区中; 506、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kerne 1、rootfs、appfs 分区后,删除 damaged 标志位; 507、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs 中恢复 kernel、rootfs、appfs 分区后,删除 damaged 标志位; 508、加载内核分区,Iinux系统开始工作。
2.一种基于Iinux的设备双系统保护方法,其特征在于,所述步骤S02中将更新的upappfs镜像去掉包括头后写入appfs及bakappfs分区,还包括初始化Ptb表,所述Ptb表保存有更新后的各分区校验码及版本信息。
3.根据权利要求1所述的基于Iinux的设备双系统保护方法,其特征在于,所述备份系统还包括bakparamfs分区,所述bakparamfs分区包含初始的params分区。
4.根据权利要求3所述的基于Iinux的设备双系统保护方法,其特征在于,所述步骤S03之后,还包括判断params中的factory标志位是否被置位,若是,则从备份系统中的bakparamfs分区恢复params分区、kernel分区、rootfs分区及appfs分区。
5.根据权利要求1所述的基于Iinux的设备双系统保护方法,其特征在于,所述步骤S04中,当upappfs镜像无损坏时,还包括将upappfs中前64byte的包头信息提取,更新到ptb表中。
6.根据权利要求1所述的基于Iinux的设备双系统保护方法,其特征在于,所述步骤S05中,当更新的upker、uprootfs及upappfs镜像无损坏时,还包括提取uprootfs及upappfs的前64byte的包头信息,更新到ptb表中。
7.一种基于Iinux的设备双系统升级方法,其特征在于,包括如下步骤:S01、接收下载的应用程序的升级包; S02、校验下载的应用程序的升级包是否为准确,若否,则停止升级,并向网页返回错误;若是,则通过nandwrite将镜像写入到相应的upkernel、uprootfs、upappfs中; S03、设置par ams分区中的标志位; S04、重启系统后,执行权利要求1-6任一项所述的基于1inux的设备双系统保护方法的步骤。
【文档编号】G06F17/30GK103677947SQ201410003631
【公开日】2014年3月26日 申请日期:2014年1月3日 优先权日:2014年1月3日
【发明者】李远哲 申请人:深圳英飞拓科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1