无人机固件更新方法、装置、无人机及存储介质与流程

文档序号:16466563发布日期:2019-01-02 22:49阅读:892来源:国知局
无人机固件更新方法、装置、无人机及存储介质与流程

本发明实施例涉及无人机技术,尤其涉及一种无人机固件更新方法、装置、无人机及存储介质。



背景技术:

无人机是一种由无线电遥控设备或自身程序控制装置操纵的无人驾驶飞行器。随着无人机行业的迅速发展,越来越多的无人机被应用到农业、林业、电力、测绘和遥测等行业。

无人机内包括多个具有固件的模块,例如,飞行控制器、光流定位模块、图传模块和电池模块等,这些模块需要依赖固件实现其相应功能。以飞行控制器为例,无人机飞行控制器是无人机的核心控制部件,其任务是接收来自内部传感器(如陀螺仪、加速度计、磁力计、气压计、温度计和电压计等)和外部传感器(如gnss(globalnavigationsatellitesystem,全球导航卫星系统)和外部磁力计等)的数据,通过特定的飞行控制算法转换成电子调速器所需的控制信号,从而改变和控制无人机的姿态(如俯仰、横滚和航向情况)、地理位置和高度。无人机飞行控制器在出厂后,其固件一般是最新,但是随着厂商对飞行控制器进行一些bug的修复、性能的提升以及功能增加,厂商会发布新版本的固件,用户需要将无人机中的固件更新至最新版本。

目前,一般是通过usb将电脑与无人机进行连接,通过安装在电脑上的固件升级软件把最新固件下载到无人机的sd卡中,重启无人机来完成固件更新。最新固件存储在无人机内独立于各模块的共用存储区域或存储设备中,需要与各模块进行信息交互,导致风险增加;并且,若断电或其他因素导致固件更新过程中断,会导致升级失败,无人机甚至无法正常使用。



技术实现要素:

本发明提供一种无人机固件更新方法、装置、无人机及存储介质,以减少待更新模块与其他存储设备进行信息交互导致的风险和不可靠性,并消除更新过程中断对无人机正常运行的影响。

第一方面,本发明实施例提供了一种无人机固件更新方法,应用于无人机内需要进行固件更新的模块,包括:

接收上位机发送的待更新模块的固件升级数据;

将所述固件升级数据写入所述待更新模块中的固件备份区域,并确定写入成功;

重启所述待更新模块,将所述固件备份区域中的固件升级数据写入所述待更新模块中的程序运行区域,以运行所述固件升级数据完成固件更新。

第二方面,本发明实施例还提供了一种无人机固件更新装置,应用于无人机内需要进行固件更新的模块,包括:

数据接收单元,用于接收上位机发送的待更新模块的固件升级数据;

数据写入单元,用于将所述固件升级数据写入所述待更新模块中的固件备份区域,并确定写入成功;

数据运行单元,用于重启所述待更新模块,将所述固件备份区域中的固件升级数据写入所述待更新模块中的程序运行区域,以运行所述固件升级数据完成固件更新。

第三方面,本发明实施例还提供了一种无人机,所述无人机包括至少一个具有固件的模块,每个模块均包括:处理器和存储器;

所述存储器包括:固件备份区域和程序运行区域,所述固件备份区域用于临时存储所属模块的固件升级数据,所述程序运行区域用于存储所属模块当前使用的固件;

所述存储器还存储有计算机程序,当所述程序被所述处理器执行时实现如本发明任意实施例所述的无人机固件更新方法;

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的无人机固件更新方法。

本发明实施例的技术方案,将无人机的模块中的存储器划分为固件备份区域和程序运行区域,将模块的固件升级数据临时存储到模块的固件备份区域,每个模块都有固件备份区域,能够保证独立性和模块化处理,固件更新过程中待更新模块无需与其他存储设备进行信息交互,降低了信息交互导致的风险和不可靠性。固件升级数据全部成功写入到固件备份区域后,将固件升级数据搬运到程序运行区域以运行该固件升级数据,若此过程中因断电或其他因素导致更新过程中断,只需重新上电,重新将固件升级数据搬运到程序运行区域,而不会影响旧固件及其他主程序的运行,保证模块及无人机可以正常工作。

