上位机的软件升级方法及系统与流程

文档序号:12469641阅读:1253来源:国知局
上位机的软件升级方法及系统与流程

本发明涉及软件升级领域,特别涉及一种上位机的软件升级方法及系统。



背景技术:

目前在M2M(Machine to Machine,机器与机器之间的通信)和物联网领域设计运行的无线设备中,基本都采用了上位机和无线模块两者相结合的架构,其中无线模块提供无线链路,上位机实现应用逻辑。由于无线设备运行环境通常较为多样和复杂,当在使用过程中发现问题或者有需求变更时,这时候升级设备软件则较为困难,需要花费较高资金成本和人力成本。

对于无线模块,可以通过FOTA(Firmware Over-The-Air,移动终端的空中下载软件升级)等方式来进行远程升级。但在某些情况下,也需要升级上位机软件,对于某些较大型上位机软件,例如运行Linux操作系统,因为本身的存储空间和运行空间较为充足,可以通过无线模块把升级包直接下载到上位机的存储空间,然后进行软件更新。

但是对于某些较小型的上位机,因为本身的存储空间有限,无法直接下载升级包进行上位机软件的更新和升级,如果有升级需求,则需要发回厂家或者派人到现场升级,耗费较高的时间、人力和资金等成本。如果扩充上位机的存储空间,则会导致产品的成本增加,从而降低产品的市场竞争力和利润。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中存储空间有限的上位机升级软件时需要发回厂家或派人到现场升级,或者需要扩充存储空间,导致成本增加的缺陷,提供一种成本低、可靠性高的上位机的软件升级方法及系统。

本发明是通过下述技术方案来解决上述技术问题的:

一种上位机的软件升级方法,其特点在于,包括以下步骤:

S1、无线模块每隔一时间段登录一服务器,其中,所述服务器中存储有上位机的软件升级包;

S2、所述无线模块检测所述软件升级包是否更新,若是,则执行步骤S3,若否,则返回步骤S1;

S3、所述无线模块从所述服务器中下载更新后的软件升级包;

S4、所述无线模块向所述上位机发送一升级指令;

S5、所述上位机在接收到所述升级指令时设置一升级标志位,并重启;

S6、所述上位机在重启的过程中判断是否检测到所述升级标志位,若是,则执行步骤S7,若否,则结束流程;

S7、所述上位机从所述无线模块中分段读取更新后的软件升级包的数据,并将读取的数据写入程序存储区域,直至所述软件升级包的所有数据被写入。

本方案中,通过无线模块登录服务器并下载更新后的软件升级包,上位机从无线模块中分段读取并写入软件升级包的数据,直至所有数据被写入程序存储区域,以完成整个软件升级包的更新,实现了软件升级。

步骤S1中,无线模块登录服务器的间隔时间可以固定,也可以随机。具体可以根据需求来设置,也可以根据服务器的承载能力来设置。例如可以每次都采用固定时间段加上随机时间段的方法生成一随机时间段,并将其作为登录服务器的间隔时间,这样可以防止登录服务器的时间比较集中,从而减少服务器的压力。

步骤S2中,无线模块检测软件升级包是否更新的算法为现有技术,例如可以通过查看服务器中软件升级包的名称来获取软件版本,并将其与无线模块中存储的软件版本相比较,根据比较结果来检测服务器中的软件升级包是否更新。

步骤S3中,无线模块将更新后的软件升级包下载到自身的存储空间。

步骤S5中,上位机将设置的升级标志位存储于flash(闪存)等断电不会丢失数据的存储空间。

步骤S7中,上位机从无线模块中分段读取软件升级包的数据,并在每次读取完之后将读取的数据写入程序存储区域,其中,后一次读取的数据会覆盖掉前一次读取的数据,这样就不需要很大的存储空间来存放软件升级包的数据。另外,上位机还可以根据自身的存储空间设置每次读取的数据位置(即偏移量)和数据长度。例如,若自身的存储空间较小,则可以将每次读取的数据长度设置地较短;若自身的存储空间较大,则可以将每次读取的数据长度设置地较长。

与现有技术相比,本方案通过上位机从无线模块中分段读取并写入软件升级包的数据,使得上位机在存储空间有限的情况下也能够实现软件升级,无需发回厂家或派人到现场升级,更无需扩充上位机的存储空间,节约了成本。

较佳地,步骤S7之后还包括以下步骤:S8、所述上位机将所述升级标志位清除,并重启。步骤S8中,上位机的软件成功升级之后将升级标志位清除,防止下次重启时误升级。

