一种安全灵活的固件升级方法,包括:用户触发进入升级,启动升级程序,名称p1;p1根据用户提供的固件地址去下载固件头;p1判断用户提供的固件数据是否正确,如果正确,p1杀死除自己以外的全部进程,下载整个固件到内存;完成后,p1设置和保存同步信息;p1对子升级程序分区进行解密和解压缩,提取子升级程序,名称p2;p1调用p2去完成升级动作,p1等待升级完成;p2检测固件是否合法,非法则停止升级,并通知p1,合法,p2开始对设备进行具体的升级动作;p2对分区数据进行解密和解压缩,然后进行设备升级;当p2完成后通知p1,然后重启设备升级完成。本发明专利技术提高升级安全性,保证固件的完整性。
【技术实现步骤摘要】
本专利技术属于计算机软件领域,具体涉及。
技术介绍
固件是一种对电子设备进行内部控制的软件。典型的具有固件的电子设备包括:针对个人用户的终端产品,例如遥控器、计算器、手机、数码相机;与计算机相关的组件或设备,例如硬盘、键盘、光驱、显示器、存储卡;科学仪器;工业机器人等。固件为电子设备提供非常基础的、低水平的操作;一旦离开固件,电子设备将完全无法工作。固件通常存储于电子设备的非易失性存储器中,例如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:用户触发进入升级,此时启动升级程序,名称为p1;步骤2:p1根据用户提供的固件地址去下载固件头;步骤3:固件头下载完成后,p1判断用户提供的固件数据是否正确,如果固件数据错误,转入步骤4,如果正确,则转入步骤5;步骤4:p1停止升级并反馈用户错误信息;步骤5:?p1杀死除自己以外的全部进程,来让出整个设备的内存,并且这样避免了其他程序对升级的干扰;步骤6、p1此时开始下载整个固件到内存;步骤7:整个固件下载完成后,p1设置和保存同步信息;步骤8:p1对固件中的子升级程序所在的分区数据进行解密和解压缩,提取出所述子升级程序,,所述子升级程序的名称为p2;步骤9:p1调用p2去完成升级动作,p1等待升级完成;步骤10:p2检测固件是否合法,是,转入步骤12,否,则转入步骤11;步骤11:停止升级,并通知p1;步骤12:p2对升级分区数据进行解密和解压缩;转入步骤13;步骤13:p2开始对设备进行具体的升级动作;步骤14:当p2完成后通知p1,然后重启设备升级完成。
【技术特征摘要】
【专利技术属性】
技术研发人员:冯万健,
申请(专利权)人:厦门亿联网络技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。