附图说明

图1是本发明实施例一提供的无人机固件更新方法的流程图;

图2是本发明实施例三提供的无人机固件更新方法的流程图;

图3是本发明实施例四提供的无人机固件更新方法的具体流程图;

图4是本发明实施例五提供的无人机固件更新装置的结构框图;

图5是本发明实施例六提供的无人机的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

本发明实施例中,无人机包括多个模块,分别负责实现不同的功能,例如,飞行控制器负责根据传感数据控制无人机的姿态、地理位置和高度,电池模块负责无人机电池的智能管理,图传模块负责采集图像并实时传输图像,光流定位模块负责根据光流算法和无人机采集的图像对无人机进行定位。无人机内的这些模块通过can(controllerareanetwork,控制器局域网络)总线连接,以实现模块间的信息交互。挂在can总线上的各模块均可以收到通过can总线广播的信息,模块收到信息后,若该信息与自己有关,则基于该信息进行相应的处理操作,若该信息与自己无关,则可以不对该信息作任何处理。每个模块均具有自己的固件以实现自己的功能,无人机的固件更新是针对模块而言的,例如,厂商当前发布的新版固件针对飞行控制器,以修复bug。

实施例一

图1是本发明实施例一提供的无人机固件更新方法的流程图,本实施例可适用于更新无人机固件的情况,该方法可以由无人机固件更新装置来执行,该装置可以通过软件和/或硬件实现,该装置可集成在无人机内具有固件的各模块中,如光流定位模块、飞行控制器等。具有固件的模块需要进行固件更新时,即可通过集成在该模块中的无人机固件更新装置来执行本发明实施例的方法以实现该模块的固件更新。如图1所示,该方法具体包括如下步骤:

步骤110,接收上位机发送的待更新模块的固件升级数据。

本实施例中,固件升级数据是指无人机中任一模块的最新版本固件,例如,厂商通过其官网发布的某型号无人机中任一模块的最新版本固件。上位机可以通过无线或有线的方式与无人机连接,以传输固件升级数据至无人机中。具体的,上位机可以定期从厂商服务器查询并获取固件升级数据,也可以接收厂商服务器主动推送的固件升级数据。

需要说明的是,本发明实施例的无人机固件更新方法的执行主体是待更新模块,待更新模块是无人机各模块中当前需要进行固件更新的模块,示例性的,固件升级数据中可以携带模块标识,来表示自己属于哪个模块的最新版固件,can总线上的各模块可以根据固件升级数据中携带的模块标识来判断自己是否需要对接收的固件升级数据进行处理。当前无需进行固件更新的模块也可以通过can总线接收到固件升级数据,但不做任何处理。

步骤120,将所述固件升级数据写入所述待更新模块中的固件备份区域,并确定写入成功。

本实施例中,无人机内各模块均具备自己的存储器,如闪存(flash),可以将模块的存储器划分为固件备份区域和程序运行区域,固件备份区域用于临时存储该模块的固件升级数据,程序运行区域用于存储该模块当前使用的固件,该模块的引导程序(bootloader)跳转到该模块的程序运行区域时即可执行该区域中存储的程序。可选的,模块的存储器还可以包括参数存储区域,用于存储一些参数,例如固件更新标志。写入成功是指固件升级数据准确且完整的写入到固件备份区域中,即完成固件备份。

步骤130,重启所述待更新模块,将所述固件备份区域中的固件升级数据写入所述待更新模块中的程序运行区域,以运行所述固件升级数据完成固件更新。

其中,将模块的固件升级数据成功写入该模块的固件备份区域进行临时存储之后,在重启该模块的过程中,将固件升级数据从固件备份区域向程序运行区域搬运,并运行搬运到程序运行区域中的固件升级数据,以完成固件更新。在正常运行固件升级数据,完成固件更新之后,可以删除程序运行区域中原本的旧固件,由此,若此过程中因断电或其他因素导致更新过程中断,重启待更新模块,并重新将固件备份区域中的固件升级数据搬运至程序运行区域,而不会影响旧固件及其他主程序的运行,保证模块可以正常工作。

