CN103064692A - 一种固件的更新方法及装置 - Google Patents
一种固件的更新方法及装置 Download PDFInfo
- Publication number
- CN103064692A CN103064692A CN2011103190733A CN201110319073A CN103064692A CN 103064692 A CN103064692 A CN 103064692A CN 2011103190733 A CN2011103190733 A CN 2011103190733A CN 201110319073 A CN201110319073 A CN 201110319073A CN 103064692 A CN103064692 A CN 103064692A
- Authority
- CN
- China
- Prior art keywords
- firmware
- random access
- memory
- client
- nonvolatile random
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种固件的更新方法及装置,涉及嵌入式Linux领域,以解决现有技术中存在的,固件更新难度较大的问题,该方法,包括:客户端进行固件下载,客户端将固件写入第二内存空间,更新非易失性随机访问存储器中的固件,第二内存空间为通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存中的地址空间,由于通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存空间,然后通过用户程序更新该内存空间,使得固件更新难度较小。
Description
技术领域
本发明涉及嵌入式Linux领域,特别涉及一种固件的更新方法及装置。
背景技术
嵌入式系统是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应于系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在非易失性随机访问存储器NVRAM中的嵌入式处理器控制板,NVRAM可以是闪存flash、EROM或EPROM,后续文档以flash为例进行说明。事实上,所有带有数字接口的设备,如通信系统、手表、微波炉、录像机、汽车等,都使用嵌入式系统。
所有嵌入式系统都面临更新固件的需求,固件(Firmware)就是写入flash中的程序,通俗的理解就是“固化的软件”,客户端在收到固件更新命令后,对固件对应的flash中的存储块(比如mtdblockl)进行读写操作实现更新。具体而言,是将固件数据传入内核空间由内核中的驱动来更新固件数据,这需要依赖于内核对于存储该固件的设备的驱动支持,开发人员必须熟悉内核中驱动的编写方法(如注册设备等)才能够编写该设备的驱动程序来支持固件更新。
由此可见现有技术中存在如下问题:固件的更新难度较大。
发明内容
本发明的目的是针对现有技术中存在的,固件的更新难度较大的问题,提供一种固件的更新方法及装置。
本发明实施例提供一种固件的更新方法,包括:
客户端进行固件下载;
客户端将固件写入第二内存空间,更新非易失性随机访问存储器中的固件,第二内存空间为通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存中的地址空间。
进一步,客户端将下载的固件存入第一内存空间。
进一步,客户端将下载的固件存入第一内存空间具体为:
客户端接收服务器下发的固件更新命令后,延时将下载的固件存入第一内存空间。
进一步,客户端将下载的固件存入第一内存空间具体为:
客户端接收服务器下发的固件更新命令后将下载的固件存入第一内存空间,并设置更新标志位;
还包括:
非易失性随机访问存储器中的固件更新完成后或固件下载失败后,取消更新标志位。
进一步,还包括:
客户端将非易失性随机访问存储器中更新的固件进行加载。
进一步,客户端将非易失性随机访问存储器中更新的固件进行加载具体为:
客户端加载前检查是否在向用户提供服务,若是则等待预定的时间重复进行加载检查,若否则将非易失性随机访问存储器中更新的固件进行加载。
本发明实施例还提供一种固件的更新装置,包括:
下载模块,用于进行固件下载;
更新模块,用于将固件写入第二内存空间,更新非易失性随机访问存储器中的固件,第二内存空间为通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存中的地址空间。
进一步,下载模块,还用于将下载的固件存入第一内存空间。
进一步,下载模块,还用于接收服务器下发的固件更新命令后,延时将下载的固件存入第一内存空间。
进一步,下载模块,还用于接收服务器下发的固件更新命令后将下载的固件存入第一内存空间,并设置更新标志位;
还包括:
取消模块,用于非易失性随机访问存储器中的固件更新完成后或固件下载失败后,取消更新标志位。
进一步,还包括:
加载模块,用于将非易失性随机访问存储器中更新的固件进行加载。
进一步,加载模块,还用于加载前检查是否在向用户提供服务,若是则等待预定的时间重复进行加载检查,若否则将非易失性随机访问存储器中更新的固件进行加载。
由于通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存空间,然后通过用户程序更新该内存空间,使得固件更新难度较小。
附图说明
图1表示本发明实施例提供的方法流程图;
图2表示本发明实施例提供的装置结构图。
具体实施方式
下面结合实施例和附图对本发明进行说明,为了解决现有技术中的,固件的更新难度较大的问题,本发明实施例提供一种固件的更新方法及装置。
本发明实施例提供一种固件的更新方法,如图1所示,包括如下步骤:
步骤101、客户端将下载的固件存入第一内存空间。
步骤102、客户端将第一内存空间中的固件写入第二内存空间,更新闪存中的固件,第二内存空间为通过用户程序将固件在闪存中的地址空间映射到内存中的地址空间。
步骤101具体实施时,服务器与客户端建立TCP(Transmission ControlProtocol传输控制协议)连接后服务器可下发固件更新命令,包括对什么固件进行更新以及需要取得的文件名称等。
客户端接收固件更新命令后,根据固件更新命令设置对应的更新标志位,用于标示需要进行固件更新,并自动设置一个随机延时时间如15秒,之后使用TCP协议下载完整固件数据到本地内存中的第一内存空间,如1FFF-3FFF。设置随机延时时间是为了保证,当有多个客户端需从服务器处下载固件时,在时间上有所不同,减轻服务器的负担。
客户端将下载的固件存入第一内存空间的同时,设置更新标志位如设置标志位为“1”,以表明客户端正处在固件下载的阶段,flash中的固件更新完成后或固件下载失败后,则取消更新标志位,如设置标志位为“0”,表明客户端未处在固件下载的阶段。
当然将下载的固件存入内存中,只是本实施例中的优选方案,下载的固件还可以存在flash中。存在第一内存空间中,只是为了后续的步骤102中,将固件写入到第二内存空间中时,由于是在内存的不同地址空间,对固件数据进行读写操作,使得读写操作更加快捷高效。
步骤102具体实施时,通过网络得到要更新的完整固件数据后,客户端可以按预先设置好的对不同固件的更新方法来更新,如果内核支持对固件在flash分区的读写则直接向该flash分区写入及固件数据,如果内核不支持对该flash分区的读写,则由用户程序将相应的flash地址空间映射到内存中的第二内存空间,如4FFF-6FFF。同时通过自身提供的读写驱动,从第一内存空间中读取固件写入第二内存空间,完成对固件的更新,对映射后第二内存空间的操作就是对flash所在存储空间的操作,操作必须要按照芯片手册说明的方法进行。
具体实施时,要确定固件所在的cpu寻址空间中的地址,即固件应在flash中的地址空间,固件在flash中存放的地址是开发阶段就定义完成的,该地址可能是一块flash或者是flash的一个分区,该地址空间可以根据flash和cpu的片选关系以及cpu手册对寻址空间分配的描述得到,然后将该flash占用的地址空间映射到内存中。映射方法举例如下:首先执行fd=open(″/dev/mem″,O_RDWR,0)然后执行env_base=(env_t*)mmap(0,CFG_ENV_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,env_addr),其中fd是第一步打开的文件描述符,env_addr是固件在flash中的地址空间的首地址,CFG_ENV_SIZE是固件在flash中的地址空间所占用的空间大小,env_base则是固件在flash中的地址空间映射到内存中的首地址,如果是对固件在flash中的地址空间操作,则操作以env_base为首地址的第二内存空间即可,对第二内存空间的读写操作会最终作用到实际固件所在的flash中的地址空间中,上述的程序即用户程序,举例完毕。
映射完成后客户端就可以利用对该flash进行读写的驱动模块,对第二地址空间的数据进行更新,即采用第一内存空间中的固件更新第二地址空间,该驱动模块应根据不同的flash的数据手册要求编写即可,向flash擦写数据举例如下:以本系统中数据线8位擦写数据块4k的flash为例。擦除第一个数据块的程序如下:
fbase=(unsigned long)env_base;
address=(unsigned volatile char*)fbase;
/*Erase this sector*/
*((volatile unsigned char*)(fbase+0x5555))=0xaa;
*((volatile unsigned char*)(fbase+0x2aaa))=0x55;
*((volatile unsigned char*)(fbase+0x5555))=0x80;
*((volatile unsigned char*)(fbase+0x5555))=0xaa;
*((volatile unsigned char*)(fbase+0x2aaa))=0x55;
*address=0x30;
其中fbase与env_base相等,都指向映射的第二内存空间的首地址,0x5555为该flash存储块的一个寄存器地址,0xaa为向该寄存器写入的指令。其他语句类似,寄存器位置,指令含义,写入顺序都可以通过查询手册得到。
向第一个数据块写入数据的程序如下:
*((volatile unsigned char*)(fbase+0x5555))=0xaa;
*((volatile unsigned char*)(fbase+0x2aaa))=0x55;
*((volatile unsigned char*)(fbase+0x5555))=0xa0;
*fbase=*wbuf;
其中fbase与env_base相等,都指向映射的第二内存空间的首地址,wbuf为存放写入第二内存空间的首地址。举例完成。
因此用户程序看到的是一块内存空间而不是设备,固件可以分布在同一个flash的多个分区上也可以分布在多个flash上,用户程序只要按要求向对应地址写入对应固件数据即可。
在步骤102之后,在延时时间到期后,客户端首先会检查嵌入式系统是否在向用户提供服务,该服务是指该嵌入式系统的主要功能,若正在向用户提供服务则需等待预定的时间重复进行加载检查,直到不提供服务的情况下才会重新加载固件。这样做的目的是避免,固件的更新对系统向用户提供服务时造成影响。
采用本发明实施例的方案的优点是:固件数据是在用户程序直接写入相应的内存地址空间的,开发人员可以不需要了解内核驱动的编写方法,只需要关心芯片手册中描述的数据读写方法即可,更新数据不依赖内核对存储该固件的设备的驱动支持,实现简单。
进一步可以自由的选择更新固件的时间和加载固件的时间,在更新固件时完全不影响本系统向用户提供服务。重新加载固件时则可以在用户设置的时间到期后自动分析业务情况来决定加载时机,尽最大可能不影响用户使用本系统。
本发明实施例还提供一种固件的更新装置,如图2所示,包括:
下载模块201,用于进行固件下载;
更新模块202,用于将固件写入第二内存空间,更新非易失性随机访问存储器中的固件,第二内存空间为通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存中的地址空间。
进一步,下载模块201,还用于将下载的固件存入第一内存空间。
进一步,下载模块201,还用于接收服务器下发的固件更新命令后,延时将下载的固件存入第一内存空间。
进一步,下载模块201,还用于接收服务器下发的固件更新命令后将下载的固件存入第一内存空间,并设置更新标志位;
还包括:
取消模块203,用于闪存中的固件更新完成后或固件下载失败后,取消更新标志位。
进一步,还包括:
加载模块204,用于将闪存中更新的固件进行加载。
进一步,加载模块204,还用于加载前检查是否在向用户提供服务,若是则等待预定的时间重复进行加载检查,若否则将闪存中更新的固件进行加载。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
Claims (12)
1.一种固件的更新方法,其特征在于,包括:
客户端进行固件下载;
客户端将固件写入第二内存空间,更新非易失性随机访问存储器中的固件,第二内存空间为通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存中的地址空间。
2.根据权利要求1所述的方法,其特征在于,客户端进行固件下载具体为:
客户端将下载的固件存入第一内存空间。
3.根据权利要求2所述的方法,其特征在于,客户端将下载的固件存入第一内存空间具体为:
客户端接收服务器下发的固件更新命令后,延时将下载的固件存入第一内存空间。
4.根据权利要求2所述的方法,其特征在于,客户端将下载的固件存入第一内存空间具体为:
客户端接收服务器下发的固件更新命令后将下载的固件存入第一内存空间,并设置更新标志位;
还包括:
非易失性随机访问存储器中的固件更新完成后或固件下载失败后,取消更新标志位。
5.根据权利要求1所述的方法,其特征在于,还包括:
客户端将非易失性随机访问存储器中更新的固件进行加载。
6.根据权利要求5所述的方法,其特征在于,客户端将非易失性随机访问存储器中更新的固件进行加载具体为:
客户端加载前检查是否在向用户提供服务,若是则等待预定的时间重复进行加载检查,若否则将非易失性随机访问存储器中更新的固件进行加载。
7.一种固件的更新装置,其特征在于,包括:
下载模块,用于进行固件下载;
更新模块,用于将固件写入第二内存空间,更新非易失性随机访问存储器中的固件,第二内存空间为通过用户程序将固件在非易失性随机访问存储器中的地址空间映射到内存中的地址空间。
8.根据权利要求7所述的装置,其特征在于,下载模块,还用于将下载的固件存入第一内存空间。
9.根据权利要求8所述的装置,其特征在于,下载模块,还用于接收服务器下发的固件更新命令后,延时将下载的固件存入第一内存空间。
10.根据权利要求8所述的装置,其特征在于,下载模块,还用于接收服务器下发的固件更新命令后将下载的固件存入第一内存空间,并设置更新标志位;
还包括:
取消模块,用于非易失性随机访问存储器中的固件更新完成后或固件下载失败后,取消更新标志位。
11.根据权利要求7所述的装置,其特征在于,还包括:
加载模块,用于将非易失性随机访问存储器中更新的固件进行加载。
12.根据权利要求11所述的装置,其特征在于,加载模块,还用于加载前检查是否在向用户提供服务,若是则等待预定的时间重复进行加载检查,若否则将非易失性随机访问存储器中更新的固件进行加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103190733A CN103064692A (zh) | 2011-10-19 | 2011-10-19 | 一种固件的更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103190733A CN103064692A (zh) | 2011-10-19 | 2011-10-19 | 一种固件的更新方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103064692A true CN103064692A (zh) | 2013-04-24 |
Family
ID=48107330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103190733A Pending CN103064692A (zh) | 2011-10-19 | 2011-10-19 | 一种固件的更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064692A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942066A (zh) * | 2014-03-25 | 2014-07-23 | 中国科学院长春光学精密机械与物理研究所 | 一种星载嵌入式软件模块在轨更新方法 |
CN104991804A (zh) * | 2015-07-17 | 2015-10-21 | 深圳市凯立德科技股份有限公司 | 一种行车记录仪的更新方法及设备 |
CN106445573A (zh) * | 2015-08-11 | 2017-02-22 | 杭州华为数字技术有限公司 | 固件升级方法、装置及高速外围设备互联集群系统 |
CN106648759A (zh) * | 2016-11-30 | 2017-05-10 | 苏州华芯微电子股份有限公司 | 一种通用编程器固件的更新方法 |
CN106951180A (zh) * | 2016-01-07 | 2017-07-14 | 三星电子株式会社 | 数据存储装置以及包括数据存储装置的数据处理系统 |
CN110858145A (zh) * | 2018-08-22 | 2020-03-03 | 龙芯中科技术有限公司 | 一种Linux操作系统下BIOS的更新方法和装置 |
CN111625265A (zh) * | 2020-05-26 | 2020-09-04 | 深圳忆联信息系统有限公司 | 在固件升级中实现降低dram空间消耗的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464386A (zh) * | 2002-06-25 | 2003-12-31 | 联想(北京)有限公司 | 嵌入式系统中固件程序在线升级的实现方法 |
CN101727395A (zh) * | 2008-10-17 | 2010-06-09 | 深圳市朗科科技股份有限公司 | 闪存设备的管理系统、方法及闪存设备 |
CN101826031A (zh) * | 2009-03-06 | 2010-09-08 | 王钟 | 基于Linux系统的PCM流捕获的实现方法 |
CN101826027A (zh) * | 2010-05-28 | 2010-09-08 | 深圳市融创天下科技发展有限公司 | 一种嵌入式系统及其升级方法 |
CN101944011A (zh) * | 2010-06-29 | 2011-01-12 | 北京中星微电子有限公司 | 运行程序的装置、芯片和方法 |
-
2011
- 2011-10-19 CN CN2011103190733A patent/CN103064692A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464386A (zh) * | 2002-06-25 | 2003-12-31 | 联想(北京)有限公司 | 嵌入式系统中固件程序在线升级的实现方法 |
CN101727395A (zh) * | 2008-10-17 | 2010-06-09 | 深圳市朗科科技股份有限公司 | 闪存设备的管理系统、方法及闪存设备 |
CN101826031A (zh) * | 2009-03-06 | 2010-09-08 | 王钟 | 基于Linux系统的PCM流捕获的实现方法 |
CN101826027A (zh) * | 2010-05-28 | 2010-09-08 | 深圳市融创天下科技发展有限公司 | 一种嵌入式系统及其升级方法 |
CN101944011A (zh) * | 2010-06-29 | 2011-01-12 | 北京中星微电子有限公司 | 运行程序的装置、芯片和方法 |
Non-Patent Citations (2)
Title |
---|
吴岳等: "《Linux C程序设计大全》", 28 February 2009 * |
陈波等: "嵌入式设备软件自动升级技术", 《计算机时代》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942066A (zh) * | 2014-03-25 | 2014-07-23 | 中国科学院长春光学精密机械与物理研究所 | 一种星载嵌入式软件模块在轨更新方法 |
CN104991804A (zh) * | 2015-07-17 | 2015-10-21 | 深圳市凯立德科技股份有限公司 | 一种行车记录仪的更新方法及设备 |
CN106445573A (zh) * | 2015-08-11 | 2017-02-22 | 杭州华为数字技术有限公司 | 固件升级方法、装置及高速外围设备互联集群系统 |
CN106951180A (zh) * | 2016-01-07 | 2017-07-14 | 三星电子株式会社 | 数据存储装置以及包括数据存储装置的数据处理系统 |
CN106648759A (zh) * | 2016-11-30 | 2017-05-10 | 苏州华芯微电子股份有限公司 | 一种通用编程器固件的更新方法 |
CN110858145A (zh) * | 2018-08-22 | 2020-03-03 | 龙芯中科技术有限公司 | 一种Linux操作系统下BIOS的更新方法和装置 |
CN111625265A (zh) * | 2020-05-26 | 2020-09-04 | 深圳忆联信息系统有限公司 | 在固件升级中实现降低dram空间消耗的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064692A (zh) | 一种固件的更新方法及装置 | |
US8010959B2 (en) | System and method for updating device drivers | |
US8122447B2 (en) | Firmware installation | |
US6834384B2 (en) | Methods and apparatus for upgrading firmware in an embedded system | |
US9507604B2 (en) | Boot method and boot system | |
CN108847950B (zh) | 电子装置、云系统软件自动部署方法及存储介质 | |
US7558867B2 (en) | Automatic firmware upgrade for a thin client using one or more FTP servers | |
CN103559052B (zh) | 固件更新的设备与方法 | |
EP0569178A2 (en) | Apparatus and method for downloading programs | |
CN107506221A (zh) | 应用程序升级方法、装置及设备 | |
CN103106083B (zh) | 一种固件的加载方法及装置 | |
CN110825403A (zh) | 一种汽车电子控制单元ecu刷写的方法及系统 | |
CN105740027A (zh) | 应用程序更新方法和装置 | |
CN110851163A (zh) | 一种基于can通信的兼容多设备平台的软件更新方法 | |
US20070233750A1 (en) | Data control apparatus and method | |
CN111433747A (zh) | 用于加载操作系统的虚拟存储器 | |
CN101615129B (zh) | 应用于分布式系统中的升级方法及版本管理客户端 | |
CN104699500A (zh) | 智能设备中实现引导程序自动升级的方法 | |
JP7410268B2 (ja) | コンテナ・ベースの仮想化システムに関する方法 | |
CN102298531B (zh) | 在嵌入式系统中对闪存文件系统进行升级的方法 | |
US20090199216A1 (en) | Multi-level driver configuration | |
US20070079279A1 (en) | Embedded device with software registry | |
JP5084853B2 (ja) | ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム | |
US20150033003A1 (en) | Host and method of upgrading connection manager of dongles | |
CN115994003A (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 | ||
CB02 | Change of applicant information |
Address after: 100015 Jiuxianqiao North Road, Beijing, No. B, No., No. 7 Applicant after: Beijing Sanxi Electronic Technology Co. Ltd. Address before: 100015 Jiuxianqiao North Road, Beijing, No. B, No., No. 7 Applicant before: Beijing Sanxi Electronic Technology Development Co.,Ltd. |
|
COR | Change of bibliographic data | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130424 |
|
RJ01 | Rejection of invention patent application after publication |