CN102135896B - 一种基于嵌入式系统实现软件升级的方法和系统 - Google Patents
一种基于嵌入式系统实现软件升级的方法和系统 Download PDFInfo
- Publication number
- CN102135896B CN102135896B CN201110065268.XA CN201110065268A CN102135896B CN 102135896 B CN102135896 B CN 102135896B CN 201110065268 A CN201110065268 A CN 201110065268A CN 102135896 B CN102135896 B CN 102135896B
- Authority
- CN
- China
- Prior art keywords
- file
- dummy block
- upgrading
- equipment
- 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.)
- Expired - Fee Related
Links
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
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Abstract
本发明公开了一种基于嵌入式系统实现软件升级的方法和系统,均可在设备侧建立虚拟块文件,将需要升级的文件放入设备侧的虚拟块文件中;设备侧重新检测虚拟块文件的内容,针对其中需要升级的文件实现升级。本发明方法和系统,均可有效解决PC安装USB驱动程序和FLASH升级可选性问题,并且快速方便、简单。相对于数据卡已有方案,进一步提高包括数据传输在内的升级效率,提高灵活性和用户体验度。
Description
技术领域
本发明涉及嵌入式技术,具体涉及一种基于嵌入式系统实现软件升级的方法和系统。
背景技术
随着3G移动宽带网络技术的日益成熟,数据卡产品也日益丰富,底层使用的操作系统也日益多样化,升级办法日趋多样、完善。
目前,嵌入式LINUX产品的主要升级办法基本都是通过特定软件和升级工具对版本的整体升级,但是这样做降低升级效率,批量升级效率低下、用户体验差,操作不灵活。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于嵌入式系统实现软件升级的方法和系统,提高升级效率,提高灵活性和用户体验度。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于嵌入式系统实现软件升级的方法,该方法包括:
在设备侧建立虚拟块文件,将需要升级的文件放入设备侧的虚拟块文件中;设备侧重新检测虚拟块文件的内容,针对其中需要升级的文件实现升级。
建立虚拟块文件的过程包括:
设备侧在接收到升级命令时,在支持的文件系统的FLASH或者RAM空间通过ZERO零设备建立虚拟块文件。
建立虚拟块文件之后,将需要升级的文件放入虚拟块文件之前,设备侧将自身切换到带有存储类设备的组合并向PC上报为存储类设备;PC加载存储类设备驱动,设备侧挂载虚拟块文件。
所述针对需要升级的文件实现升级的过程包括:
设备侧卸载掉为PC挂载的虚拟块文件,建立目录A并将虚拟块文件挂载到目录A,通过目录A访问虚拟块中的升级文件并对其进行升级。
所述设备侧重新检测虚拟块文件的内容的过程包括:
PC侧通知设备侧,需要升级的文件已放入存储类设备;设备侧收到该通知后重新检测,或进一步重启后重新检测。
一种基于嵌入式系统实现软件升级的系统,该系统包括虚拟块文件维护单元、虚拟块文件升级单元;其中,
所述虚拟块文件维护单元,用于在设备侧建立虚拟块文件,将需要升级的文件接收到设备侧的虚拟块文件中;
所述虚拟块文件升级单元,用于重新检测虚拟块文件的内容,针对其中需要升级的文件实现升级。
所述虚拟块文件维护单元建立虚拟块文件时,具体用于:
在接收到升级命令时,在支持的文件系统的FLASH或者RAM空间通过ZERO设备建立虚拟块文件。
所述虚拟块文件维护单元建立虚拟块文件之后,将需要升级的文件接收到虚拟块文件之前,进一步用于将设备侧切换到带有存储类设备的组合并向PC上报为存储类设备,挂载虚拟块文件;触发PC加载存储类设备驱动。
所述虚拟块文件升级单元针对需要升级的文件实现升级时,具体用于:
卸载掉为PC挂载的虚拟块文件,建立目录A并将虚拟块文件挂载到目录A,通过目录A访问虚拟块中的升级文件并对其进行升级。
所述虚拟块文件升级单元重新检测虚拟块文件的内容时,具体用于:
接收来自PC侧的通知,以获知需要升级的文件已放入存储类设备;并在收到该通知后重新检测,或进一步重启后重新检测。
本发明方法和系统,均可有效解决PC安装USB驱动程序和FLASH升级可选性问题,并且快速方便、简单。相对于数据卡已有方案,进一步提高包括数据传输在内的升级效率,提高灵活性和用户体验度。
附图说明
图1为本发明实施例基于嵌入式系统实现软件升级的系统图;
图2为本发明实施例基于嵌入式系统实现软件升级时的设备侧与PC侧数据交互流程图;
图3为本发明实施例基于嵌入式系统实现软件升级的流程简图。
具体实施方式
在实际应用中,在既不需要安装自定义USB设备驱动,又能快速更新不同分区文件的情况下,可以通过建立虚拟块文件以对底层固件不同分区进行独立升级。
具体而言,在设备侧利用LINUX标准命令,在已有的文件系统上的RAM或者FLASH存储区内,通过指令建立虚拟块文件,将虚拟块文件制作成VFAT(Virtual File Allocation Table,虚拟文件分配表)格式。
接下来,在插入PC后,设备侧USB接口根据USB协议规范和存储类设备协议规范,将自身枚举成大容量存储类设备端口(类似于普通U盘类设备)。PC操作系统自动识别出设备,并安装系统自带存储类设备驱动,无需手动安装。将设备侧虚拟块文件挂载到USB GADGET存储类设备驱动模块。PC侧就可以访问设备侧虚拟VFAT块设备,如同访问普通存储类设备一样。
之后,将需要升级的文件放入存储类设备中,上电重启之后,在设备侧通过设备文件挂载的方式,实现在设备侧访问虚拟块文件中的内容。设备侧根据设置就可以实现固件相应分区的重新写入,进而实现特定FLASH分区的升级以及文件替换等指定文件升级。
通过上述操作,带有存储类设备的USB设备可以在USB枚举阶段被PC获得,从而使USB存储类传输速率高的特点得以利用;并且,将USB设备直接枚举为存储类设备,不用安装PC侧驱动;再有,虚拟块文件建立位置具有可选性,即可在RAM中建立,也可在永久性FLASH中建立;另外,升级固件不同分区体现出可选择性升级的特点;还有,在RAM中建立的虚拟块文件块可以实现系统升级,在可读写FLASH中建立的虚拟块可以实现系统备份文件,做到按需还原系统。
下面结合附图和具体实现方式来进一步阐述本发明。
图1是本方案中USB数据卡PC侧与设备侧的组成模块图。
从图1可以看出,PC侧包含PC侧操作系统、存储类设备驱动和USB总线等模块。设备侧升级部件关键支持模块包含LINUX操作系统、LINUX文件系统和USB总线(存储类GADGET驱动模块)。在实际应用时,LINUX操作系统中可以进一步设置虚拟块文件维护单元、虚拟块文件升级单元;其中,所述虚拟块文件维护单元能够在设备侧建立虚拟块文件,并将需要升级的文件接收到设备侧的虚拟块文件中;所述虚拟块文件升级单元能够重新检测虚拟块文件的内容,针对其中需要升级的文件实现升级。
下面结合图2的PC侧和设备侧具体交互流程图,说明本方案具有的优势和工作原理。这样做出于以下三个因素考虑:(1)设备枚举为系统标准存储类似设备,这样可以不用用户安装驱动;(2)数据数据传输能力大;(3)文件更新方法简单易操作。基于以上因素,利用虚拟块文件挂载到GADGET USB存储类设备模块更新升级设备侧文件的方法是最理想的方案。
具体实现步骤解析:
步骤1:设备侧在正常使用模式下,PC可通过AT(Terminal Equipment,终端设备)命令/DIAG(诊断)指令/自定义SCSI(小型计算机系统接口)等多种方式下发切换命令,设备侧接收到指令之后使设备侧切换到带有存储类设备的USB复合设备组合。复合设备其实就是几个设备通过一个USB Hub(集线器)形成的单一设备,组合设备也就是具有多个接口的设备,每个接口代表一个独立的设备,在此用到的存储类设备作为USB复合设备的一个设备。
步骤2:设备侧在接收到升级命令的同时,在LINUX本身支持的文件系统(yaffs2/ext2/ext3等)上通过ZERO(零)设备建立一个虚拟块文件,使用标准的LINUX dd指令。dev/zero是LINUX提供的特殊的字符设备,它的特点是可以永远读该文件,每次读取的结果都是二进制0。dd命令可以生成一个自定义大小虚拟文件,此虚拟文件可以当做普通文件进行访问。虚拟块创建的位置可以选择在FLASH或者RAM空间,两者的区别在于:创建在FLASH中的文件可以永久保存,而创建在RAM中的文件只在本次上电过程中使用。根据创建位置的不同,使得本发明有两个效果:1.当在RAM中建立虚拟块时,可以满足本次升级;设备掉电后,虚拟块中的文件不再存在;2.当在FLASH中建立虚拟块后,永久保存在FLASH中,不仅可以满足本次升级需要,而且可以满足恢复出厂设置的需求。
步骤3:虚拟块文件建立之后,此文件没有任何格式,只是占有一定空间大小普通文件。在LINUX系统中,一切设备皆文件,可以认为此虚拟块文件是没有经过格式化的存储空间。设备侧应用LINUX指令将虚拟块文件格式化为VFAT格式,VFAT格式基本上是目前所有操作系统所支持的文件格式。当虚拟块被格式化完成之后,此虚拟块就是带有VFAT格式的存储空间。
步骤4:设备侧已经切换到包含有存储类设备的USB复合设备组合,存储类设备作为设备侧GADGET复合设备的子设备来使用,它支持标准的SCSI指令等相关操作,这个子设备提供读取虚拟块文件的SCSI通道。
步骤5:此时设备侧USB设备正常枚举,枚举出带有存储类设备的设备组合;PC系统识别到类似U盘的USB设备插入到系统,自动为其加载系统自带驱动。
步骤6:在设备侧将已经格式化为VFAT格式的虚拟块文件挂载到USB设备侧存储类设备,存储类设备驱动会自动加装挂载上去的文件,此时可以认为虚拟块文件已经挂载到USB的存储类设备上,这样就建立了PC侧对虚拟块文件的访问通道。虚拟块挂载到USB复合设备的存储类设备之后,设备侧LINUX系统内部不能够访问此虚拟块里面的文件。
步骤7:步骤6完成之后,在PC侧看到的效果就是:可以正常访问已上报的存储类设备中的文件了,并且访问方式和访问普通U盘的文件一样。在已上报的存储类设备中放入需要升级的文件,此时升级文件就已经放入设备侧虚拟文件。
步骤8:步骤7完成之后,PC侧可通过AT命令/DIAG指令/自定义SCSI指令等多种方式通知设备侧,需要升级的文件已放入存储类设备。当虚拟块文件建立在FLASH中时,由于掉电时文件不消失,因此也可以选择重启来完成升级,这样可以直接跳到步骤10。
步骤9:设备侧接收PC侧升级文件已经放入虚拟块的指令后,卸载掉挂载到USB复合设备的虚拟块。此时,PC已无法通过USB访问虚拟块文件,以便设备侧操作系统可以访问虚拟块中的文件。
步骤10:设备侧建立目录A,将虚拟块文件挂载到目录A,此时设备侧LINUX就可以通过目录A访问虚拟块中的升级文件了。
步骤11:根据需要可以选择文件升级的方式:1.可以选择对固件FLASH具体分区的升级,可以将在虚拟块中读到的固件文件直接写入对应的FLAHS分区。2.可以选择具体文件的替换工作,就是将虚拟块中指定的文件替换或者添加到指定的设备侧LINUX文件系统的具体文件。每升级完成一个文件,就在虚拟块中建立相应的标志文件,直到全部升级文件升级结束。当每次设备上电时都会检测虚拟块中升级文件的相应标志文件,如果标志文件不存在,就升级虚拟文件中相应升级文件。
步骤12:升级完成之后,设备侧切换到正常使用模式。
步骤13:升级结束。
通过上述实例,提供了一种基于LINUX系统USB数据卡的升级方案,使用这种办法不仅可以实现基于LINUX数据卡设备的升级,而且还可以实现其它基于LINUX系统的嵌入式设备的升级,方法简单并且高效实用。
需要说明的是,本发明属于嵌入式开发和通讯技术领域,是对嵌入式LINUX设备系统升级方式的一种创新,既能实现无须事先在WINDOWS和LINUX上安装应用软件和其他自定义USB设备驱动,又可以享受高效、轻松嵌入式LINUX升级,针对WINDOWS和LINUX用户大大改进了嵌入式LINUX设备的升级方式。
结合以上技术描述可知,本发明基于嵌入式系统实现软件升级的操作思路可以表示如图3所示的流程,该流程包括以下步骤:
步骤310:在设备侧建立虚拟块文件,将需要升级的文件放入设备侧的虚拟块文件中。该操作可由虚拟块文件维护单元执行。
步骤320:设备侧重新检测虚拟块文件的内容,针对其中需要升级的文件实现升级。该操作可由虚拟块文件升级单元执行。
综上所述可见,无论是方法还是系统,本发明基于嵌入式系统实现软件升级的技术,均可有效解决PC安装USB驱动程序和FLASH升级可选性问题,并且快速方便、简单。相对于数据卡已有方案,进一步提高包括数据传输在内的升级效率,提高灵活性和用户体验度。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (8)
1.一种基于嵌入式系统实现软件升级的方法,其特征在于,该方法包括:
在设备侧建立虚拟块文件,将需要升级的文件放入设备侧的虚拟块文件中;设备侧重新检测虚拟块文件的内容,针对其中需要升级的文件实现升级;其中,
所述针对其中需要升级的文件实现升级包括:
设备侧卸载掉挂载的虚拟块文件,建立目录A并将虚拟块文件挂载到目录A,通过目录A访问虚拟块文件中的升级文件并对其进行升级;
每升级完成一个文件,就在虚拟块文件中建立相应的标志文件,直到全部升级文件升级结束;
每次设备侧上电时,检测虚拟块文件中升级文件的相应标志文件,如果标志文件不存在,则升级虚拟块文件中的升级文件;
所述升级的方式包括:将在虚拟块文件中读到的升级文件直接写入对应的FLASH分区;或者,
将虚拟块文件中指定的文件替换指定的设备侧LINUX文件系统的具体文件或添加到指定的设备侧LINUX文件系统中。
2.根据权利要求1所述的方法,其特征在于,建立虚拟块文件的过程包括:
设备侧在接收到升级命令时,在支持的文件系统的FLASH或者RAM空间通过ZERO设备建立虚拟块文件。
3.根据权利要求1所述的方法,其特征在于,建立虚拟块文件之后,将需要升级的文件放入虚拟块文件之前,设备侧将自身切换到带有存储类设备的组合并向PC上报为存储类设备;PC加载存储类设备驱动,设备侧挂载虚拟块文件。
4.根据权利要求3所述的方法,其特征在于,所述设备侧重新检测虚拟块文件的内容的过程包括:
PC侧通知设备侧,需要升级的文件已放入存储类设备;设备侧收到该通知后重新检测,或进一步重启后重新检测。
5.一种基于嵌入式系统实现软件升级的系统,其特征在于,该系统包括虚拟块文件维护单元、虚拟块文件升级单元,所述虚拟块文件维护单元、虚拟块文件升级单元位于设备侧;其中,
所述虚拟块文件维护单元,用于在设备侧建立虚拟块文件,将需要升级的文件放入设备侧的虚拟块文件中;
所述虚拟块文件升级单元,用于重新检测虚拟块文件的内容,针对其中需要升级的文件实现升级;其中,
所述虚拟块文件升级单元针对需要升级的文件实现升级时,具体用于:
卸载掉挂载的虚拟块文件,建立目录A并将虚拟块文件挂载到目录A,通过目录A访问虚拟块文件中的升级文件并对其进行升级;
每升级完成一个文件,就在虚拟块文件中建立相应的标志文件,直到全部升级文件升级结束;
每次设备侧上电时,检测虚拟块文件中升级文件的相应标志文件,如果标志文件不存在,则升级虚拟块文件中的升级文件;
所述升级的方式包括:将在虚拟块文件中读到的升级文件直接写入对应的FLASH分区;或者,
将虚拟块文件中指定的文件替换指定的设备侧LINUX文件系统的具体文件或添加到指定的设备侧LINUX文件系统中。
6.根据权利要求5所述的系统,其特征在于,所述虚拟块文件维护单元建立虚拟块文件时,具体用于:
在接收到升级命令时,在支持的文件系统的FLASH或者RAM空间通过ZERO设备建立虚拟块文件。
7.根据权利要求5所述的系统,其特征在于,所述虚拟块文件维护单元建立虚拟块文件之后,将需要升级的文件放入虚拟块文件之前,进一步用于将设备侧切换到带有存储类设备的组合并向PC上报为存储类设备,挂载虚拟块文件;触发PC加载存储类设备驱动。
8.根据权利要求7所述的系统,其特征在于,所述虚拟块文件升级单元重新检测虚拟块文件的内容时,具体用于:
接收来自PC侧的通知,以获知需要升级的文件已放入存储类设备;并在收到该通知后重新检测,或进一步重启后重新检测。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110065268.XA CN102135896B (zh) | 2011-03-17 | 2011-03-17 | 一种基于嵌入式系统实现软件升级的方法和系统 |
PCT/CN2011/077875 WO2012122776A1 (zh) | 2011-03-17 | 2011-08-01 | 一种基于嵌入式系统实现软件升级的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110065268.XA CN102135896B (zh) | 2011-03-17 | 2011-03-17 | 一种基于嵌入式系统实现软件升级的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102135896A CN102135896A (zh) | 2011-07-27 |
CN102135896B true CN102135896B (zh) | 2015-08-12 |
Family
ID=44295689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110065268.XA Expired - Fee Related CN102135896B (zh) | 2011-03-17 | 2011-03-17 | 一种基于嵌入式系统实现软件升级的方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102135896B (zh) |
WO (1) | WO2012122776A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135896B (zh) * | 2011-03-17 | 2015-08-12 | 中兴通讯股份有限公司 | 一种基于嵌入式系统实现软件升级的方法和系统 |
CN105278993B (zh) * | 2015-10-27 | 2018-10-19 | 深圳市创维软件有限公司 | 一种基于Linux系统的驱动模块升级方法及装置 |
CN106325817A (zh) * | 2016-08-25 | 2017-01-11 | 中山市天启智能科技有限公司 | 一种嵌入式系统自动升级方法 |
CN113515347B (zh) * | 2021-06-30 | 2024-03-29 | 惠州华阳通用电子有限公司 | 一种基于虚拟机的双系统数据传输方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030146A (zh) * | 2007-04-10 | 2007-09-05 | 北京中星微电子有限公司 | 一种实现固件更新的方法和系统 |
CN101494930A (zh) * | 2009-02-25 | 2009-07-29 | 宇龙计算机通信科技(深圳)有限公司 | 一种智能终端升级方法和智能终端 |
CN101957765A (zh) * | 2010-09-02 | 2011-01-26 | 北京中星微电子有限公司 | 一种实现设备固件更新的方法及系统、设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110061046A1 (en) * | 2008-12-18 | 2011-03-10 | Virtual Computer, Inc. | Installing Software Applications in a Layered Virtual Workspace |
CN102135896B (zh) * | 2011-03-17 | 2015-08-12 | 中兴通讯股份有限公司 | 一种基于嵌入式系统实现软件升级的方法和系统 |
-
2011
- 2011-03-17 CN CN201110065268.XA patent/CN102135896B/zh not_active Expired - Fee Related
- 2011-08-01 WO PCT/CN2011/077875 patent/WO2012122776A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030146A (zh) * | 2007-04-10 | 2007-09-05 | 北京中星微电子有限公司 | 一种实现固件更新的方法和系统 |
CN101494930A (zh) * | 2009-02-25 | 2009-07-29 | 宇龙计算机通信科技(深圳)有限公司 | 一种智能终端升级方法和智能终端 |
CN101957765A (zh) * | 2010-09-02 | 2011-01-26 | 北京中星微电子有限公司 | 一种实现设备固件更新的方法及系统、设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2012122776A1 (zh) | 2012-09-20 |
CN102135896A (zh) | 2011-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104239166A (zh) | 一种对运行中虚拟机实现文件备份的方法 | |
CN103793238A (zh) | 机柜与其同时更新多个基本输入输出系统的方法 | |
CN103049405B (zh) | 一种安卓设备文件的管理方法和系统 | |
CN102880495A (zh) | 移动终端及其软件升级方法 | |
CN102063320A (zh) | 工作模式切换方法、usb设备和主机设备 | |
CN102135896B (zh) | 一种基于嵌入式系统实现软件升级的方法和系统 | |
CN103399781A (zh) | 云服务器及其虚拟机管理方法 | |
CN103458086A (zh) | 一种智能手机及其故障检测方法 | |
CN101169729A (zh) | 嵌入式系统及其更新应用程序的方法 | |
CN111294413B (zh) | 一种互联网协议ip地址的确定方法、装置和可读介质 | |
CN201828901U (zh) | 一种存储功能卡 | |
CN103392174B (zh) | 基于闪存存储的系统、分区方法和装置 | |
CN110708489A (zh) | 通讯方法、装置以及电子设备、存储介质 | |
CN101872290B (zh) | 一种可即时切换虚拟光盘内容的usb虚拟光驱装置 | |
EP2562649B1 (en) | Method for repairing communication abnormality between data card and host | |
CN101631046A (zh) | 一种单板自动升级的方法和装置 | |
CN104679438A (zh) | Sas接口卡的驱动安装系统及方法 | |
CN102023873B (zh) | 应用程序执行方法与系统、存储媒体控制器及存储装置 | |
CN101561760B (zh) | 接口卡固件升级方法 | |
CN104699410A (zh) | 一种信息处理方法及电子设备 | |
CN209560583U (zh) | 一种多状态多分区u盘 | |
CN102760064A (zh) | 网卡更新装置及方法 | |
CN102023906B (zh) | 便携式终端的微处理器、便携式终端及其修复方法 | |
CN101625648B (zh) | 一种即插即用设备及其固件升级方法和装置 | |
CN104239241A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150812 Termination date: 20210317 |
|
CF01 | Termination of patent right due to non-payment of annual fee |