具体的,模块重启,该模块的bootloader引导程序检测到该模块当前有固件需要更新,bootloader引导程序不断将该模块的固件备份区域中的固件升级数据读出并写入到该模块的程序运行区域,全部写完后,bootloader引导程序跳转到程序运行区域,开始运行程序运行区域中的固件升级数据,完成该模块的固件更新。

需要说明的是,固件备份区域中的固件升级数据,可以在搬运到程序运行区域后及时删除,也可以在下次该模块有新的固件时,先擦除固件备份区域中已有的固件升级数据,再将新固件写入。

本实施例的技术方案,将无人机的模块中的存储器划分为固件备份区域和程序运行区域,将模块的固件升级数据临时存储到模块的固件备份区域,每个模块都有固件备份区域,能够保证独立性和模块化处理,固件更新过程中待更新模块无需与其他存储设备进行信息交互,降低了信息交互导致的风险和不可靠性。固件升级数据全部成功写入到固件备份区域后,将固件升级数据搬运到程序运行区域以运行该固件升级数据,若此过程中因断电或其他因素导致更新过程中断,只需重新上电,重新将固件升级数据搬运到程序运行区域,而不会影响旧固件及其他主程序的运行,保证模块及无人机可以正常工作。

可选的,步骤120中的写入成功包括两方面:接收到的固件升级数据是完整准确的(即通过完整性校验),以及写入到固件备份区域的固件升级数据是准确的(即通过写入校验)。具体的,步骤120可以包括:对所述固件升级数据进行完整性校验;若完整性校验通过,则将所述固件升级数据写入所述固件备份区域;对写入所述固件备份区域的固件升级数据进行写入校验;若写入校验通过,则确定所述固件升级数据写入成功。也就是说,既通过完整性校验,也通过写入校验,固件升级数据才算是成功写入固件备份区域,完成固件备份。

其中,完整性校验是指校验模块接收到的固件升级数据与上位机发送的固件升级数据是否一致。具体的,上位机利用指定算法对原始的固件升级数据计算出校验值a,并将该校验值a与原始的固件升级数据一起发送给无人机,无人机中待更新模块用同样的算法对接收到的原始的固件升级数据计算校验值b,若两次计算得到的检验值相同,则说明数据是完整的,即完整性校验通过,若两次计算得到的校验值不同,则原始数据可能被篡改,完整性校验未通过。完整性校验可以使用现有的校验方法,例如,奇偶校验、bcc异或校验(blockcheckcharacter,信息组校验码)、crc(cyclicredundancycheck,循环冗余校验)、md5校验(messagedigestalgorithm,消息摘要算法第五版)等。若完整性校验未通过,可以向上位机发送消息,以请求上位机重新发送固件升级数据。

写入校验是指校验写入固件备份区域前后的固件升级数据是否一致,以判断写入过程是否发生错误。进一步的,对写入所述固件备份区域的固件升级数据进行写入校验,可以包括:从所述固件备份区域读取已写入的固件升级数据,并按照预设算法计算该固件升级数据的第一校验信息;按照所述预设算法计算通过完整性校验的固件升级数据的第二校验信息;比较所述第一校验信息与所述第二校验信息,若一致,则写入校验通过,若不一致,则表示写入过程可能出错,写入校验未通过。

预设算法可以使用现有校验算法,例如,奇偶校验、bcc异或校验(blockcheckcharacter,信息组校验码)、crc(cyclicredundancycheck,循环冗余校验)、md5校验(messagedigestalgorithm,消息摘要算法第五版)等。若写入校验未通过,可以向上位机发送消息,以请求上位机重新发送固件升级数据,进而对新接收到的固件升级数据进行两次校验;或者,也可以重新执行一次写入操作,即将通过完整性校验的固件升级数据重新写入固件备份区域,然后再进行写入校验,具体可以设置重新写入的次数,若达到该次数,写入校验仍未通过,则向上位机请求重新发送固件升级数据。

通过上述关于写入成功的两次校验,能够保证固件备份区域中的固件升级数据的准确性和可用性,进而提高固件更新的成功率。若完整性校验和写入校验任一不通过,可以向上位机发送第一反馈信息,以请求上位机重新发送固件升级数据,及时获取到可用的固件升级数据,进行固件更新。

