首页> 中国专利> 一种U-boot下基于SD卡自动升级方法

一种U-boot下基于SD卡自动升级方法

摘要

本发明涉及计算机技术领域,具体涉及一种U‑boot下基于SD卡自动升级方法。本发明包括待升级设备、SD卡和SD卡读卡器,待升级设备设置有至少一个串口;SD卡读卡器具有与待升级设备上串口匹配的接口;并包括如下步骤:先将SD卡插入读卡器,将读卡器与待升级设备连接,待升级设备检测插入的SD卡是否为升级卡,并检测SD卡中的内容是否有损坏;当二者都正确时,在对设备进行升级时,待升级设备中的U‑Boot程序引导SD卡中的Kernel启动;对待升级设备进行升级。本发明的优点是:无需考虑设备是否接入网络,可以实现对设备的离线升级;在对设备升级时,只需要将SD卡通过读卡器与设备连接,设备就可以自动实现升级。

著录项

  • 公开/公告号CN112799698A

    专利类型发明专利

  • 公开/公告日2021-05-14

    原文格式PDF

  • 申请/专利权人 陕西建工安装集团(河南)有限公司;

    申请/专利号CN202110051865.0

  • 发明设计人 马锦宝;李志刚;张梦博;孙志珑;

    申请日2021-01-14

  • 分类号G06F8/65(20180101);

  • 代理机构51230 成都弘毅天承知识产权代理有限公司;

  • 代理人许志辉

  • 地址 450000 河南省郑州市郑东新区商务内环路9号楼11层1101号、1102号、1103号、1105号、1106号、1108号

  • 入库时间 2023-06-19 10:58:46

说明书

技术领域

本发明涉及计算机技术领域,具体涉及一种U-boot下基于SD卡自动升级方法。

背景技术

U-Boot是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。

目前对设备的升级主要通过维护人员通过网络下载远程服务器上的升级包,对设备的系统或者应用进行升级;而很多设备处于内网状态,并且有些设备的系统存在问题,则不能通过网络对这一类设备进行维护升级。目前维护人员对这一类设备进行维护需要携带PC机去现场维护设备,十分不方便。

发明内容

本发明所要解决的技术问题是:提供一种U-boot下基于SD卡自动升级方法,可以方便维护人员对待升级设备进行升级。

本发明所采用的技术方案是:一种U-boot下基于SD卡自动升级方法,包括待升级设备、SD卡和SD卡读卡器,待升级设备设置有至少一个串口;SD卡读卡器具有与待升级设备上串口匹配的接口,还包括如下步骤:

S0000:进行准备工作;

S1001:通过SD卡读卡器,将SD卡与待升级设备连接;

S1002:待升级设备检测插入的SD卡中是否有升级标记;如果没有则进入S2000:SD卡插入错误,如果有则进行步骤S1003:待升级设备中的U-Boot程序引导SD卡中的Kernel启动;

S1004:SD卡对其存储的待升级文件进行自检;如果SD卡存储内容损坏则进入步骤S3000:SD卡文件损坏处理;如果SD卡中存储内容完好无损,则进行步骤S1005:依照SD卡中的设定将待升级内容的升级包烧写至待升级设备的指定区域;

S1006:烧写完成后取出SD卡,并检测从SD卡中烧写到待升级设备中的文件是否损坏;如果损坏则进入步骤S4000:文件烧写失败处理;如果文件完好无损,则进入步骤S1007:升级成功;

其中待升级设备包括:计算机和服务器;其中待升级内容为:U-Boot、Kernel、设备树、rootfs和App中的任意一种或多种

进一步的是,步骤S0000:进行准备工作包括:将待升级内容的升级包放入SD卡中,用于升级待升级设备的待升级内容;为SD卡配置Kernel和文件系统,用于在升级时从SD卡启动Kernel;SD卡设置升级配置文件,用于决定所升级的内容;为SD卡设置升级标记,用于开启升级操作;将待升级内容的升级包通过hash算法运算,并将运算得到的hash值放入SD卡存储,hash值用于后续对文件进行检测;修改待升级设备的U-Boot源码,使待升级设备的U-Boot在加载Kernel前,查询是否有SD卡,并查询SD卡是否有升级标记。