较佳地,所述服务器中还存储有升级包信息文件,所述升级包信息文件中包含所述上位机的软件升级包的信息;

步骤S2中检测结果为是时,执行以下步骤:

S23、所述无线模块从所述服务器中下载所述升级包信息文件,并对下载的所述升级包信息文件进行解析,得到第一校验值,执行步骤S3;

步骤S3包括以下步骤:

S31、所述无线模块从所述服务器中下载更新后的软件升级包,并计算下载的软件升级包的第二校验值;

S32、所述无线模块判断所述第一校验值与所述第二校验值是否相同,若是,则执行步骤S4,若否,则返回步骤S1。

本方案中,升级包信息文件和软件升级包位于服务器中的同一路径下。步骤S31中无线模块计算软件升级包的第二校验值的算法为现有技术,不再赘述。

另外,无线模块与服务器之间的通信可能会出现异常,导致无线模块下载的数据有误,因此,需要对无线模块下载的软件升级包进行校验,即判断第二校验值与第一校验值是否相同,从而确保无线模块下载的软件升级包与服务器中的软件升级包的数据完全一致。

较佳地,步骤S1中还包括以下步骤:所述无线模块设置一第一下载次数;

步骤S23包括以下步骤:

S231、所述无线模块从所述服务器中下载所述升级包信息文件,并将所述第一下载次数加一;

S232、所述无线模块判断所述升级包信息文件是否下载成功,若是,则执行步骤S234,若否,则执行步骤233;

S233、所述无线模块判断所述第一下载次数是否大于等于第一预设下载次数,若是,则返回步骤S1,若否,则返回步骤S231;

S234、所述无线模块对下载的所述升级包信息文件进行解析,得到第一校验值。

本方案的步骤S232中,无线模块判断升级包信息文件是否下载成功的算法为现有技术,这里的下载成功是指无线模块完成了升级包信息文件的下载。当下载失败时,无线模块可以从服务器中多次下载升级包信息文件。其中,下载次数最大为第一预设下载次数,具体值可以根据实际情况来设置,例如可以设置为2次。

较佳地,步骤S1中还包括以下步骤:所述无线模块设置一第二下载次数;

步骤S31包括以下步骤:

S311、所述无线模块从所述服务器中下载更新后的软件升级包,并将所述第二下载次数加一;

S312、所述无线模块判断所述软件升级包是否下载成功,若是,则执行步骤S314,若否,则执行步骤313;

S313、所述无线模块判断所述第二下载次数是否大于等于第二预设下载次数,若是,则返回步骤S1,若否,则返回步骤S311;

S314、所述无线模块计算下载的软件升级包的第二校验值。

本方案的步骤S312中,无线模块判断软件升级包是否下载成功的算法也为现有技术,这里的下载成功是指无线模块完成了软件升级包的下载,但并不代表下载的软件升级包的数据与服务器中软件升级包的数据完全一致。当下载失败时,无线模块可以从服务器中多次下载软件升级包。其中,下载次数最大为第二预设下载次数,具体值可以根据实际情况来设置,例如可以设置为3次。

较佳地,步骤S32中所述无线模块判断所述第一校验值与所述第二校验值不同时,执行步骤S313。

本方案中,当第一校验值与第二校验值不同时,说明无线模块下载的软件升级包的数据与服务器中软件升级包的数据不一致,若软件升级包的下载次数即第二下载次数没有达到第二预设下载次数,则重新从服务器下载软件升级包;若软件升级包的下载次数即第二下载次数已经达到第二预设下载次数,则需要等待下一次升级,即服务器中的软件升级包再一次更新。

较佳地,步骤S6中判断结果为是时,执行以下步骤:所述上位机从所述无线模块中读取所述第一校验值,执行步骤S7;

步骤S7与S8之间还包括以下步骤:

S781、所述上位机计算写入所述程序存储区域中软件升级包的数据的第三校验值;

S782、所述上位机判断所述第一校验值与所述第三校验值是否相同,若是,则执行步骤S8,若否,则返回步骤S7。

本方案中,无线模块与上位机之间的通信可能会出现异常,导致上位机读取的数据有误,因此,需要在上位机的软件升级完毕后进行校验,从而确保升级的软件数据与无线模块中下载的软件升级包的数据完全一致。

较佳地,步骤S1之前还包括以下步骤:将一服务器的IP地址(互联网协议地址)和端口号存储至无线模块;

步骤S1包括以下步骤:所述无线模块根据所述IP地址和所述端口号登录所述服务器。

本方案中,无线模块根据IP地址和端口号才能成功登录存储有软件升级包和升级包信息文件的服务器。其中,IP地址和端口号共同对应唯一的服务器。另外,有的服务器可能需要输入用户名和密码才可以登录,因此,需要将服务器的用户名和密码也存储至无线模块中。有的服务器中可能存放的文件较多,因此,需要将存储软件升级包和升级包信息文件的路径也存储至无线模块中。

较佳地,所述服务器为FTP(文件传输协议)服务器或Http(超文本传输协议)服务器。

较佳地,所述第一校验值、所述第二校验值和所述第三校验值均包括:CRC(循环冗余检查)32校验和值或MD(信息摘要算法)5校验值。

较佳地,所述第一校验值、所述第二校验值和所述第三校验值还包括软件升级包的大小。本方案中,校验的对象还包括软件升级包的大小,有效提高了上位机软件升级的可靠性和准确性。

本发明还提供一种上位机的软件升级系统,其特点在于,包括一上位机、一无线模块以及一服务器,所述无线模块包括一登录单元、一检测单元、一升级包下载单元以及指令发送单元,所述上位机包括一标志位设置单元、一标志位判断单元以及一读写单元,所述服务器中存储有所述上位机的软件升级包;

所述登录单元用于每隔一时间段登录所述服务器;

所述检测单元用于检测所述软件升级包是否更新,并在是的情况下调用所述升级包下载单元,以及在否的情况下调用所述登录单元;

所述升级包下载单元用于从所述服务器中下载更新后的软件升级包,调用所述指令发送单元;

所述指令发送单元用于向所述上位机发送一升级指令;

所述标志位设置单元用于在接收到所述升级指令时设置一升级标志位,并重启所述上位机;

所述标志位判断单元用于在所述上位机重启的过程中判断是否检测到所述升级标志位,并在是的情况下调用所述读写单元;

所述读写单元用于从所述无线模块中分段读取更新后的软件升级包的数据,并将读取的数据写入程序存储区域;

较佳地,所述软件升级系统还包括一标志位清除单元,用于在所述软件升级包的所有数据被写入时将所述升级标志位清除,并重启所述上位机。

较佳地,所述服务器中还存储有升级包信息文件,所述升级包信息文件中包含所述上位机的软件升级包的信息,所述无线模块还包括一信息文件下载单元和一第一判断单元;

所述检测单元用于在检测到所述软件升级包更新时调用所述信息文件下载单元;

所述信息文件下载单元用于从所述服务器中下载所述升级包信息文件,并对下载的所述升级包信息文件进行解析,得到第一校验值,调用所述升级包下载单元;

所述升级包下载单元还用于计算下载的软件升级包的第二校验值;

所述第一判断单元用于判断所述第一校验值与所述第二校验值是否相同,并在是的情况下调用所述发送单元,以及在否的情况下调用所述登录单元。

较佳地,所述登录单元还用于设置一第一下载次数;

所述信息文件下载单元包括一第一下载子单元、一第一判断子单元、一第二判断子单元以及一解析子单元;

所述第一下载子单元用于从所述服务器中下载所述升级包信息文件,并将所述第一下载次数加一;

所述第一判断子单元用于判断所述升级包信息文件是否下载成功,并在是的情况下调用所述解析子单元,以及在否的情况下调用所述第二判断子单元;

所述第二判断子单元用于判断所述第一下载次数是否大于等于第一预设下载次数,并在是的情况下调用所述登录单元,以及在否的情况下调用所述第一下载子单元;

所述解析子单元用于对下载的所述升级包信息文件进行解析,得到第一校验值。

较佳地,所述登录单元还用于设置一第二下载次数;

所述升级包下载单元包括一第二下载子单元、一第三判断子单元、一第四判断子单元以及一计算子单元;

所述第二下载子单元用于从所述服务器中下载更新后的软件升级包,并将所述第二下载次数加一;

所述第三判断子单元用于判断所述软件升级包是否下载成功,并在是的情况下调用所述计算子单元,以及在否的情况下调用所述第四判断子单元;

所述第四判断子单元用于判断所述第二下载次数是否大于等于第二预设下载次数,并在是的情况下调用所述登录单元,以及在否的情况下调用所述第二下载子单元;