在一个实施方式中,可以在模块中设置固件更新标志,来表示该模块的固件更新情况,例如,固件更新标志置为1,表示模块有固件需要更新;置为0表示模块的固件更新完成。固件更新标志可以作为参数,存储在模块的存储器中的参数存储区域。

具体的,在步骤120将所述固件升级数据写入所述待更新模块中的固件备份区域,并确定写入成功之后,还可以包括:修改所述待更新模块的固件更新标志,使得所述固件更新标志表示所述待更新模块有固件需要更新。固件升级数据成功写入固件备份区域后,修改模块的固件更新标志,以在重启模块时提示该模块要执行固件更新操作,例如,将固件备份区域中的固件升级数据搬运到程序运行区域。

相应的,步骤130将所述固件备份区域中的固件升级数据写入所述待更新模块中的程序运行区域,包括:根据所述固件更新标志,确定所述待更新模块当前有固件需要更新;从所述固件备份区域中读取固件升级数据,并将读取的固件升级数据写入所述程序运行区域;写入完成后,运行所述程序运行区域中的固件升级数据,并修改所述固件更新标志,使得所述固件更新标志表示所述待更新模块的固件更新完成。

具体的,模块重启,该模块的bootloader引导程序根据模块的固件更新标志,检测到该模块当前有固件需要更新,bootloader引导程序不断将该模块的固件备份区域中的固件升级数据读出并写入到该模块的程序运行区域,全部写完后,bootloader引导程序跳转到程序运行区域,开始运行程序运行区域中的固件升级数据,并修改固件更新标志,完成该模块的固件更新。

本实施方式通过设置固件更新标志来表示模块的固件更新情况,能够提示模块顺利进行固件更新。

实施例二

本实施例在上述各实施例的基础上,提供了将固件升级数据拆包下发的实施方式。与上述实施例相同或相应的术语解释,本实施例不再赘述。

在本实施例中,接收上位机发送的待更新模块的固件升级数据包括:依次接收所述上位机发送的至少两个固件数据包,其中,所述至少两个固件数据包是按照预设规则对所述固件升级数据进行拆分得到的。

其中,预设规则(即拆分规则)可以根据实际需求进行设置,例如,按照固定大小(如200kb)进行拆分,又如,拆分成预设个数的数据包;再如,预先建立固件升级数据的大小与拆包个数的对应关系,根据固件升级数据的实际大小,查找上述对应关系,确定实际拆包个数。拆分得到的固件数据包中可以设置有序号标记,若涉及到程序执行顺序的数据,则可以按照该序号标记,恢复原始的固件升级数据,以保证固件升级数据的正常运行。

本实施例中将固件升级数据拆分成至少两个固件数据包,固件数据包较小,相对于较大的固件升级数据而言,小数据包传输出错的可能性更小,由此能够保证固件升级数据传输的准确性。

相应的,对应于拆包下发固件升级数据的情况,无人机内待更新模块接收拆分的固件数据包及对固件数据包进行完整性校验和写入校验的过程,参见如下几种实施方式,当然本发明实施例并不限于此,在此基础上合理的变化也属于本发明保护范围。

(1)待更新模块依次接收上位机发送的至少两个固件数据包;将接收的所有固件数据包按照拆分规则组合得到固件升级数据,然后对固件升级数据整体进行完整性校验(此种情况下,可以在任一固件数据包中携带固件升级数据的校验信息),若完整性校验通过,将固件升级数据写入待更新模块中的固件备份区域;对写入固件备份区域的固件升级数据进行写入校验,若写入校验通过,则确定固件升级数据写入成功。重启待更新模块,将固件备份区域中的固件升级数据写入该待更新模块中的程序运行区域,以运行固件升级数据完成固件更新。

(2)待更新模块每接收一个固件数据包,就对该固件数据包执行完整性校验和写入校验,若校验均通过,则开始接收下一个固件数据包。此种情况下,每个固件数据包中均携带该固件数据包的校验信息。