进一步的是:步骤S1005:依照SD卡中的预先设定对设备指定内容进行升级,包括:对待升级设备的Nandflash进行分区,按照SD卡中升级配置文件的内容将预设待升级内容的升级包烧写至待升级设备分区过后的Nandflash上;同时将SD卡中存储的hash值烧写值待升级设备。

进一步的是:步骤S1004:SD卡对储存的文件进行自检,包括:启动升级程序对存储在SD卡中的升级内容的升级包进行hash算法运算,运算得到的hash值和存储在SD卡中的hash值进行比对;步骤S1006:烧写完成后取出SD卡,并检测从SD卡中烧写到待升级设备中的文件是否损坏,包括:启动升级程序对烧写至待升级设备上的升级包进行hash算法运算,运算得到的hash值和存储在待升级设备中的hash值进行比对。

进一步的是:步骤S2000:SD卡插入错误处理包括:待升级设备未检测SD卡,或未检测到SD卡上有升级标记,则待升级设备直接加载Kernel。

进一步的是:步骤S3000:SD卡文件损坏处理为:将SD卡格式化,重新对SD卡进行准备工作。

进一步的是:步骤S4000:文件烧写失败处理,包括:检测文件烧写失败的原因;如为待升级设备的Nandflash损坏导致则更换待升级设备的Nandflash;如为升级包烧写遗失导致则重新烧写升级包。

进一步的是:待升级设备还具有显示功能,用于实时显示升级过程。

本发明的有益效果是:在对设备进行升级时,无需考虑设备是否接入网络,可以实现对设备的离线升级;在对设备升级时,只需要将SD卡通过SD卡读卡器与设备连接,设备就可以自动实现升级。

附图说明

图1为本发明一种U-boot下基于SD卡自动升级方法的流程框图;

图2为本发明一种U-boot下基于SD卡自动升级方法待升级设备的Nandflash分区图。

具体实施方式

下面结合附图对本发明做进一步的说明。

实施例1

如图1所示,一种U-boot下基于SD卡自动升级方法,包括待升级设备、SD卡和SD卡读卡器,待升级设备设置有至少一个串口;SD卡读卡器具有与待升级设备上串口匹配的接口,还包括如下步骤:

S0000:进行准备工作;

S1001:通过SD卡读卡器,将SD卡与待升级设备连接;

S1002:待升级设备检测插入的SD卡中是否有升级标记;如果没有则进入S2000:SD卡插入错误,如果有则进行步骤S1003:待升级设备中的U-Boot程序引导SD卡中的Kernel启动;

S1004:SD卡对其存储的待升级文件进行自检;如果SD卡存储内容损坏则进入步骤S3000:SD卡文件损坏处理;如果SD卡中存储内容完好无损,则进行步骤S1005:依照SD卡中的设定将待升级内容的升级包烧写至待升级设备的指定区域;

S1006:烧写完成后取出SD卡,并检测从SD卡中烧写到待升级设备中的文件是否损坏;如果损坏则进入步骤S4000:文件烧写失败处理;如果文件完好无损,则进入步骤S1007:升级成功;

其中待升级设备包括:计算机和服务器;其中待升级内容为:U-Boot、Kernel、设备树、rootfs和App中的任意一种或多种。

在维护人员需要对设备进行升级时,将已经做好前期准备工作的SD卡通过SD卡读卡器与待升级设备连接,设备检测到SD卡插入并具有升级标记时,U-boot引导SD卡中的Kernel启动,否则进行SD卡插入错误处理;在SD卡中的Kernel启动后,为保证升级的成功有效,需要对SD卡的内容进行自检,检测文件在SD卡保存过程中是否发生损坏等,如果SD卡中的文件发生损坏则进入SD卡文件损坏处理步骤;如果SD卡中的文件内容是完好无损的,则进入下一步的升级;这时,系统会按照SD卡中的预先设定将SD卡中存储的待升级内容的升级包,烧写至待升级设备的特定区域,完成升级烧写工作;在完成升级烧写工作后,系统会对SD卡烧写的文件进行检测,检测烧写的文件是否损坏,是否烧写成功。

实施例2

作为对实施例1的进一步优化;准备工作应该包括:将待升级内容的升级包放入SD卡中,用于升级待升级设备的待升级内容;为SD卡配置Kernel和文件系统,用于在升级时从SD卡启动Kernel;SD卡设置升级配置文件,用于决定所升级的内容;为SD卡设置升级标记,用于开启升级操作;将待升级内容的升级包通过hash算法运算,并将运算得到的hash值放入SD卡存储,hash值用于后续对文件进行检测;修改待升级设备的U-Boot源码,使待升级设备的U-Boot在加载Kernel前,查询是否有SD卡,并查询SD卡是否有升级标记。经过以上的准备工作,设备和SD卡已经基本具备了实现本升级方法的条件,可以完成后续的自动升级。

实施例3

作为对实施例1的进一步优化:步骤S1005:依照SD卡中的预先设定对设备指定内容进行升级,包括:对待升级设备的Nandflash进行如图2所示的分区,按照SD卡中升级配置文件的内容将预设待升级内容的升级包烧写至待升级设备分区过后的Nandflash上;同时将SD卡中存储的hash值烧写值待升级设备。

当升级U-boot时,将擦除/dev/mtd0,然后,将SD卡中的U-boot文件烧写到/dev/mtd0位置处;当升级kernel时,将擦除/dev/mtd4,然后,将SD卡中的内核文件烧写到/dev/mtd4位置处;当升级设备树时,将擦除/dev/mtd3,然后,将SD卡中的设备树文件烧写到/dev/mtd3位置处;当升级rootfs时,将擦除/dev/mtd5,格式化mtd5,将链接mtd5到UBI并且创建相应的UBI设备,从UBI设备上创建UBI卷,然后,挂载mtd5设备;然后,将SD卡中的文件系统文件写到/dev/mtd5位置处;当升级APP时,挂载mtd5设备到/mnt/mtd5下,然后,将相应的APP文件复制到/mnt/mtd5目录下的相应文件夹下,来替换相应的APP文件。

实施例4

作为对实施例1的进一步优化,步骤S1004:SD卡对储存的文件进行自检,包括:启动升级程序对存储在SD卡中待升级内容的升级包进行hash算法运算,将运算得到的hash值和存储在SD卡中的hash值进行比对;步骤S1006:烧写完成后取出SD卡,并检测从SD卡中烧写到待升级设备中的文件是否损坏,包括:启动升级程序对烧写至待升级设备上的升级包进行hash算法运算,将运算得到的hash值和存储在待升级设备中的hash值进行比对;hash算法,是一种从任意文件中创造小的数字「指纹」的方法。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件。

实施例5

作为对实施例1的进一步优化,步骤S2000:SD卡插入错误处理包括:待升级设备未检测SD卡,或未检测到SD卡上有升级标记,则待升级设备直接加载Kernel。

实施例6

作为对实施例1的进一步优化:步骤S3000:SD卡文件损坏处理为:将SD卡格式化,重新对SD卡进行准备工作。

实施例7

作为对实施例1的进一步优化:步骤S4000:文件烧写失败处理,包括:检测文件烧写失败的原因;如为待升级设备的Nandflash损坏导致则更换待升级设备的Nandflash;如为升级包烧写遗失导致则重新烧写升级包。

实施例8

作为对实施例1-7的进一步优化:待升级设备还具有显示功能,用于实时显示升级过程。当进行至步骤S1004:SD卡对存储的文件进行自检时;待升级设备会显示“正在进行自检”;并通过设备显示自检结果;当进行至步骤S1005:按照SD卡中的设定将待升级内容的升级包烧写至待升级设备的指定区域时;待升级设备会显示升级进度,升级内容等信息;待升级还可以在烧写完成后显示升级结果;在进行至步骤S1006:烧写完成后取出SD卡并检测烧写文件是否损坏时,待升级设备也可以实时显示自检进度,并将显示自检结果;最后待升级设备也可以显示升级结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号