CN112799698A - 一种U-boot下基于SD卡自动升级方法 - Google Patents
一种U-boot下基于SD卡自动升级方法 Download PDFInfo
- Publication number
- CN112799698A CN112799698A CN202110051865.0A CN202110051865A CN112799698A CN 112799698 A CN112799698 A CN 112799698A CN 202110051865 A CN202110051865 A CN 202110051865A CN 112799698 A CN112799698 A CN 112799698A
- Authority
- CN
- China
- Prior art keywords
- card
- upgraded
- equipment
- file
- upgrade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术领域,具体涉及一种U‑boot下基于SD卡自动升级方法。本发明包括待升级设备、SD卡和SD卡读卡器,待升级设备设置有至少一个串口;SD卡读卡器具有与待升级设备上串口匹配的接口;并包括如下步骤:先将SD卡插入读卡器,将读卡器与待升级设备连接,待升级设备检测插入的SD卡是否为升级卡,并检测SD卡中的内容是否有损坏;当二者都正确时,在对设备进行升级时,待升级设备中的U‑Boot程序引导SD卡中的Kernel启动;对待升级设备进行升级。本发明的优点是:无需考虑设备是否接入网络,可以实现对设备的离线升级;在对设备升级时,只需要将SD卡通过读卡器与设备连接,设备就可以自动实现升级。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种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卡并检测烧写文件是否损坏时,待升级设备也可以实时显示自检进度,并将显示自检结果;最后待升级设备也可以显示升级结果。
Claims (8)
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中的任意一种或多种。
2.如权利要求1所述的一种U-boot下基于SD卡自动升级方法,其特征在于,所述步骤S0000:进行准备工作包括:
将待升级内容的升级包放入SD卡中,用于升级待升级设备的待升级内容;为SD卡配置Kernel和文件系统,用于在升级时从SD卡启动Kernel;SD卡设置升级配置文件,用于决定所升级的内容;为SD卡设置升级标记,用于开启升级操作;将待升级内容的升级包通过hash算法运算,并将运算得到的hash值放入SD卡存储,hash值用于后续对文件进行检测;修改待升级设备的U-Boot源码,使待升级设备的U-Boot在加载Kernel前,查询是否有SD卡,并查询SD卡是否有升级标记。
3.如权利要求1所述的一种U-boot下基于SD卡自动升级方法,其特征在于,所述步骤S1005:依照SD卡中的预先设定对设备指定内容进行升级,包括:对待升级设备的Nandflash进行分区,按照SD卡中升级配置文件的内容将预设待升级内容的升级包烧写至待升级设备分区过后的Nandflash上;同时将SD卡中存储的hash值烧写值待升级设备。
4.如权利要求1所述的一种U-boot下基于SD卡自动升级方法,其特征在于,所述步骤S1004:SD卡对储存的文件进行自检;包括:启动升级程序对存储在SD卡中待升级内容的升级包进行hash算法运算,运算得到的hash值和存储在SD卡中的hash值进行比对;
所述步骤S1006:烧写完成后取出SD卡,并检测从SD卡中烧写到待升级设备中的文件是否损坏;包括:启动升级程序对烧写至待升级设备上的升级包进行hash算法运算,运算得到的hash值和存储在待升级设备中的hash值进行比对。
5.如权利要求1所述的一种U-boot下基于SD卡自动升级方法,其特征在于,所述步骤S2000:SD卡插入错误处理包括:待升级设备未检测SD卡,或未检测到SD卡上有升级标记,则待升级设备直接加载Kernel。
6.如权利要求1所述的一种U-boot下基于SD卡自动升级方法,其特征在于,所述步骤S3000;SD卡文件损坏处理为:将SD卡格式化,重新对SD卡进行准备工作。
7.如权利要求1所述的一种U-boot下基于SD卡自动升级方法,其特征在于,所述步骤S4000:文件烧写失败处理包括:检测文件烧写失败的原因;如为待升级设备的Nandflash损坏导致则更换待升级设备的Nandflash;如为升级包烧写遗失导致则重新烧写升级包。
8.如权利要求1-7任意一项所述的一种U-boot下基于SD卡自动升级方法,其特征在于,所述待升级设备还具有显示功能,用于实时显示升级过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051865.0A CN112799698A (zh) | 2021-01-14 | 2021-01-14 | 一种U-boot下基于SD卡自动升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051865.0A CN112799698A (zh) | 2021-01-14 | 2021-01-14 | 一种U-boot下基于SD卡自动升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112799698A true CN112799698A (zh) | 2021-05-14 |
Family
ID=75811016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110051865.0A Pending CN112799698A (zh) | 2021-01-14 | 2021-01-14 | 一种U-boot下基于SD卡自动升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799698A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344854A (zh) * | 2008-08-22 | 2009-01-14 | 四川长虹电器股份有限公司 | 通过SD卡对嵌入式Linux设备进行升级的方法 |
CN103645918A (zh) * | 2013-12-10 | 2014-03-19 | 深圳市道通科技有限公司 | 一种工业内窥镜的软件升级方法和装置 |
US20150277897A1 (en) * | 2013-09-13 | 2015-10-01 | Huizhou Tcl Mobile Communication Co., Ltd. | Software upgrade method and system for mobile terminal |
CN104965725A (zh) * | 2015-01-16 | 2015-10-07 | 北京中电兴发科技有限公司 | 一种基于sd卡的嵌入式设备全自动固件烧写方法 |
WO2017186089A1 (zh) * | 2016-04-25 | 2017-11-02 | 广州路派电子科技有限公司 | 一种车载解码器软件升级文件的方法 |
CN108446133A (zh) * | 2018-03-29 | 2018-08-24 | 广东美的暖通设备有限公司 | 固件升级控制方法、固件升级控制系统及电器 |
CN109062594A (zh) * | 2018-07-20 | 2018-12-21 | 武汉科技大学 | 一种嵌入式QNX/Linux下汽车ECU程序自动安全升级的方法 |
CN111090443A (zh) * | 2019-11-20 | 2020-05-01 | 深圳市桑格尔科技股份有限公司 | 一种保障linux系统安全升级的方法、设备和存储介质 |
-
2021
- 2021-01-14 CN CN202110051865.0A patent/CN112799698A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344854A (zh) * | 2008-08-22 | 2009-01-14 | 四川长虹电器股份有限公司 | 通过SD卡对嵌入式Linux设备进行升级的方法 |
US20150277897A1 (en) * | 2013-09-13 | 2015-10-01 | Huizhou Tcl Mobile Communication Co., Ltd. | Software upgrade method and system for mobile terminal |
CN103645918A (zh) * | 2013-12-10 | 2014-03-19 | 深圳市道通科技有限公司 | 一种工业内窥镜的软件升级方法和装置 |
CN104965725A (zh) * | 2015-01-16 | 2015-10-07 | 北京中电兴发科技有限公司 | 一种基于sd卡的嵌入式设备全自动固件烧写方法 |
WO2017186089A1 (zh) * | 2016-04-25 | 2017-11-02 | 广州路派电子科技有限公司 | 一种车载解码器软件升级文件的方法 |
CN108446133A (zh) * | 2018-03-29 | 2018-08-24 | 广东美的暖通设备有限公司 | 固件升级控制方法、固件升级控制系统及电器 |
CN109062594A (zh) * | 2018-07-20 | 2018-12-21 | 武汉科技大学 | 一种嵌入式QNX/Linux下汽车ECU程序自动安全升级的方法 |
CN111090443A (zh) * | 2019-11-20 | 2020-05-01 | 深圳市桑格尔科技股份有限公司 | 一种保障linux系统安全升级的方法、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6275931B1 (en) | Method and apparatus for upgrading firmware boot and main codes in a programmable memory | |
US6615404B1 (en) | Method and apparatus for downloading software into an embedded-system | |
US7089549B2 (en) | Updating flash memory | |
US7971199B1 (en) | Mobile device with a self-updating update agent in a wireless network | |
CN112416406B (zh) | 终端设备升级方法、装置、终端设备和介质 | |
US20040143828A1 (en) | Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating | |
EP1591893A1 (en) | Method and system for fail-safe updating of boot code | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
KR20080008425A (ko) | 전자 장치에서의 3-단계 부팅 프로세스 | |
EP3113018A1 (en) | Method and apparatus for running version file | |
CN105760191A (zh) | 嵌入式系统设备程序烧写量产方法 | |
WO2011088701A1 (zh) | 一种跨平台版本在线升级的方法及装置 | |
CN112799698A (zh) | 一种U-boot下基于SD卡自动升级方法 | |
US6772364B1 (en) | Fault tolerant field updating with alternation of memory areas | |
US7428635B2 (en) | Method of writing non-volatile memory that avoids corrupting the vital initialization code | |
CN116755735A (zh) | 嵌入式软件在线升级方法、装置、腹膜透析仪、存储介质 | |
JP3805195B2 (ja) | プログラム書き換え装置及びプログラム書き換え方法 | |
US6301709B1 (en) | Circuit pack system with semi-or fully-automatic upgrade capability | |
CN106611124B (zh) | 计算机装置及其开机方法 | |
Cisco | Router Memory Commands | |
Cisco | Router Memory Commands | |
Cisco | Maintaining Router Memory | |
Cisco | Maintaining Router Memory | |
CN113918199A (zh) | 底层固件程序的更新方法、存储介质以及电子设备 | |
CN107015827B (zh) | 嵌入式系统及其自动运行第三方扩展程序的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |