著录项信息
专利名称 | 一种基于UBoot的自动升级的控制方法及系统 |
申请号 | CN201110382144.4 | 申请日期 | 2011-11-25 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-06-05 | 公开/公告号 | CN103136002A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5查看分类表>
|
申请人 | 航天信息股份有限公司 | 申请人地址 | 北京市海淀区杏石口路甲18号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 航天信息股份有限公司 | 当前权利人 | 航天信息股份有限公司 |
发明人 | 陈懿;陈皓;侯丙营;聂慧萍;张磊;张福军;余彦;张朝阳;赵杨 |
代理机构 | 北京国昊天诚知识产权代理有限公司 | 代理人 | 张永林 |
摘要
本发明公开了一种基于UBoot的自动升级的控制方法,包括:系统进行初始化,检测若连接U盘或网络服务器,则检测U盘或网络服务器是否存在脚本文件且脚本文件是否有效,若是,则根据该脚本文件编辑UBoot指令;系统根据解析编辑后的UBoot指令,检测若存在待升级的软件,则检测若有该待升级的软件的新版本的源文件,则根据该源文件对该待升级的软件进行升级,完成系统的升级。应用本发明,解决了当前需要对系统进行自动升级需求的问题。
1.一种基于UBoot的自动升级的控制方法,其特征在于,包括:
系统进行初始化,检测若连接U盘或网络服务器,则检测U盘或网络服务器是否存在脚本文件且脚本文件是否有效,若是,则根据该脚本文件编辑UBoot指令,所述脚本文件包括UBoot指令码,通过所述脚本文件的UBoot指令码对系统的UBoot指令进行编辑;
系统根据解析编辑后的UBoot指令,检测若存在待升级的软件,则检测若有该待升级的软件的新版本的源文件,则根据该源文件对该待升级的软件进行升级,完成系统的升级;
系统根据解析编辑后的UBoot指令,判断若有待加载的程序,则加载该程序并运行,所述的程序为不依赖操作系统的程序;
所述根据脚本文件编辑UBoot指令的步骤,包括:嵌入升级文件检测、脚本文件解密、指令解析、指令执行和提示的各指令。
2.如权利要求1所述的方法,其特征在于,
所述系统检测若存在待升级的软件,则检测若有该待升级的软件的新版本的源文件,则根据该源文件对该待升级的软件进行升级的步骤,包括:对脚本文件进行解密,检测是否存在待升级的软件,若有,则判断U盘或网络服务器上是否有该待升级的软件的新版本的源文件,若有,则根据该源文件对该待升级的软件进行升级,完成系统的升级并提示升级成功。
3.如权利要求2所述的方法,其特征在于,
还包括:所述系统判断若未连接U盘或网络服务器,U盘或网络服务器没有脚本文件,或者脚本文件为无效;或者所述系统根据解析编辑后的UBoot指令,检测若不存在待升级的软件或者U盘或网络服务器不存在该待升级的软件的新版本的源文件,则提示错误,结束检测过程,并运行原系统。
4.如权利要求1或3所述的方法,其特征在于,
所述系统是基于UBoot指令中fatload、erase和cp控制升级和加载的过程。
5.一种基于UBoot的自动升级的控制系统,其特征在于,包括:
初始化模块,用于对系统进行初始化,检测若连接U盘或网络服务器,则检测U盘或网络服务器是否存在脚本文件且脚本文件是否有效,若是,则根据该脚本文件编辑UBoot指令,所述脚本文件包括UBoot指令码,通过所述脚本文件的UBoot指令码对系统的UBoot指令进行编辑;
检测模块,用于根据解析编辑后的UBoot指令,检测若存在待升级的软件,则检测是否有该待升级的软件的新版本的源文件;及
升级模块,用于根据检测模块检测到的源文件对所述待升级的软件进行升级;
系统根据解析编辑后的UBoot指令,判断若有待加载的程序,则加载该程序并运行,所述的程序为不依赖操作系统的程序;
所述初始化模块根据脚本文件编辑的UBoot指令,包括:嵌入升级文件检测、脚本文件解密、指令解析、指令执行和提示的各指令。
6.如权利要求5所述的系统,其特征在于,
所述检测模块检测若存在待升级的软件,则检测是否有该待升级的软件的新版本的源文件,具体是指:所述检测模块对脚本文件进行解密,检测若存在待升级的软件后,则判断U盘或网络服务器上是否有该待升级的软件的新版本的源文件。
7.如权利要求6所述的系统,其特征在于,
所述检测模块,还用于根据解析编辑后的UBoot指令,检测若不存在待升级的软件,或者U盘或网络服务器不存在该待升级的软件的新版本的源文件,则提示错误,结束检测过程,并运行原系统。
一种基于UBoot的自动升级的控制方法及系统\n技术领域\n[0001] 本发明涉及系统更新领域,具体涉及一种基于UBoot的自动升级的控制方法及系统。\n背景技术\n[0002] 电子行业已进入了“后PC”时代,大大小小的嵌入式系统已深入到生产和生活的方方面面。而且,随着芯片技术的飞速发展,不管是消费类通用产品(手机/PMP等),还是行业专用设备(税控机/开票机等),都在采用32位以上的硬件平台,并使用操作系统。这样的硬件、软件架构决定了系统的软件层次会比较复杂,需要引导程序、操作系统、文件系统、多格式数据分区等。图1是当前典型的嵌入式系统存储分配的示意图。\n[0003] UBoot是目前使用最为广泛的开源引导程序(bootloader),支持大多数的主流32位硬件平台和主流操作系统的引导。它有丰富的指令和外设驱动,可满足绝大多数此类系统的需要。采用UBoot做引导的系统,在开发阶段会开放控制台操作,通过在其Debug模式下手动执行指令来实现各种辅助功能,如访问U盘、网络加载程序、读写Flash和内存、设置环境变量等。产品定型后,控制台操作会关闭,这样就给操作系统、文件系统等的升级带来麻烦。譬如某些专用产品(如税控机/开票机)中,需要自动升级其中的操作系统、文件系统这两个部分。另外,对于这类产品,还需要有方便的不依赖于操作系统的硬件故障定位方法等需求。此外,通用的UBoot可能还需要嵌入一些设备特有的特殊操作,故UBoot自身也面临需要升级的需求。这样就需要有一个安全、快速、方便的系统级升级方法,能够在产品阶段由服务人员快速的完成对各级系统软件的升级。另外,对于这类产品,批量生产和维护过程中,还需要一个便捷的不依赖于操作系统的硬件故障诊断的方法,即可以自动引导便携式存储器中的故障诊断程序,完成故障诊断,而不影响原有固化好的系统的运行。总体来说,需要系统具有一个有安全控制的升级系统软件和引导故障诊断程序的“后门”。UBoot具有丰富的辅助调试指令,通过不同的指令组合完全可以实现前述的一些升级和加载需求。因此,当前需要一种基于UBoot的自动升级的技术方案,能够在产品阶段通过UBoot的指令组合执行来解决上述问题。\n发明内容\n[0004] 本发明所要解决的技术问题在于提供一种基于UBoot的自动升级的控制方法及系统,以解决当前需要对系统进行自动升级需求的问题。\n[0005] 为了解决上述问题,本发明提供了一种基于UBoot的自动升级的控制方法,包括:\n[0006] 系统进行初始化,检测若连接U盘或网络服务器,则检测U盘或网络服务器是否存在脚本文件且脚本文件是否有效,若是,则根据该脚本文件编辑UBoot指令;\n[0007] 系统根据解析编辑后的UBoot指令,检测若存在待升级的软件,则检测若有该待升级的软件的新版本的源文件,则根据该源文件对该待升级的软件进行升级,完成系统的升级。\n[0008] 进一步地,上述方法还可包括:所述根据脚本文件编辑UBoot指令的步骤,包括:嵌入升级文件检测、脚本文件解密、指令解析、指令执行和提示的各指令。\n[0009] 进一步地,上述方法还可包括:所述系统检测若存在待升级的软件,则检测若有该待升级的软件的新版本的源文件,则根据该源文件对该待升级的软件进行升级的步骤,包括:对脚本文件进行解密,检测是否存在待升级的软件,若有,则判断U盘或网络服务器上是否有该待升级的软件的新版本的源文件,若有,则根据该源文件对该待升级的软件进行升级,完成系统的升级并提示升级成功。\n[0010] 进一步地,上述方法还可包括:所述系统判断若未连接U盘或网络服务器,U盘或网络服务器没有脚本文件,或者脚本文件为无效;或者所述系统根据解析编辑后的UBoot指令,检测若不存在待升级的软件或者U盘或网络服务器不存在该待升级的软件的新版本的源文件,则提示错误,结束检测过程,并运行原系统。\n[0011] 进一步地,上述方法还可包括:系统根据解析编辑后的UBoot指令,判断若有待加载的程序,则加载该程序并运行。\n[0012] 进一步地,上述方法还可包括:所述系统是基于UBoot指令中fatload、erase和cp控制升级和加载的过程。\n[0013] 本发明还提供了一种基于UBoot的自动升级的控制系统,包括:\n[0014] 初始化模块,用于对系统进行初始化,检测若连接U盘或网络服务器,则检测U盘或网络服务器是否存在脚本文件且脚本文件是否有效,若是,则根据该脚本文件编辑UBoot指令;\n[0015] 检测模块,用于根据解析编辑后的UBoot指令,检测若存在待升级的软件,则检测是否有该待升级的软件的新版本的源文件;及\n[0016] 升级模块,用于根据检测模块检测到的源文件对所述待升级的软件进行升级。进一步地,上述系统还可包括:所述初始化模块根据脚本文件编辑的UBoot指令,包括:嵌入升级文件检测、脚本文件解密、指令解析、指令执行和提示的各指令。\n[0017] 进一步地,上述系统还可包括:所述检测模块检测若存在待升级的软件,则检测是否有该待升级的软件的新版本的源文件,具体是指:所述检测模块对脚本文件进行解密,检测若存在待升级的软件后,则判断U盘或网络服务器上是否有该待升级的软件的新版本的源文件。\n[0018] 进一步地,上述系统还可包括:所述检测模块,还用于根据解析编辑后的UBoot指令,检测若不存在待升级的软件,或者U盘或网络服务器不存在该待升级的软件的新版本的源文件,则提示错误,结束检测过程,并运行原系统。\n[0019] 与现有技术相比,应用本发明,解决了当前需要对系统进行自动升级需求的问题,通过UBoot指令的不同组合,就可以实现其他功能,如:从U盘中加载一个不依赖操作系统的用户程序到内存,完成特殊功能(硬件故障诊断等),但不影响系统中原有固化好的程序;清理系统数据分区,排除“数据分区紊乱”的故障;修改UBoot环境变量和引导参数;从U盘中加载操作系统启动等。升级过程自动完成,并有错误和成功提示;脚本文件经过加密处理,保证其合法性和有效性,以及升级的安全性;基于UBoot指令实现下载和升级,升级参数的设定,非常灵活方便。\n附图说明\n[0020] 图1是当前典型的嵌入式系统存储分配的示意图。\n[0021] 图2为本发明的基于UBoot的自动升级的控制方法的流程图。\n[0022] 图3本发明的基于UBoot的自动升级的控制系统的结构示意图。\n具体实施方式\n[0023] 下面结合附图和具体实施方式对本发明作进一步说明。\n[0024] 本发明的通过UBoot做引导程序的嵌入式系统的系统升级和程序加载的方法,用于对系统中的操作系统、文件系统,甚至UBoot本身进行系统级升级,还用于在产品阶段方便的自动加载故障诊断程序以完成硬件故障诊断。通过读取连接到系统USB接口的U盘上的控制脚本文件和待升级文件(或待加载程序),可实现自动快速升级。控制脚本可以根据需要自由编辑,不同的控制脚本可实现不同的操作(操作系统升级、文件系统升级、UBoot自身升级、加载故障诊断程序执行诊断等),并且升级后自动引导新的操作系统,或加载新的文件系统,系统无需重新启动。\n[0025] 本发明的方法,既可以在产品售后维护过程中灵活、方便的实现产品的系统软件的升级,又可以加载U盘上的故障诊断程序到系统内存执行诊断而不影响原有系统,还可以在研发、生产过程中辅助实现一些特殊的功能,如清除系统数据分区等。总之,此方法允许在产品阶段运行UBoot所有标准指令,指令可以实现的功能都可以实现。\n[0026] 升级或程序加载所用的控制脚本文件,经过了加密,且升级过程有加解密控制和设备、文件有效性检测、校验功能,保证了升级或加载过程的安全性。\n[0027] 如图2所示,本发明的基于UBoot的自动升级的控制方法,包括:\n[0028] 步骤210、系统进行初始化,检测若连接U盘或网络服务器,则检测U盘或网络服务器是否存在脚本文件且脚本文件是否有效,若是,则根据该脚本文件编辑UBoot指令[0029] 所述脚本文件中包括UBoot指令码,通过脚本文件中指令码对系统的UBoot指令进行编辑。\n[0030] 所述根据脚本文件编辑UBoot指令的步骤,包括:嵌入升级文件检测、脚本文件解密、指令解析、指令执行和提示的各指令。\n[0031] 步骤220、系统根据解析编辑后的UBoot指令,检测若存在待升级的软件,则检测若有该待升级的软件的新版本的源文件,则根据该源文件对该待升级的软件进行升级,完成系统的升级。\n[0032] 所述系统检测若存在待升级的软件,则检测若有该待升级的软件的新版本的源文件,则根据该源文件对该待升级的软件进行升级的步骤,包括:对脚本文件进行解密,检测是否存在待升级的软件,若有,则判断U盘或网络服务器上是否有该待升级的软件的新版本的源文件,若有,则根据该源文件对该待升级的软件进行升级,完成系统的升级并提示升级成功。\n[0033] 还包括:所述系统判断若未连接U盘或网络服务器,U盘或网络服务器没有脚本文件,或者脚本文件为无效;或者所述系统根据解析编辑后的UBoot指令,检测若不存在待升级的软件或者U盘或网络服务器不存在该待升级的软件的新版本的源文件,则提示错误,结束检测过程,并运行原系统。\n[0034] 进一步包括:系统根据解析编辑后的UBoot指令,判断若有待加载的程序,则加载该程序并运行。\n[0035] 所述系统可以是基于UBoot指令中fatload、erase和cp控制升级和加载的过程。本发明不限于fatload、erase和cp,也可通过UBoot指令的其他通用指令进行控制。\n[0036] 如图3所示,本发明还提供了一种基于UBoot的自动升级的控制系统,包括:初始化模块301、检测模块302和升级模块303,其中,\n[0037] 初始化模块301,用于对系统进行初始化,检测若连接U盘或网络服务器,则检测U盘或网络服务器是否存在脚本文件且脚本文件是否有效,若是,则根据该脚本文件编辑UBoot指令;\n[0038] 检测模块302,用于根据解析编辑后的UBoot指令,检测若存在待升级的软件,则检测是否有该待升级的软件的新版本的源文件;及\n[0039] 升级模块303,用于根据检测模块302检测到的源文件对所述待升级的软件进行升级。\n[0040] 所述初始化模块根据脚本文件编辑UBoot指令,包括:嵌入升级文件检测、脚本文件解密、指令解析、指令执行和提示的各指令。\n[0041] 所述检测模块检测若存在待升级的软件,则检测是否有该待升级的软件的新版本的源文件,具体是指:所述检测模块对脚本文件进行解密,检测若存在待升级的软件后,则判断U盘或网络服务器上是否有该待升级的软件的新版本的源文件。\n[0042] 所述检测模块302,还用于根据解析编辑后的UBoot指令,检测若不存在待升级的软件,或者U盘或网络服务器不存在该待升级的软件的新版本的源文件,则提示错误,结束检测过程,并运行原系统\n[0043] 本发明所述的系统升级和程序加载方法,需要系统硬件上具有USB Host接口,并已将UBoot移植到该系统平台上。UBoot需要打开支持USB Host、Fat文件系统的配置选项,以通过fatload、fatls等UBoot指令支持对U盘的访问。按照下述要点实现本发明的方法:\n[0044] 1.定制UBoot:在UBoot启动的一系列初始化步骤即将完成而进入其主循环之前,加入有关U盘检测、脚本文件检测、脚本文件解密和UBoot指令解析、升级(或待加载)文件检测、UBoot指令执行的功能,并在前述一系列功能中加入过程和错误提示(蜂鸣器指示)。\n[0045] 2.脚本文件中的指令码采用标准UBoot支持的指令码,根据需要加入一个或若干个指令码的组合以实现不同的功能;\n[0046] 3.脚本文件编辑完毕后,需使用加密工具加入校验字段并经过加密处理,保证其合法性和有效性,以及升级的安全性;\n[0047] 4.基于UBoot指令fatload、erase、cp等实现加载和升级,指令参数,如:存储起始地址、结束地址,升级文件名、文件大小,升级文件来源(U盘或网络服务器)等均可以根据需要自由设定,非常灵活方便。\n[0048] 该方法的优点还在于:\n[0049] 1.控制脚本支持所有的标准UBoot指令码。这样,通过UBoot指令的不同组合,就可以实现很多特殊的功能。如:从U盘中加载一个不依赖操作系统的用户程序到内存并执行,完成特殊功能(硬件故障诊断等),但不影响系统中原有固化好的程序;通过UBoot的erase指令清理系统Flash数据分区,排除“数据分区紊乱”的故障;通过环境变量相关的指令隐式的修改UBoot环境变量和引导参数;从U盘中加载操作系统并启动等。\n[0050] 2.升级和加载过程自动通过U盘隐式的完成,操作内容用户不可见,并有错误和成功提示(蜂鸣器提示、指示灯闪烁等)。\n[0051] 3.升级和加载过程的任何错误都会退出升级模式,并正常运行原系统。\n[0052] 4.除了以上功能,还可以升级UBoot引导程序自身。\n[0053] 5.升级和加载的控制脚本,具有检验字段并经过了加密,内容不可见,具有较好的安全性,可作为系统的一个维护后门。\n[0054] 下面结合具体实例对本发明作进一步说明,其中,一个完整脚本文件的范例如下(加密之前),用于自动升级UBoot自身:\n[0055] #此文件名固定为script.txt,用于内核、文件系统升级和硬件检测,只读;\n[0056] #执行步骤:1.内核升级;2.FS升级;3.硬件测试;各步均非必需;\n[0057] #此脚本文件加载到0xE00000,2个升级文件及硬件测试程序加载到0x8000;\n[0058] #UBoot升级,根据需要更换UBoot文件名\n[0059] fatload usb 00x8000UBoot-3010RB-20101010(0.06_APE_12864).bin0x30000[0060] protect off all\n[0061] erase 7f0000007f02ffff\n[0062] cp.b 80007f00000030000\n[0063] #校验字:4649\n[0064] 注:(#号开始的为注释部分和校验字段,其他为UBoot指令码)\n[0065] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
法律信息
- 2016-06-29
- 2013-07-10
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201110382144.4
申请日: 2011.11.25
- 2013-06-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-02-09
|
2009-07-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |