CN105488419A - 一种固件安全升级方法及路由设备 - Google Patents
一种固件安全升级方法及路由设备 Download PDFInfo
- Publication number
- CN105488419A CN105488419A CN201510906709.2A CN201510906709A CN105488419A CN 105488419 A CN105488419 A CN 105488419A CN 201510906709 A CN201510906709 A CN 201510906709A CN 105488419 A CN105488419 A CN 105488419A
- Authority
- CN
- China
- Prior art keywords
- firmware
- flash
- flag
- space
- upgrading method
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种固件安全升级方法,包括:S10保存固件至flash中;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。本发明利用固件openwrt的JFFS2文件系统的可读写特性,在升级过程中在flash中暂时保存固件,在升级完成后自动删除固件,保证了升级过程可以顺利完成,同时flash空间可以正确释放。
Description
技术领域
本发明涉及数据通信领域,特别是涉及一种固件安全升级方法及路由设备。
背景技术
目前openwrt路由器和传统路由器固件升级方法基本类似,可以通过串口或者web服务器将固件首先读入到SDRAM当中,然后擦除flash,将固件写入到flash当中,最后重启路由器。
与传统路由器不同,openwrt的flash中的固件区域分为SquashFS和JFFS2两种文件系统,其中SquashFS是只读区域,而JFFS2具有可读写的特性。
OpenWrt的包管理提供了一个完全可写的文件系统。用户可以从远程仓库下载ipk,并安装到路由器当中,扩展自己的功能,这点与安卓手机在应用市场下载apk应用相类似。利用这个特性用户可以便捷地升级部分功能,然而在软件快速迭代的现在,用户还是有相当多地场景是需要升级整个固件的。
在目前绝大多数的路由器中,是不支持固件升级失败回退功能的,用户在升级固件的过程中,往往是小心翼翼.这限制了我司的固件快速推广.同时用户一旦因为意外情况,固件升级失败,由于无法再次进入web配置页面,导致用户路由器只能返厂维修或者自认倒霉。
当前针对固件安全升级,解决方案主要是通过在flash中划定一块区域存放备份固件,当升级过程中发生意外情况,要么将备份区域的固件拷贝到uboot的启动位置,要么将uboot的启动位置换到备份固件的首地址。
总之,当前方案都会对flash空间造成一定的浪费。
发明内容
本发明的目的是提供一种安全的固件升级的方法,能够保证用户升级顺利完成,同时flash存储空间可以正确释放。
本发明提供的技术方案如下:
本发明提供一种固件安全升级方法,包括:S10保存固件至flash中;S20从flash中将固件读入到SDRAM(SynchronousDynamicRandomAccessMemory,同步动态随机存储器)中;S30升级固件;S40当固件升级完成后,清理flash空间。
本发明还提供另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10保存固件至flash中;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
进一步优选的,所述步骤S10保存固件至flash中是指将固件分段式地保存到flash中。
本发明还提供另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10将固件分段式地保存到flash中;S12判断固件完整性;若判断为否,则返回执行步骤S10;否则,将flag区域中的标志位置1,保存固件首地址;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
本发明还提供另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10将固件分段式地保存到flash中;S12判断固件完整性;若判断为否,则返回执行步骤S10;否则,将flag区域中的标志位置1,保存固件首地址;S14读取并判断flag标志位;若flag的标志位为1,执行步骤S20;若flag的标志位为0,则读取flag地址位,进一步判断所述地址位是否为有效地址位;当flag地址位为有效地址,清理flash空间;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
本发明还提供另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10将固件分段式地保存到flash中;S12判断固件完整性;若判断为否,则返回执行步骤S10;否则,将flag区域中的标志位置1,保存固件首地址;S14读取并判断flag标志位;若flag的标志位为1,执行步骤S20;若flag的标志位为0,则读取flag地址位,进一步判断所述地址位是否为有效地址位;当flag地址位为有效地址,清理flash空间;S16判断清理flash空间是否完毕;若是,升级结束;否则,返回执行步骤S14;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
进一步优选的,所述步骤S30升级固件还包括:判断升级是否完成;若是,执行步骤S40;否则,重复执行步骤S14。
进一步优选的,所述步骤S40当固件升级完成后,清理flash空间还包括:将flag标志位置0,返回执行步骤S16。
本发明还提供一种路由设备,应用上述固件安全升级方法。
与现有技术相比,本发明利用openwrt的JFFS2文件系统的可读写特性,在升级过程中在flash中暂时保存固件,在升级完成后自动删除固件.保证了升级过程可以顺利完成,同时flash空间可以正确释放。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种固件安全升级方法及路由设备的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1为本发明一种固件安全升级方法的步骤示意图;
图2为本发明一种固件安全升级方法的固件的flash分布图;
图3为本发明一种固件安全升级方法的固件在flash中保存形式图;
图4为本发明一种固件安全升级方法的流程图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
图1为本发明一种固件安全升级方法的步骤示意图,作为本发明的一个具体实施例,如图1所示,包括:S10保存固件至flash中;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
对上述实施例进行改进,得到另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10保存固件至flash中;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
进一步优选的,所述步骤S10保存固件至flash中是指将固件分段式地保存到flash中。
图2为本发明一种固件安全升级方法的固件的flash分布图。如图2所示:
flash被分为5个区域:uboot;uboot-env;factory;firmware;config.
Firmware被分为kernel和rootfs两个区域。其中rootfs又可以分为SquashFS和JFFS2两种文件类型。
用户通过串口或者web页面将用于升级的临时备份固件分段式地保存到flash中的rootfs_data区域,这个区域的文件类型是JFFS2类型,可以自由地擦写。标志位flag将会保存在uboot-env区域中,供uboot来读取。
在flag区域中将会保存两个数据:
Boolupdate-prepared//用于保存固件是否需要升级的标志位
Unsignedintaddress//用于保存固件在flash中的首地址
固件部分在flash是分布式存储的,每个部分包含数据头和数据段两个部分,其中数据头包含3个数据:
1.intsize//表示本段连续保存固件的长度.即uboot从这个地址向后读取多少数据
2.intCRC//存储本段连续存储的数据的CRC校验值,从而保证了固件的完整性和正确性.
3.unsignedintaddress//存储了下一段存储文件的首地址
具体的,在正常使用的过程中,flash的使用不是连续的,所以针对目前大小在8M~32M中很难找到连续的空间来存放固件。本发明使用一种分段式的存储方式来存储固件。以使用flash中不连续的3段空间来保存固件为例,其在flash保存形式如图3所示:
将固件分为3个部分,同时加入head头部,头部包含了data长度,CRC校验值,下一个数据段的首地址,其中data长度保证可以读取正确长度的数据,CRC校验值保证数据段的正确性和完整性。下下一个数据段的首地址保证了可以通过地址找到下一个数据段。
对上述实施例进行改进,得到另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10将固件分段式地保存到flash中;S12判断固件完整性;若判断为否,则返回执行步骤S10;否则,将flag区域中的标志位置1,保存固件首地址;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
对上述实施例进行改进,得到另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10将固件分段式地保存到flash中;S12判断固件完整性;若判断为否,则返回执行步骤S10;否则,将flag区域中的标志位置1,保存固件首地址;S14读取并判断flag标志位;若flag的标志位为1,执行步骤S20;若flag的标志位为0,则读取flag地址位,进一步判断所述地址位是否为有效地址位;当flag地址位为有效地址,清理flash空间;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
对上述实施例进行改进,得到另一种固件安全升级方法,包括S00:判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20;S10将固件分段式地保存到flash中;S12判断固件完整性;若判断为否,则返回执行步骤S10;否则,将flag区域中的标志位置1,保存固件首地址;S14读取并判断flag标志位;若flag的标志位为1,执行步骤S20;若flag的标志位为0,则读取flag地址位,进一步判断所述地址位是否为有效地址位;当flag地址位为有效地址,清理flash空间;S16判断清理flash空间是否完毕;若是,升级结束;否则,返回执行步骤S14;S20从flash中将固件读入到SDRAM中;S30升级固件;S40当固件升级完成后,清理flash空间。
进一步优选的,所述步骤S30升级固件还包括:判断升级是否完成;若是,执行步骤S40;否则,重复执行步骤S14。
进一步优选的,所述步骤S40当固件升级完成后,清理flash空间还包括:将flag标志位置0,返回执行步骤S16。
下面详细介绍本发明的工作流程。图4为本发明一种固件安全升级方法的流程图。如图4所示:
200开始。
201判断flash的存储空间是否大于固件所需空间;若判断结果为否,则执行步骤211;否则,则继续执行下一步
202将固件分段式地保存到flash中的rootfs_data区域。
203判断固件的完整性;若是,则执行下一步;否则,提示用户重试,重复执行步骤201。
204将flag区域中的标志位置1,同时保存固件首地址。
205重启系统,由uboot读取flag标志位。
206判断标志位是否为1;若是,则执行下一步;否则,执行步骤214。
207依次从flash中将固件读入到SDRAM中,启动升级流程。
208判断升级是否完成;若是,执行下一步;否则,重复执行步骤205。
209将flag标志位置0。
210清理flash存储空间。
211判断是否清理完毕;若是,执行步骤212;否则重复执行步骤205。
212正常启动系统。
213结束。
214读取并判断flag地址位是否有效;若地址位为有效地址位,则执行步骤210;否则执行步骤212。
本发明还提供一种路由设备,应用上述固件安全升级方法。
原先没有双固件或者固件备份的路由器中,在升级过程中,一旦断电或者断网,路由器则必须返厂维修,对用户而言是个巨大的负担。
而本发明提供的一种路由设备,应用上述固件安全升级方法,在升级过程中的任意时刻断电或者断网都不会影响用户的正常使用。对用户而言,路由器一直都是可用的,不会因为升级过程中的任何意外而导致路由器无法正常启动。对于快速迭代的互联网,本发明有积极意义。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种固件安全升级方法,其特征在于,包括:
S10保存固件至flash中;
S20从flash中将固件读入到SDRAM中;
S30升级固件;
S40当固件升级完成后,清理flash空间。
2.如权利要求1所述的固件安全升级方法,其特征在于,所述步骤S10保存固件至flash中之前还包括S00:
判断flash的存储空间是否大于固件所需空间;若判断结果为否,则清理部分flash空间;否则,执行步骤S20。
3.如权利要求2所述的固件安全升级方法,其特征在于,所述步骤S10保存固件至flash中是指将固件分段式地保存到flash中。
4.如权利要求3所述的固件安全升级方法,其特征在于,所述步骤S10保存固件至flash中之后还包括S12:
判断固件完整性;若判断为否,则返回执行步骤S10;否则,将flag区域中的标志位置1,保存固件首地址。
5.如权利要求4所述的固件安全升级方法,其特征在于,所述步骤S12之后还包括S14:
读取并判断flag标志位;
若flag的标志位为1,执行步骤S20;若flag的标志位为0,则读取flag地址位,进一步判断所述地址位是否为有效地址;
当flag地址位为有效地址,清理flash空间。
6.如权利要求5所述的固件安全升级方法,其特征在于,所述步骤S14之后还包括S16:
判断清理flash空间是否完毕;若是,升级结束;否则,返回执行步骤S14。
7.如权利要求6所述的固件安全升级方法,其特征在于,所述步骤S30升级固件还包括:
判断升级是否完成;若是,执行步骤S40;否则,重复执行步骤S14。
8.如权利要求7所述的固件安全升级方法,其特征在于,所述步骤S40当固件升级完成后,清理flash空间还包括:
将flag标志位置0,返回执行步骤S16。
9.一种路由设备,其特征在于,应用上述1-8任意一项权利要求所述的固件安全升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510906709.2A CN105488419A (zh) | 2015-12-09 | 2015-12-09 | 一种固件安全升级方法及路由设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510906709.2A CN105488419A (zh) | 2015-12-09 | 2015-12-09 | 一种固件安全升级方法及路由设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105488419A true CN105488419A (zh) | 2016-04-13 |
Family
ID=55675393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510906709.2A Pending CN105488419A (zh) | 2015-12-09 | 2015-12-09 | 一种固件安全升级方法及路由设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105488419A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020905A (zh) * | 2016-05-31 | 2016-10-12 | 上海庆科信息技术有限公司 | 一种微控制器固件开发与更新的方法及系统 |
CN107566169A (zh) * | 2017-08-24 | 2018-01-09 | 上海斐讯数据通信技术有限公司 | 一种基于openwrt的固件升级方法及路由器 |
CN111538513A (zh) * | 2020-04-16 | 2020-08-14 | 深圳比特微电子科技有限公司 | 一种虚拟货币矿机电源的批量固件更新方法和系统 |
CN112996026A (zh) * | 2021-04-27 | 2021-06-18 | 深圳市乙辰科技股份有限公司 | 一种无线网络设备的双备份升级方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050229172A1 (en) * | 2004-04-09 | 2005-10-13 | Li-Chun Tu | Method and related device for updating firmware code stored in non-volatile memory |
CN101425018A (zh) * | 2008-12-05 | 2009-05-06 | 深圳创维数字技术股份有限公司 | 基于分段式的嵌入式固件升级方法及装置 |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CN104077167A (zh) * | 2014-07-11 | 2014-10-01 | 杭州华三通信技术有限公司 | 基于nand flash的启动加载方法和装置 |
CN104216791A (zh) * | 2013-05-30 | 2014-12-17 | 上海斐讯数据通信技术有限公司 | 一种校验Flash存储数据的方法 |
CN104331312A (zh) * | 2014-11-24 | 2015-02-04 | 东软熙康健康科技有限公司 | 一种固件升级方法及嵌入式设备 |
CN104573529A (zh) * | 2015-01-28 | 2015-04-29 | 加弘科技咨询(上海)有限公司 | 一种bios固件的划分、更新方法和系统 |
-
2015
- 2015-12-09 CN CN201510906709.2A patent/CN105488419A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050229172A1 (en) * | 2004-04-09 | 2005-10-13 | Li-Chun Tu | Method and related device for updating firmware code stored in non-volatile memory |
CN101425018A (zh) * | 2008-12-05 | 2009-05-06 | 深圳创维数字技术股份有限公司 | 基于分段式的嵌入式固件升级方法及装置 |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CN104216791A (zh) * | 2013-05-30 | 2014-12-17 | 上海斐讯数据通信技术有限公司 | 一种校验Flash存储数据的方法 |
CN104077167A (zh) * | 2014-07-11 | 2014-10-01 | 杭州华三通信技术有限公司 | 基于nand flash的启动加载方法和装置 |
CN104331312A (zh) * | 2014-11-24 | 2015-02-04 | 东软熙康健康科技有限公司 | 一种固件升级方法及嵌入式设备 |
CN104573529A (zh) * | 2015-01-28 | 2015-04-29 | 加弘科技咨询(上海)有限公司 | 一种bios固件的划分、更新方法和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020905A (zh) * | 2016-05-31 | 2016-10-12 | 上海庆科信息技术有限公司 | 一种微控制器固件开发与更新的方法及系统 |
CN107566169A (zh) * | 2017-08-24 | 2018-01-09 | 上海斐讯数据通信技术有限公司 | 一种基于openwrt的固件升级方法及路由器 |
CN107566169B (zh) * | 2017-08-24 | 2021-04-09 | 台州市吉吉知识产权运营有限公司 | 一种基于openwrt的固件升级方法及路由器 |
CN111538513A (zh) * | 2020-04-16 | 2020-08-14 | 深圳比特微电子科技有限公司 | 一种虚拟货币矿机电源的批量固件更新方法和系统 |
CN111538513B (zh) * | 2020-04-16 | 2021-08-27 | 深圳比特微电子科技有限公司 | 一种虚拟货币矿机电源的批量固件更新方法和系统 |
CN112996026A (zh) * | 2021-04-27 | 2021-06-18 | 深圳市乙辰科技股份有限公司 | 一种无线网络设备的双备份升级方法及系统 |
CN112996026B (zh) * | 2021-04-27 | 2021-09-10 | 深圳市乙辰科技股份有限公司 | 一种无线网络设备的双备份升级方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103677947B (zh) | 基于linux的设备双系统保护及升级方法 | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
ES2824830T3 (es) | Procedimiento de actualización de software para un dispositivo integrado | |
CN105488419A (zh) | 一种固件安全升级方法及路由设备 | |
TWI515660B (zh) | 韌體變量更新方法 | |
CN109032632B (zh) | 一种fota升级方法、无线通信终端及存储介质 | |
US8812910B2 (en) | Pilot process method for system boot and associated apparatus | |
US20190287626A1 (en) | Data overwriting device and data overwriting method | |
CN108170495B (zh) | 一种bios升级方法、系统、设备及计算机可读存储介质 | |
CN104572229A (zh) | 嵌入式系统的固件升级方法以及固件升级装置 | |
JP2008198310A (ja) | ビットエラーの修復方法および情報処理装置 | |
CN102411523A (zh) | 文件备份存储方法、装置及其文件系统备份方法 | |
CN107678762B (zh) | 一种系统版本升级方法及装置 | |
CN107566169A (zh) | 一种基于openwrt的固件升级方法及路由器 | |
WO2018145392A1 (zh) | 差分升级方法及装置、终端、存储介质、处理器 | |
CN104915226A (zh) | 一种网络设备软件启动方法、装置及网络设备 | |
CN108572830A (zh) | 一种嵌入式系统及其引导程序的升级方法、系统 | |
CN109582332B (zh) | 互联网摄像机的系统升级方法及装置 | |
CN105404533A (zh) | 程序升级方法和装置 | |
CN102650949A (zh) | 一种存储设备的固件升级的方法及装置 | |
CN111045712A (zh) | 一种具有备份功能的单系统升级方法及系统 | |
CN110704236B (zh) | 芯片flash数据的在线校验方法及计算机存储介质 | |
WO2018049798A1 (zh) | 一种缓存分区重构的方法和装置 | |
CN107329699B (zh) | 一种纠删重写方法及系统 | |
CN108664255B (zh) | 一种软件升级方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20190625 |
|
AD01 | Patent right deemed abandoned |