具体的,待更新模块接收当前固件数据包,对当前固件数据包进行完整性校验(此种情况下,每个固件数据包中均携带该固件数据包的校验信息);若完整性校验通过,则将所述当前固件数据包写入所述待更新模块中的固件备份区域;对写入所述固件备份区域的当前固件数据包进行写入校验;若写入校验通过,则确定所述当前固件数据包写入成功,并向所述上位机发送第二反馈信息,以请求所述上位机发送下一个固件数据包。

其中,若固件数据包的完整性校验未通过,可以向上位机发送消息,以请求上位机重新发送该固件数据包。若固件数据包的写入校验未通过,可以向上位机发送消息,以请求上位机重新发送固件升级数据,进而对新接收到的固件升级数据进行两次校验;或者,也可以重新执行一次写入操作,即将通过完整性校验的固件数据包重新写入固件备份区域,然后再进行写入校验,具体可以设置重新写入的次数,若达到该次数,写入校验仍未通过,则向上位机请求重新发送该固件数据包。由此可见,若同一固件数据包的完整性校验和写入校验任一不通过,待更新模块可以向上位机发送第三反馈信息,以请求上位机重新发送该固件数据包。

当所有固件数据包均写入成功后,重启待更新模块,将固件备份区域中的所有固件数据包写入该待更新模块中的程序运行区域,以运行固件升级数据完成固件更新。

(3)待更新模块依次接收上位机发送的至少两个固件数据包。针对接收的每个固件数据包,均执行以下操作:分别对每个固件数据包进行完整性校验(此种情况下,每个固件数据包中均携带该固件数据包的校验信息);若完整性校验通过,则将该固件数据包写入固件备份区域;对写入固件备份区域的固件数据包进行写入校验;若写入校验通过,则确定固件数据包写入成功。

其中,若固件数据包的完整性校验未通过,可以向上位机发送消息,以请求上位机重新发送该固件数据包。若固件数据包的写入校验未通过,可以向上位机发送消息,以请求上位机重新发送固件升级数据,进而对新接收到的固件升级数据进行两次校验;或者,也可以重新执行一次写入操作,即将通过完整性校验的固件数据包重新写入固件备份区域,然后再进行写入校验,具体可以设置重新写入的次数,若达到该次数,写入校验仍未通过,则向上位机请求重新发送该固件数据包。由此可见,若同一固件数据包的完整性校验和写入校验任一不通过,可以向所述上位机发送第三反馈信息,以请求所述上位机重新发送该固件数据包。

当所有固件数据包均写入成功后,重启待更新模块,将固件备份区域中的所有固件数据包写入该待更新模块中的程序运行区域,以运行固件升级数据完成固件更新。

需要说明的是,本实施例中对固件数据包的完整性校验和写入校验,与实施例一中对固件升级数据的完整性校验和写入校验类似,不再赘说。

实施例三

本实施例在上述各实施例的基础上,提供了在传输固件升级数据之前,上位机与无人机进行应答准备的实施方式。具体的,在接收上位机发送的待更新模块的固件升级数据之前,还包括:接收所述上位机发送的固件更新指令,并根据所述固件更新指令确定自身需要进行固件更新;向所述上位机发送应答信息;其中,若所述无人机中不需要进行固件更新的模块接收到所述固件更新指令,所述不需要进行固件更新的模块进入静默状态,暂停发送数据,当接收到所述上位机发送的固件备份完成指令时退出所述静默状态。与上述实施例相同或相应的术语解释,本实施例不再赘述。

图2是本发明实施例三提供的无人机固件更新方法的流程图,如图2所示,该方法包括如下步骤:

步骤210,待更新模块接收上位机发送的固件更新指令,并根据所述固件更新指令确定自身需要进行固件更新。

其中,固件更新指令中可以携带待更新模块的标识,无人机内的各模块通过can总线接收到该固件更新指令,均根据该固件更新指令中携带的待更新模块的标识,来判断自身是否需要进行固件更新,若固件更新指令中携带的是自身的标识,则确定自身需要进行固件更新。

步骤220,待更新模块向所述上位机发送应答信息。

其中,应答信息用于告知上位机,待更新模块已经做好固件更新准备。无人机内的各模块接收到固件更新指令,若确定自身需要进行固件更新,则向上位机发送应答信息;若确定自身不需要进行固件更新,则进入静默状态,暂停发送数据,当接收到上位机发送的固件备份完成指令(表示固件升级数据在待更新模块中备份完成)时,退出静默状态,恢复数据的发送。

