著录项信息
专利名称 | 基于linux的设备双系统保护及升级方法 |
申请号 | CN201410003631.9 | 申请日期 | 2014-01-03 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-03-26 | 公开/公告号 | CN103677947A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 深圳英飞拓科技股份有限公司 | 申请人地址 | 广东省深圳市宝安区观澜高新技术产业园英飞拓厂房
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 深圳英飞拓科技股份有限公司 | 当前权利人 | 深圳英飞拓科技股份有限公司 |
发明人 | 李远哲 |
代理机构 | 深圳市博锐专利事务所 | 代理人 | 张明 |
摘要
本发明公开了一种基于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系统开始工作。本发明通过对系统重要分区进行备份,检测到损坏时用来恢复整个系统。
1.一种基于linux的设备双系统保护方法,其特征在于,包括如下步骤:
S01、在linux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,linux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damaged、appupdate标志位、以及kernel、rootfs与appfs更新标志位;
S02、判断linux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03;
S03、判断params分区中的damaged标志位是否被置位,若是,则从备份系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04;
S04、判断判断params分区中的appupdate标志位是否被置位,若是,则检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区;
S05、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,则检查需更新的upkernel、uprootfs及upappfs镜像是否损坏,若损坏,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs镜像写入到kernel、rootfs、appfs分区中;
S06、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;
S07、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;
S08、加载内核分区,linux系统开始工作。
2.根据权利要求1所述的基于linux的设备双系统保护方法,其特征在于,所述步骤S02中将更新的upappfs镜像去掉包括头后写入appfs及bakappfs分区,还包括初始化Ptb表,所述Ptb表保存有更新后的各分区校验码及版本信息。
3.根据权利要求1所述的基于linux的设备双系统保护方法,其特征在于,所述备份系统还包括bakparamfs分区,所述bakparamfs分区包含初始的params分区。
4.根据权利要求3所述的基于linux的设备双系统保护方法,其特征在于,所述步骤S03之后,还包括判断params中的factory标志位是否被置位,若是,则从备份系统中的bakparamfs分区恢复params分区、kernel分区、rootfs分区及appfs分区。
5.根据权利要求1所述的基于linux的设备双系统保护方法,其特征在于,所述步骤S04中,当upappfs镜像无损坏时,还包括将upappfs中前64byte的包头信息提取,更新到ptb表中。
6.根据权利要求1所述的基于linux的设备双系统保护方法,其特征在于,所述步骤S05中,当更新的upkernel、uprootfs及upappfs镜像无损坏时,还包括提取uprootfs及upappfs的前64byte的包头信息,更新到ptb表中。
7.一种基于linux的设备双系统升级方法,其特征在于,包括如下步骤:
SS01、接收下载的应用程序的升级包;
SS02、校验下载的应用程序的升级包是否准确,若否,则停止升级,并向网页返回错误;
若是,则通过nandwrite将镜像写入到相应的upkernel、uprootfs、upappfs中;
SS03、设置params分区中的标志位;
SS04、重启系统后,执行权利要求1-6任一项所述的基于linux的设备双系统保护方法的步骤。
基于linux的设备双系统保护及升级方法\n技术领域\n[0001] 本发明涉及嵌入式linux系统的技术领域,尤其涉及一种基于linux的设备双系统保护及升级方法。\n背景技术\n[0002] 一个典型的嵌入式Linux系统按照存储空间的划分通常包括引导区,内核区与文件系统区,引导区存放Boot Loader与系统参数,内核区存放特定嵌入式平台的定制Linux内核。文件系统包括根文件系统和建立与Flash内存设备之上的文件系统。图形界面系统和用户应用程序就放在文件系统区中:1、Boot Loader占用的空间一般都比较小,它后面紧挨着一个启动参数区,用来保存Linux内核启动参数和用户启动配置。2、Boot Loader程序是嵌入式系统的引导加载程序,是系统加电后运行的第一段软件代码。Boot Loader程序的主要任务就是初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的环境中,Boot Loader程序最重要的任务就是启动Linux内核。3、文件系统是嵌入式linux系统占用空间最大的部分,它通常占据了Boot Loader和内核之外的所有空间,Linux启动完毕之后会加载一个根文件系统,根文件系统包含了系统必备、配置信息、库函数和shell解释器以及核心目录。其他的文件系统则可以挂载在根文件系统下面。Boot Loader一般通过JTAG接口和仿真器烧写到存储器,而内核和文件系统则可以通过串口和网口烧写到存储器。\n[0003] 现有技术中的嵌入式设备通常使用nandflash作为系统的存储单元,当flash出现坏块等情况时,会极大的影响系统的稳定性和可靠性。另外,系统程序进行升级时,flash出现坏块等情况也会带来对系统稳定性的影响。\n发明内容\n[0004] 本发明提出了一种基于linux的设备双系统保护及升级方法,主要解决的技术问题是现有技术中flash出现坏块等情况时,会极大地影响系统的稳定性和可靠性的问题。\n[0005] 为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于linux的设备双系统保护方法,包括如下步骤:\n[0006] S01、在linux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,linux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damage、appupdate标志位、以及ker、rootfs与appfs更新标志位;\n[0007] S02、判断linux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03;\n[0008] S03、判断params分区中的damaged标志位是否被置位,若是,则从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04;\n[0009] S04、判断判断params分区中的appupdate标志位是否被置位,若是,则检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区;\n[0010] S05、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,则检查需更新的upker、uprootfs及upappfs镜像是否损坏,若是,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs镜像写入到kernel、rootfs、appfs分区中;\n[0011] S06、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;\n[0012] S07、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;\n[0013] S08、加载内核分区,linux系统开始工作。\n[0014] 其中,所述步骤S02中将更新的upappfs镜像去掉包括头后写入appfs及bakappfs分区,还包括初始化Ptb表,所述Ptb表保存有更新后的各分区校验码及版本信息。\n[0015] 其中,所述备份系统还包括bakparamfs分区,所述bakparamfs分区包含初始的params分区。\n[0016] 其中,所述步骤S03之后,还包括判断params中的factory标志位是否被置位,若是,则从备份系统中的bakparamfs分区恢复params分区、kernel分区、rootfs分区及appfs分区。\n[0017] 其中,所述步骤S04中,当upappfs镜像无损坏时,还包括将upappfs中前64byte的包头信息提取,更新到ptb表中。\n[0018] 其中,所述步骤S05中,当更新的upker、uprootfs及upappfs镜像无损坏时,还包括提取uprootfs及upappfs的前64byte的包头信息,更新到ptb表中。\n[0019] 为解决上述技术问题,本发明采用的一个技术方案是:提供了一种基于linux的设备双系统升级方法,包括如下步骤:\n[0020] S01、接收下载的应用程序的升级包;\n[0021] S02、校验下载的应用程序的升级包是否为准确,若否,则停止升级,并向网页返回错误;若是,则通过nandwrite将镜像写入到相应的upkernel、uprootfs、upappfs中;\n[0022] S03、设置params分区中的标志位;\n[0023] S04、重启系统后,执行上述的基于linux的设备双系统保护方法的步骤。\n[0024] 本发明的有益技术效果是:区别于现有技术中flash出现坏块等情况时,会极大地影响系统的稳定性和可靠性的问题,本发明提供了一种基于linux的设备双系统保护方法,采用了双系统的设计方法,通过对系统重要分区进行备份,检测到损坏时用来恢复整个系统,具体备用系统包括bakkernel分区、bakrootfs分区及bakappfs分区,在params中的标志位被置位后,若kernel、rootfs以及appfs分区被损坏时,能够通过bakkernel分区、bakrootfs分区及bakappfs分区恢复,能够提高系统的稳定性。\n附图说明\n[0025] 图1是本发明基于linux的设备双系统保护的流程图;\n[0026] 图2是本发明基于linux的设备双系统升级的部分流程图。\n具体实施方式\n[0027] 为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。\n[0028] params分区:传递用户空间的标志位到uboot,uboot表示bootloader;\n[0029] Ptb分区:储存有Ptb表,用于保存各个分区的crc校验码、版本号等信息;\n[0030] kernel分区:内核分区,用于系统运行的内核;\n[0031] bakkernel分区:内核备份分区,用于恢复损坏的主内核;\n[0032] rootfs分区:根文件系统分区,用于储存系统的根文件系统;\n[0033] bakrootfs分区:根文件系统备份分区:恢复损坏的根文件系统;\n[0034] paramfs分区:系统数据分区,用于保存应用程序需要的参数;\n[0035] bakparamfs分区:系统数据备份分区,用于恢复出厂设置时使用;\n[0036] appfs分区:应用程序分区,用于保存系统运行的各个应用程序;\n[0037] bakappfs分区:应用程序备份分区,用于恢复损坏的应用程序分区;\n[0038] upkernel分区:内核升级分区,用于保存内核升级镜像;\n[0039] uprootfs分区:根文件系统升级分区,用于保存根文件系统升级镜像;\n[0040] upappfs分区:应用程序升级分区,用于保存应用程序升级镜像。\n[0041] 请参阅图1,本实施例提供了基于linux的设备双系统保护方法,包括如下步骤:\n[0042] S01、在linux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,linux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damage、appupdate标志位、以及ker、rootfs与appfs更新标志位,并可以将其传递至bootloader;该步骤对系统进行分区,搭建双备份升级系统。\n[0043] S02、判断linux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03;该对upappfs及uprootfs镜像写入linux系统及备份系统中。该步骤在于判断系统为第一次启动时,初始化系统参数。\n[0044] S03、判断params分区中的damaged标志位是否被置位,若是,则从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04;该步骤在于,如果上一次系统恢复过程中kernel分区及rootfs分区出现了异常,则重新对kernel分区及rootfs分区进行恢复操作。\n[0045] S04、判断判断params分区中的appupdate标志位是否被置位,若是,则检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区;该步骤在于,检查是否有应用程序升级请求,以置位为标志,如果有则进行升级。\n[0046] S05、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,则检查需更新的upker、uprootfs及upappfs镜像是否损坏,若损坏,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs镜像写入到kernel、rootfs、appfs分区中;该步骤在于,检查是否有内核、文件系统的升级请求,以置位为标志,如果有则进行升级。\n[0047] S06、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;该步骤在于,对内核进行检查,如果损坏,则进行恢复。\n[0048] S07、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;该步骤在于,对文件系统进行检查,如果损坏,则进行恢复。\n[0049] S08、加载内核分区,linux系统开始工作。\n[0050] 在一实施例中,所述步骤S02中将更新的upappfs镜像去掉包括头后写入appfs及bakappfs分区,还包括初始化Ptb表,所述Ptb表保存有更新后的各分区校验码及版本信息。\n[0051] 在一实施例中,所述备份系统还包括bakparamfs分区,所述bakparamfs分区包含初始的params分区。\n[0052] 在一实施例中,所述步骤S03之后,还包括判断params中的factory标志位是否被置位,若是,则从备份系统中的bakparamfs分区恢复params分区、kernel分区、rootfs分区及appfs分区。\n[0053] 在一实施例中,所述步骤S04中,当upappfs镜像无损坏时,还包括将upappfs中前\n64byte的包头信息提取,更新到ptb表中。\n[0054] 在一实施例中,所述步骤S05中,当更新的upker、uprootfs及upappfs镜像无损坏时,还包括提取uprootfs及upappfs的前64byte的包头信息,更新到ptb表中。\n[0055] 本发明区别于现有技术中flash出现坏块等情况时,会极大地影响系统的稳定性和可靠性的问题,本发明提供了一种基于linux的设备双系统保护方法,采用了双系统的设计方法,通过对系统重要分区进行备份,检测到损坏时用来恢复整个系统,具体备用系统包括bakkernel分区、bakrootfs分区及bakappfs分区,在params中的标志位被置位后,若kernel、rootfs以及appfs分区被损坏时,能够通过bakkernel分区、bakrootfs分区及bakappfs分区恢复,能够提高系统的稳定性。\n[0056] 参阅图2,本发明,提供了一种基于linux的设备双系统升级方法,包括如下步骤:\n[0057] S01、接收下载的应用程序的升级包;\n[0058] S02、校验下载的应用程序的升级包是否为准确,若否,则停止升级,并向网页返回错误;若是,则通过nandwrite将镜像写入到相应的upkernel、uprootfs、upappfs中;\n[0059] S03、设置params分区中的标志位;\n[0060] S04、重启系统后,执行上述的基于linux的设备双系统保护方法的步骤;\n[0061] S04、在linux文件系统存储空间中建立一个备份系统,并在备份系统上设置有bakkernel分区、bakrootfs分区及bakappfs分区,linux文件系统上设置有params分区、kernel分区、rootfs分区及appfs分区,其中,params分区包括damage、appupdate标志位、以及ker、rootfs与appfs更新标志位,并将其传递至bootloader;\n[0062] S05、判断linux系统是否为第一次启动,若是,初始化params分区,并将更新的uprootfs镜像去掉包头后写入rootfs分区及bakrootfs分区,以及将更新的upappfs镜像去掉包括头后写入appfs分区及bakappfs分区,若否,则直接步骤S03;\n[0063] S06、判断params分区中的damaged标志位是否被置位,若是,则从备用系统中恢复kernel分区及rootfs分区,若否,则执行步骤S04;\n[0064] S07、判断判断params分区中的appupdate标志位是否被置位,若是,则检查upappfs镜像是否损坏,若损坏,则忽略此次更新,恢复appupdate标志位并初始化params分区;若否,则将去掉包头的镜像写入appfs分区之后,初始化params分区;\n[0065] S08、判断params分区中的kernel、rootfs及appfs更新标志位是否同时被置位,若是,则检查需更新的upker、uprootfs及upappfs镜像是否损坏,若损坏,则忽略此次升级,并恢复kernel、rootfs及appfs更新标志位;若否,则将upkernel、去掉包头的uprootfs、upappfs镜像写入到kernel、rootfs、appfs分区中;\n[0066] S09、检查kernel分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;\n[0067] S10、检查rootfs分区镜像是否完好,若损坏,则将damaged标志位置位,并从bakkernel、bakrootfs、bakappfs中恢复kernel、rootfs、appfs分区后,删除damaged标志位;\n[0068] S11、加载内核分区,linux系统开始工作。\n[0069] 本发明升级基于linux的设备双系统升级方法,可分为下载和实际写入两个阶段,分别交给应用程序和bootloader完成,通过应用上述的基于linux的设备双系统保护方法,可以提高系统准确性及稳定性。\n[0070] 另外:\n[0071] params分区定义如下:\n[0072]\n[0073]\n[0074] Ptb表定义如下:\n[0075]\n[0076] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
法律信息
- 2016-11-02
- 2014-04-23
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201410003631.9
申请日: 2014.01.03
- 2014-03-26
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-12-25
|
2013-09-23
| | |
2
| |
2009-07-08
|
2009-01-07
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |