一种安全灵活的固件升级方法

文档序号:6402421阅读:135来源:国知局
专利名称:一种安全灵活的固件升级方法
技术领域
本发明属于计算机软件领域,具体涉及一种安全灵活的固件升级方法。
背景技术
固件是一种对电子设备进行内部控制的软件。典型的具有固件的电子设备包括:针对个人用户的终端产品,例如遥控器、计算器、手机、数码相机;与计算机相关的组件或设备,例如硬盘、键盘、光驱、显示器、存储卡;科学仪器;工业机器人等。固件为电子设备提供非常基础的、低水平的操作;一旦离开固件,电子设备将完全无法工作。固件通常存储于电子设备的非易失性存储器中,例如R0M、PR0M或Flash等。固件需要升级,升级通常是为了改正原有固件的错误、或为电子设备增加新的功能等。固件的升级通常是由电子设备制造商提供二进制的映像文件,使电子设备加载该固件文件并按照一定程序进行升级。对于嵌入式设备,为了提高扩展性和灵活性等,通常需要具备固件升级的能力。固件升级失败通常将会引发嵌入式设备无法使用需要返厂维修严重后果。有鉴于此,本发明人针对现有技术的缺陷深入研究,并有本案产生。

发明内容
本发明所要解决的技术问题在于提供一种安全灵活的固件升级方法。本发明是这样实现的:
一种安全灵活的固件升级方法,
包括如下步骤:
步骤1:用户触发进入升级,此时启动升级程序,名称Pl ;
步骤2:pl根据用户提供的固件地址去下载固件头;
步骤3:固件头下载完成后,pi判断用户提供的固件数据是否正确,如果固件数据错误,转入步骤4,如果正确,则转入步骤5 ;
步骤4:pl停止升级并反馈用户错误信息;
步骤5: pi杀死除自己以外的全部进程,来让出整个设备的内存,并且这样避免了其他程序对升级的干扰;
步骤6、pi此时开始下载整个固件到内存;
步骤7:整个固件下载完成后,pi设置和保存同步信息;
步骤8:pl对固件中子升级程序所在的分区数据进行解密和解压缩,提取出自带的子升级程序,名称P2 ;
步骤9:pl调用p2去完成升级动作,pi等待升级完成;
步骤10:p2检测固件是否合法,是,转入步骤12,否,则转入步骤11 ;
步骤11:停止升级,并通知Pl;
步骤12:p2对分区数据进行解密和解压缩,转入步骤13 ; 步骤13:p2开始对设备进行具体的升级动作;
步骤14:当p2完成后通知pi,然后重启设备升级完成。进一步地,所述固件包括:
用于判断固件数据包是否合法的固件头;
经过加密的子升级程序P2;
经过加密的各个分区数据。进一步地,所述步骤2中,判断用户提供的固件数据是否正确采用以下方式进行: 判断固件的设备id是否和设备匹配,不匹配则不升级;
判断固件的oem号是否和设备匹配,不匹配则不升级;
判断固件的版本号是否和设备相同,相同则不升级。进一步地,所述子升级程序P2包括:
分区头校验正确;
分区是否强制升级,强制则不判断分区版本号,否则分区版本号和设备分区版本号相同则不升级;
根据分区数据压缩类型进行数据解压;
根据分区数据加密类型进行数据解密;
根据分区数据类型将数据写入设备;
如此循环遍历升级全部的分区数据。进一步地,所述固件数据,是根据设备的分区划分为不同的数据分区,每一个分区都有分区头来标记该分区的信息,所述信息包括分区版本,分区大小,分区数据类型,分区加密方式,分区压缩方式,分区校验值;其中分区数据类型包括:bin文件,普通文件,nand数据,nand带oob数据,nor数据,可执行程序,配置表。本发明的优点在于:事先下载固件头来判断固件的合法性,提高升级安全性;固件将全部下载到内存,保证固件的完整性,提高升级安全性;固件中自带子升级程序,升级的动作由该子升级程序决定,提高升级的灵活度;子升级程序所在的分区进行了加密,保证了固件的安全性;子升级程序会进一步判断固件的合法性,提高升级的安全性;根据分区头信息能够实现固件升级的加密,升级数据的压缩;通过分区版本号判断是否升级来提高升级的速度;当固件格式改变时,只需改变子升级程序,不影响主升级逻辑;子升级程序可以作为bug修复的途径;主升级程序的bug不会影响子升级程序;主升级程序和子升级程序可以独立开发和维护,提高协作能力;可以实现分区数据的多样化;可以实现升级的加密功能。