步骤230,待更新模块接收所述上位机发送的固件升级数据。

步骤240,待更新模块将所述固件升级数据写入待更新模块中的固件备份区域,并确定写入成功。

步骤250,重启待更新模块,将固件备份区域中的固件升级数据写入待更新模块中的程序运行区域,以运行固件升级数据完成固件更新。

本实施例通过固件更新指令进行应答准备,确定待更新模块正常工作,且让各模块做好准备,不再向can总线发送数据,以免占用带宽,为固件升级数据的传输提供便利。

实施例四

本实施例在上述各实施例的基础上,提供了无人机固件更新方法的一个具体实例,如图3所示,该方法包括:

步骤301,上位机发送固件更新指令给无人机中的各模块。

具体的,上位机可以通过无线或有线的方式与无人机连接,本实施例中以串口为例,上位机通过串口向无人机发送固件更新指令,在无人机内部,通过串口至can接口的转换,将固件更新指令转换发送到can总线上,挂在can总线上的各模块便可以接收到固件更新指令。

步骤302,各模块判断是否为自身需要固件更新,如果是,进入步骤303,如果否,进入步骤304。具体的,各模块可以根据固件更新指令中携带的模块标识来判断是否自身需要更新固件。

步骤303,待更新模块发送应答信息至can总线上,通过串口转发给上位机,进入步骤305。

步骤304,无需更新固件的模块进入静默状态,不再往can总线发送数据,直至接收到上位机发送的固件备份完成指令才恢复向can总线发送数据。

步骤305,上位机收到待更新模块对于固件更新指令的应答信息后,将新固件拆分成固定大小的数据包,并通过串口向无人机发送第一个数据包。

步骤306,待更新模块接收到当前数据包,对该数据包进行完整性校验,并判断完整性校验是否通过,若通过,进入步骤307,若未通过,进入步骤308。

步骤307,待更新模块将当前数据包写入该模块中的固件备份区域,进入步骤309。

步骤308,请求上位机重新发送当前数据包。

步骤309,从固件备份区域中读出当前数据包,进行写入校验,并判断写入校验是否通过,若通过,进入步骤310,若未通过,返回步骤308。

步骤310,待更新模块向上位机发送应答信息,以请求上位机发送下一数据数据包。

步骤311,上位机判断新固件的所有数据包是否发送完毕,若是,进入步骤312,若否,进入步骤313。

步骤312,上位机发送固件备份完成指令给无人机的各模块,进入步骤314。

步骤313,上位机发送下一个数据包给无人机。

步骤314,待更新模块收到固件备份完成指令后,确定新固件备份完成,将固件更新标志置1并储存,自动重启,进入bootloader引导程序。无需更新固件的模块收到固件备份完成指令后,退出静默状态,可以向can总线上发送数据。

步骤315,待更新模块的bootloader程序检测到固件更新标志置1,确定当前有固件需要更新,bootloader程序不断将固件备份区域的新固件读出并写入到程序运行区域,全部写完后,bootloader程序跳转到程序运行区域,开始运行新固件。

步骤316,将固件更新标志置0并储存,固件更新完成。

实施例五

本实施例提供了一种无人机固件更新装置,应用于无人机内需要进行固件更新的模块,具体可以在无人机内具有固件的各模块中均安装本实施例的无人机固件更新装置,当模块需要进行固件更新时,可以通过该模块中安装的无人机固件更新装置来进行固件更新。图4是本发明实施例五提供的无人机固件更新装置的结构框图,如图4所示,该装置包括:

数据接收单元410,用于接收上位机发送的待更新模块的固件升级数据;

数据写入单元420,用于将所述固件升级数据写入所述待更新模块中的固件备份区域,并确定写入成功;

数据运行单元430,用于重启所述待更新模块,将所述固件备份区域中的固件升级数据写入所述待更新模块中的程序运行区域,以运行所述固件升级数据完成固件更新。

可选的于,数据写入单元420包括:

完整性校验子单元,用于对所述固件升级数据进行完整性校验;