所述计算子单元用于计算下载的软件升级包的第二校验值。

较佳地,所述第一判断单元用于在判断所述第一校验值与所述第二校验值不同时,调用所述第四判断子单元。

较佳地,所述上位机还包括一读取单元、一计算单元以及一第二判断单元;

所述读取单元用于从所述无线模块中读取所述第一校验值;

所述计算单元用于计算写入所述程序存储区域中软件升级包的数据的第三校验值;

所述第二判断单元用于判断所述第一校验值与所述第三校验值是否相同,并在是的情况下调用所述标志位清除单元,以及在否的情况下调用所述读写单元。

较佳地,所述无线模块中存储有所述服务器的IP地址和端口号;

所述登录单元用于根据所述IP地址和所述端口号登录所述服务器。

较佳地,所述服务器为FTP服务器或Http服务器。

较佳地,所述第一校验值、所述第二校验值和所述第三校验值均包括:CRC32校验和值或MD5校验值。

较佳地,所述第一校验值、所述第二校验值和所述第三校验值还包括软件升级包的大小。

在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。

本发明的积极进步效果在于:与现有技术相比,本发明通过上位机从无线模块中分段读取并写入软件升级包的数据,使得上位机在存储空间有限的情况下也能够实现软件升级,无需发回厂家或派人到现场升级,更无需扩充上位机的存储空间,节约了成本。另外,通过多重校验保证了软件升级的可靠性和准确性。

附图说明

图1为本发明实施例上位机的软件升级方法流程图。

图2为本发明实施例上位机的软件升级系统的结构框图。

图3为本发明实施例的无线模块的结构框图。

图4为本发明实施例的上位机的结构框图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

本实施例提供一种上位机的软件升级方法,如图1所示,包括以下步骤:

步骤101、将一FTP服务器的IP地址和端口号存储至无线模块;

其中,所述FTP服务器中存储有上位机的软件升级包和升级包信息文件,所述升级包信息文件中包含所述上位机的软件升级包的信息;

步骤102、所述无线模块每隔3天根据所述IP地址和所述端口号登录所述FTP服务器,并设置第一下载次数和第二下载次数;

本实施例中,第一下载次数和第二下载次数的初始值均为0。

步骤103、所述无线模块检测所述软件升级包是否更新,若是,则执行步骤104,若否,则返回步骤102;

步骤104、所述无线模块从所述FTP服务器中下载所述升级包信息文件,并将所述第一下载次数加一;

步骤105、所述无线模块判断所述升级包信息文件是否下载成功,若是,则执行步骤107,若否,则执行步骤106;

步骤106、所述无线模块判断所述第一下载次数是否大于等于第一预设下载次数,若是,则返回步骤102,若否,则返回步骤104;

步骤107、所述无线模块对下载的所述升级包信息文件进行解析,得到第一校验值;

步骤108、所述无线模块从所述FTP服务器中下载更新后的软件升级包,并将所述第二下载次数加一;

步骤109、所述无线模块判断所述软件升级包是否下载成功,若是,则执行步骤111,若否,则执行步骤110;

步骤110、所述无线模块判断所述第二下载次数是否大于等于第二预设下载次数,若是,则返回步骤102,若否,则返回步骤108;

步骤111、所述无线模块计算下载的软件升级包的第二校验值;

步骤112、所述无线模块判断所述第一校验值与所述第二校验值是否相同,若是,则执行步骤113,若否,则返回步骤110;

步骤113、所述无线模块向所述上位机发送一升级指令;

步骤114、所述上位机在接收到所述升级指令时设置一升级标志位,并重启;

步骤115、所述上位机在重启的过程中判断是否检测到所述升级标志位,若是,则执行步骤116,若否,则结束流程;

步骤116、所述上位机从所述无线模块中读取所述第一校验值;

步骤117、所述上位机从所述无线模块中分段读取更新后的软件升级包的数据,并将读取的数据写入程序存储区域,直至所述软件升级包的所有数据被写入;

步骤118、所述上位机计算写入所述程序存储区域中软件升级包的数据的第三校验值;

步骤119、所述上位机判断所述第一校验值与所述第三校验值是否相同,若是,则执行步骤120,若否,则返回步骤117;

步骤120、所述上位机将所述升级标志位清除。

本实施例中的上位机为存储空间有限的PIC(可编程终端控制器)小型单片机,第一预设下载次数为2,第二预设下载次数为3。第一校验值、第二校验值和第三校验值均为CRC32校验和值和软件升级包的大小,其中,软件升级包的大小为10MB。