下面参照附图结合实施例对本发明作进一步的描述。图1是本发明固级升级方法流程示意图。
具体实施例方式一种安全灵活的固件升级方法,如图1所示,包括如下步骤:
步骤1:用户触发进入升级,此时启动升级程序,名称Pl ; 步骤2:pl根据用户提供的固件地址去下载固件头;
步骤3:固件头下载完成后,pi判断用户提供的固件数据是否正确,如果固件数据错误,转入步骤4,如果正确,则转入步骤5 ;
固件数据,是根据设备的分区划分为不同的数据分区,每一个分区都有分区头来标记该分区的信息,所述信息包括分区版本,分区大小,分区数据类型,分区加密方式,分区压缩方式,分区校验值;其中分区数据类型包括:bin文件,普通文件,nand数据,nand带oob数据,nor数据,可执行程序,配置表。固件包括:用于判断固件数据包是否合法的固件头;经过加密的子升级程序P2 ;经过加密的各个分区数据。步骤4:pl停止升级并反馈用户错误信息;
步骤5: pi杀死除自己以外的全部进程,来让出整个设备的内存,并且这样避免了其他程序对升级的干扰;
步骤6、pi此时开始下载整个固件到内存;
步骤7:整个固件下载完成后,pi设置和保存同步信息;
步骤8:pl对固件中的子升级程序所在的分区数据进行解密和解压缩,提取出子升级程序,名称p2 ;
步骤9:pl调用p2去完成升级动作,pi等待升级完成;
步骤10:p2检测固件是否合法,是,转入步骤12,否,则转入步骤11 ;
步骤11:停止升级,并通知Pl ;
步骤12:p2对分区数据进行解密和解压缩,转入步骤13 ;
步骤13:p2开始对设备进行具体的升级动作;
步骤14:当p2完成后通知pi,然后重启设备升级完成。其中步骤2中,判断用户提供的固件数据是否正确采用以下方式进行:
判断固件的设备id是否和设备匹配,不匹配则不升级;
判断固件的oem号是否和设备匹配,不匹配则不升级;
判断固件的版本号是否和设备相同,相同则不升级。子升级程序P2包括:
分区头校验正确;
分区是否强制升级,强制则不判断分区版本号,否则分区版本号和设备分区版本号相同则不升级;
根据分区数据压缩类型进行数据解压;
根据分区数据加密类型进行数据解密;
根据分区数据类型将数据写入设备;
如此循环遍历升级全部的分区数据。本发明事先下载固件头来判断固件的合法性,提高升级安全性;固件将全部下载到内存,保证固件的完整性,提高升级安全性;固件中自带子升级程序,升级的动作由该子升级程序决定,提高升级的灵活度;子升级程序所在的分区进行了加密,保证了固件的安全性;子升级程序会进一步判断固件的合法性,提高升级的安全性;根据分区头信息能够实现固件升级的加密,升级数据的压缩;通过分区版本号判断是否升级来提高升级的速度;当固件格式改变时,只需改变子升级程序,不影响主升级逻辑;子升级程序可以作为bug修复的途径;主升级程序的bug不会影响子升级程序;主升级程序和子升级程序可以独立开发和维护,提高协作能力;可以实现分区数据的多样化;可以实现升级的加密功能。以上所述仅为本发明的较佳实施用例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种安全灵活的固件升级方法,其特征在于: 包括如下步骤: 步骤1:用户触发进入升级,此时启动升级程序,名称为Pl ; 步骤2:pl根据用户提供的固件地址去下载固件头; 步骤3:固件头下载完成后,pi判断用户提供的固件数据是否正确,如果固件数据错误,转入步骤4,如果正确,则转入步骤5 ; 步骤4:pl停止升级并反馈用户错误信息; 步骤5: pi杀死除自己以外的全部进程,来让出整个设备的内存,并且这样避免了其他程序对升级的干扰; 步骤6、pi此时开始下载整个固件到内存; 步骤7:整个固件下载完成后,pi设置和保存同步信息; 步骤8:pl对固件中的子升级程序所在的分区数据进行解密和解压缩,提取出所述子升级程序,,所述子升级程序的名称为P2 ; 步骤9:pl调用p2去完成升级动作,pi等待升级完成; 步骤10:p2检测固件是否合法,是,转入步骤12,否,则转入步骤11 ; 步骤11:停止升级,并通知Pl;步骤12:p2对升级分区数据进行解密和解压缩;转入步骤13 ; 步骤13:p2开始对设备进行具体的升级动作; 步骤14:当p2完成后通知pi,然后重启设备升级完成。
2.如权利要求1所述的一种安全灵活的固件升级方法,其特征在于:所述固件包括: 用于判断固件数据包是否合法的固件头; 经过加密的子升级程序P2; 经过加密的各个分区数据。
3.如权利要求1的所述的一种安全灵活的固件升级方法,其特征在于:所述步骤2中,判断用户提供的固件数据是否正确采用以下方式进行: 判断固件的设备id是否和设备匹配,不匹配则不升级; 判断固件的oem号是否和设备匹配,不匹配则不升级; 判断固件的版本号是否和设备相同,相同则不升级。
4.如权利要求1的所述的一种安全灵活的固件升级方法,其特征在于:所述子升级程序P2包括: 分区头校验正确; 分区是否强制升级,强制则不判断分区版本号,否则分区版本号和设备分区版本号相同则不升级; 根据分区数据压缩类型进行数据解压; 根据分区数据加密类型进行数据解密; 根据分区数据类型将数据写入设备; 如此循环遍历升级全部的分区数据。
5.如权利要求1的所述的一种安全灵活的固件升级方法,其特征在于:所述固件数据,是根据设备的分区划分为不同的数据分区,每一个分区都有分区头来标记该分区的信息,所述信息包括分区版本,分区大小,分区数据类型,分区加密方式,分区压缩方式,分区校验值;其中分区数据类型包括:bin文件,普通文件,nand数据,nand带oob数据,nor数据,可执行程序,配置表。`
全文摘要
一种安全灵活的固件升级方法,包括用户触发进入升级,启动升级程序,名称p1;p1根据用户提供的固件地址去下载固件头;p1判断用户提供的固件数据是否正确,如果正确,p1杀死除自己以外的全部进程,下载整个固件到内存;完成后,p1设置和保存同步信息;p1对子升级程序分区进行解密和解压缩,提取子升级程序,名称p2;p1调用p2去完成升级动作,p1等待升级完成;p2检测固件是否合法,非法则停止升级,并通知p1,合法,p2开始对设备进行具体的升级动作;p2对分区数据进行解密和解压缩,然后进行设备升级;当p2完成后通知p1,然后重启设备升级完成。本发明提高升级安全性,保证固件的完整性。
文档编号G06F9/445GK103207800SQ20131014472
公开日2013年7月17日 申请日期2013年4月24日 优先权日2013年4月24日
发明者冯万健 申请人:厦门亿联网络技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1