写入子单元,用于若完整性校验通过,则将所述固件升级数据写入所述固件备份区域;

写入校验子单元,用于对写入所述固件备份区域的固件升级数据进行写入校验;若写入校验通过,则确定所述固件升级数据写入成功。

进一步的,写入校验子单元具体用于:从所述固件备份区域读取已写入的固件升级数据,并按照预设算法计算该固件升级数据的第一校验信息;按照所述预设算法计算通过完整性校验的固件升级数据的第二校验信息;比较所述第一校验信息与所述第二校验信息,若一致,则写入校验通过。

进一步的,上述装置还还包括:反馈信息发送单元,用于若完整性校验和写入校验任一不通过,则向所述上位机发送第一反馈信息,以请求所述上位机重新发送所述固件升级数据。

可选的,数据接收单元410具体用于:依次接收所述上位机发送的至少两个固件数据包,其中,所述至少两个固件数据包是按照预设规则对所述固件升级数据进行拆分得到的。

进一步的,数据写入单元420具体用于:针对接收的每个固件数据包,分别进行完整性校验;若完整性校验通过,则将所述固件数据包写入所述固件备份区域;对写入所述固件备份区域的固件数据包进行写入校验;若写入校验通过,则确定所述固件数据包写入成功。

进一步的,数据写入单元420具体用于:对当前固件数据包进行完整性校验;若完整性校验通过,则将所述当前固件数据包写入所述固件备份区域;对写入所述固件备份区域的当前固件数据包进行写入校验;若写入校验通过,则确定所述当前固件数据包写入成功,并向所述上位机发送第二反馈信息,以请求所述上位机发送下一个固件数据包。

进一步的,反馈信息发送单元还用于若同一固件数据包的完整性校验和写入校验任一不通过,则向所述上位机发送第三反馈信息,以请求所述上位机重新发送该固件数据包。

可选的,上述装置还可以包括:

指令接收单元,用于接收所述上位机发送的固件更新指令;

应答信息发送单元,用于在根据所述固件更新指令确定自身需要进行固件更新的情况下,向所述上位机发送应答信息;

模块状态控制单元,用于在根据所述固件更新指令确定自身不需要进行固件更新的情况下,控制模块进入静默状态,暂停发送数据,当接收到所述上位机发送的固件备份完成指令时控制模块退出所述静默状态。

可选的,上述装置还可以包括:

标志修改单元,用于在将所述固件升级数据写入所述待更新模块中的固件备份区域,并确定写入成功之后,修改所述待更新模块的固件更新标志,使得所述固件更新标志表示所述待更新模块有固件需要更新;

相应的,数据运行单元430具体用于:根据所述固件更新标志,确定所述待更新模块当前有固件需要更新;从所述固件备份区域中读取固件升级数据,并将读取的固件升级数据写入所述程序运行区域;写入完成后,运行所述程序运行区域中的固件升级数据,并修改所述固件更新标志,使得所述固件更新标志表示所述待更新模块的固件更新完成。

本发明实施例所提供的无人机固件更新装置可执行本发明任意实施例所提供的无人机固件更新方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的无人机固件更新方法。

实施例六

本实施例提供了一种无人机,图5是本发明实施例六提供的无人机的结构示意图,如图5所示,该无人机包括至少一个具有固件的模块,这些模块通过can总线连接,每个模块均包括:处理器510和存储器520(图5中仅以模块1为例进行示意)。处理器510和存储器520可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的无人机固件更新方法对应的程序指令/模块(例如,无人机固件更新装置中的数据接收单元410、数据写入单元420和数据运行单元430)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行无人机的各种功能应用以及数据处理,即实现上述的无人机固件更新方法。

存储器520可主要包括存储程序区和存储数据区。其中,存储程序区可存储操作系统、至少一个功能所需的应用程序。具体的,存储器520的存储程序区可以包括:固件备份区域521和程序运行区域522,固件备份区域521用于临时存储所属模块的固件升级数据,程序运行区域522用于存储所属模块当前使用的固件。存储数据区可存储根据无人机的使用所创建的数据等,例如,固件更新标志。

此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。

实施例七

本发明实施例七还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的无人机固件更新方法。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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