本实施例还提供一种能够实现上述软件升级方法的上位机的软件升级系统10,如图2所示,包括FTP服务器11、无线模块12以及上位机13。

其中,FTP服务器11中存储有上位机的软件升级包和升级包信息文件,所述升级包信息文件中包含所述上位机的软件升级包的信息。本实施例中,所述升级包信息文件中包含软件升级包的大小和软件升级包的CRC32校验和值。

无线模块12包括登录单元21、检测单元22、信息文件下载单元23、升级包下载单元24、指令发送单元25、第一判断单元26,信息文件下载单元23包括第一下载子单元231、第一判断子单元232、第二判断子单元233以及解析子单元234,升级包下载单元24包括第二下载子单元241、第三判断子单元242、第四判断子单元243以及计算子单元244,其中,无线模块中存储有FTP服务器的IP地址和端口号。

上位机13包括标志位设置单元31、标志位判断单元32、读取单元33、读写单元34、计算单元35、第二判断单元36以及标志位清除单元37。

本实施例中,无线模块与上位机之间的数据传输通过串口来实现。

下面对本实施例中上位机的软件升级系统的功能进行简单介绍。

所述登录单元用于每隔3天根据所述IP地址和所述端口号登录所述FTP服务器,并设置第一下载次数和第二下载次数。本实施例中,第一下载次数和第二下载次数的初始值均为0。

所述检测单元用于检测所述软件升级包是否更新,并在是的情况下调用所述信息文件下载单元,以及在否的情况下调用所述登录单元。

所述第一下载子单元用于从所述服务器中下载所述升级包信息文件,并将所述第一下载次数加一。

所述第一判断子单元用于判断所述升级包信息文件是否下载成功,并在是的情况下调用所述解析子单元,以及在否的情况下调用所述第二判断子单元。

所述第二判断子单元用于判断所述第一下载次数是否大于等于第一预设下载次数,并在是的情况下调用所述登录单元,以及在否的情况下调用所述第一下载子单元。本实施例中,第一预设下载次数为2。

所述解析子单元用于对下载的所述升级包信息文件进行解析,得到第一校验值,调用所述升级包下载单元。

所述第二下载子单元用于从所述服务器中下载更新后的软件升级包,并将所述第二下载次数加一。

所述第三判断子单元用于判断所述软件升级包是否下载成功,并在是的情况下调用所述计算子单元,以及在否的情况下调用所述第四判断子单元;

所述第四判断子单元用于判断所述第二下载次数是否大于等于第二预设下载次数,并在是的情况下调用所述登录单元,以及在否的情况下调用所述第二下载子单元。本实施例中,第二预设下载次数为3。

所述计算子单元用于计算下载的软件升级包的第二校验值。

所述第一判断单元用于判断所述第一校验值与所述第二校验值是否相同,并在是的情况下调用所述指令发送单元,以及在否的情况下调用所述第四判断子单元。

所述指令发送单元用于向所述上位机发送一升级指令。

所述标志位设置单元用于在接收到所述升级指令时设置一升级标志位,并重启所述上位机。

所述标志位判断单元用于在所述上位机重启的过程中判断是否检测到所述升级标志位,并在是的情况下调用所述读写单元。

所述读取单元用于从所述无线模块中读取所述第一校验值。本实施例中,当所述指令发送单元被调用时,说明所述第一校验值和所述第二校验值相同,因此,所述读取单元除了可以从所述无线模块中读取所述第一校验值之外,还可以读取所述第二校验值。

所述读写单元用于从所述无线模块中分段读取更新后的软件升级包的数据,并将读取的数据写入程序存储区域。

所述计算单元用于计算写入所述程序存储区域中软件升级包的数据的第三校验值。

所述第二判断单元用于判断所述第一校验值与所述第三校验值是否相同,并在是的情况下调用所述标志位清除单元,以及在否的情况下调用所述读写单元。

所述标志位清除单元用于在所述软件升级包的所有数据被写入时将所述升级标志位清除。

与现有技术相比,本实施例通过上位机从无线模块中分段读取并写入软件升级包的数据,使得上位机在存储空间有限的情况下也能够成功实现软件升级,无需发回厂家或派人到现场升级,更无需扩充上位机的存储空间,节约了成本。另外,本实施例通过多重校验保证了软件升级的可靠性和准确性,具有广泛的应用价值。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1