首页 / 专利库 / 电脑零配件 / 固件 / 一种固件升级方法及升级装置

一种固件升级方法及升级装置

阅读:872发布:2020-05-08

专利汇可以提供一种固件升级方法及升级装置专利检索,专利查询,专利分析的服务。并且本 发明 涉及自动控制工程领域,提供了一种 固件 升级方法、升级装置及boot程序,所述方法包括:S1、上位机将准备好的hex文件解析为多个长度固定的二进制数据包;S2、在所述上位机和待升级固件之间建立通信通道;S3、所述上位机通过所述通信通道向所述待升级固件发送指令,使其进入 指定 的boot程序;S4、所述上位机向所述待升级固件发送所述二进制数据包;S5、所述待升级固件接受并校验所述二进制数据包;如校验成功,则刷新用户程序,如校验不成功,则不刷新;S6、结束固件升级过程,所述待升级固件跳转到用户程序入口执行所述用户程序。本发明能够快速、便捷的对固件进行升级,配合远程 服务器 ,还能实现远程升级。,下面是一种固件升级方法及升级装置专利的具体信息内容。

1.一种固件升级方法,其特征在于,包括如下步骤:
S1、上位机将准备好的hex文件解析为多个长度固定的二进制数据包;
S2、在所述上位机和待升级固件之间建立通信通道;
S3、所述上位机通过所述通信通道向所述待升级固件发送指令,使其进入指定的boot程序;
S4、所述上位机向所述待升级固件发送所述二进制数据包;
S5、所述待升级固件接受并校验所述二进制数据包;如校验成功,则刷新用户程序,如校验不成功,则不刷新;
S6、结束固件升级过程,所述待升级固件跳转到用户程序入口执行所述用户程序。
2.如权利要求1所述的固件升级方法,其特征在于,在所述二进制数据包中嵌入目的地址,所述目的地址为所述二进制数据包将写入的地址。
3.如权利要求1所述的固件升级方法,其特征在于,对所述二进制数据包加密。
4.如权利要求3所述的固件升级方法,其特征在于,通过调用动态链接库的方式对所述二进制数据包进行加密。
5.如权利要求1所述的固件升级方法,其特征在于,所述二进制数据包的长度固定为:
256Byte、512Byte或1000Byte。
6.如权利要求1所述的固件升级方法,其特征在于,所述上位机通过远程服务器与所述待升级固件的实现远程连接,进行远程升级。
7.如权利要求1所述的固件升级方法,其特征在于,步骤S3中,所述指定的boot程序为支持至少一种通信协议的boot程序。
8.如权利要求1所述的固件升级方法,其特征在于,步骤S4中,所述上位机先向所述待升级固件发送握手数据,握手成功后才下发加密的二进制数据包,否则直接结束烧写操作。
9.如权利要求8所述的固件升级方法,其特征在于,当一包所述二进制数据包发送失败,则重新发送该二进制数据包。
10.如权利要求8所述的固件升级方法,其特征在于,步骤S4具体包括:
S41、所述上位机发送握手请求给所述待升级固件;
S42、所述待升级固件收到所述请求后回送一个种子给所述上位机;
S43、所述上位机将所述种子加密后发回给所述待升级固件;
S44、所述待升级固件验证加密后的种子,如通过则握手成功,否则直接结束烧写操作。
11.一种固件升级装置,应用于如权利要求1-10任一项所述的固件升级方法,包括上位机和待升级固件,其特征在于,所述上位机与所述待升级固件通过通信总线连接;
所述上位机将准备好的hex文件解析为多个长度固定的二进制数据包发送给所述待升级固件;
所述待升级固件中的boot程序为可通过所述通信总线触发的boot程序,所述上位机通过所述通信总线发送约定指令,使所述待升级固件进入指定的boot程序;
所述待升级固件接受并校验所述二进制数据包成功后,跳转到用户程序入口,结束固件升级过程。
12.如权利要求11所述的固件升级装置,其特征在于,还包括一远程服务器,所述上位机通过所述远程服务器与待升级固件建立远程通信,进而实现远程烧写操作。
13.一种boot程序,其特征在于,初始化包括通信模硬件设备后,检查是否存在用户程序,如是,则执行该用户程序,如否,则进入烧写固件的过程;
所述执行该用户程序中包括:
当所述用户程序收到升级固件的指令时,进入烧写固件的过程。
14.如权利要求13所述的一种boot程序,其特征在于,所述烧写固件的过程包括:
B1、握手,反复不成功则执行B5,成功则执行B2;
B2、接收多个定长的二进制数据包并校验,
B3、校验成功则将所述二进制数据包写入用户程序区,并执行B5;
B4、数据长时间未接收完或校验出错,则执行B5;
B5、执行用户程序。

说明书全文

一种固件升级方法及升级装置

技术领域

[0001] 本发明涉及自动控制工程领域,尤其涉及一种固件升级方法升级装置。

背景技术

[0002] 在工程机械的控制中,由于DSP芯片良好的可编程性能,经常采用DSP芯片作为核心处理器。
[0003] 现有的DSP芯片具有如下两种烧写方式:仿真器烧写和串口烧写。
[0004] 通过仿真器烧写需要将仿真器的接口与DSP的JTAG口相连,然后将仿真器与装有烧写软件和调试器驱动的电脑相连接。然而此种方式的连接过程比较缓慢,而且,当DSP芯片安装于狭小空间内时,JTAG口可能无法引出,造成不能烧写的状况。
[0005] 通过串口烧写则需要在系统上电前手动将DSP芯片的BOOT引脚接地,从而使DSP芯片能够进入内部固化的引导程序,然后采用专用软件将hex文件下载至DSP中。在此过程中,需要多次重启系统,且当DSP芯片安装在设备内部时,烧写的操作极为不便。
[0006] 因此,上述的两种烧写方式都不能满足目前用户对烧写/升级固件程序的便利性要求。随着电子技术的发展和用户需求的提升,对已投入使用的DSP芯片的升级维护也越来越频繁,需要一种便利的、能不需要打开设备机箱即可对DSP芯片进行固件升级的技术。

发明内容

[0007] 本发明的目的在于提供一种固件升级方法,包括如下步骤:
[0008] S1、上位机将准备好的hex文件解析为多个长度固定的二进制数据包;
[0009] S2、在所述上位机和待升级固件之间建立通信通道;
[0010] S3、所述上位机通过所述通信通道向所述待升级固件发送指令,使其进入指定的boot程序;
[0011] S4、所述上位机向所述待升级固件发送所述二进制数据包;
[0012] S5、所述待升级固件接受并校验所述二进制数据包;如校验成功,则刷新用户程序,如校验不成功,则不刷新;
[0013] S6、结束固件升级过程,所述待升级固件跳转到用户程序入口执行所述用户程序。
[0014] 上述的固件升级方法中,在所述二进制数据包中嵌入目的地址,所述目的地址为所述二进制数据包将写入的地址。
[0015] 上述的固件升级方法中,对所述二进制数据包加密。
[0016] 上述的固件升级方法中,通过调用动态链接库的方式对所述二进制数据包进行加密。
[0017] 上述的固件升级方法中,所述二进制数据包的长度固定为:256Byte、512Byte或1000Byte。
[0018] 上述的固件升级方法中,所述上位机通过远程服务器与所述待升级固件的实现远程连接,进行远程升级。
[0019] 上述的固件升级方法中,步骤S3中,所述指定的boot程序为支持至少一种通信协议的boot程序。
[0020] 上述的固件升级方法中,步骤S4中,所述上位机先向所述待升级固件发送握手数据,握手成功后才下发加密的二进制数据包,否则直接结束烧写操作。
[0021] 上述的固件升级方法中,当一包所述二进制数据包发送失败,则重新发送该二进制数据包。
[0022] 上述的固件升级方法中,步骤S4具体包括:
[0023] S41、所述上位机发送握手请求给所述待升级固件;
[0024] S42、所述待升级固件收到所述请求后回送一个种子给所述上位机;
[0025] S43、所述上位机将所述种子加密后发回给所述待升级固件;
[0026] S44、所述待升级固件验证加密后的种子,如通过则握手成功,否则直接结束烧写操作。
[0027] 本发明还提供了一种固件升级装置,包括上位机和待升级固件,所述上位机与所述待升级固件通过通信总线连接;
[0028] 所述上位机将准备好的hex文件解析为多个长度固定的二进制数据包发送给所述待升级固件;
[0029] 所述待升级固件中的boot程序为可通过CAN通信触发的boot程序,所述上位机通过所述CAN总线发送约定指令,使所述待升级固件进入指定的boot程序;
[0030] 所述待升级固件接受并校验所述二进制数据包成功后,跳转到用户程序入口,结束固件升级过程。
[0031] 上述的固件升级装置中,还包括一远程服务器,所述上位机通过所述远程服务器与待升级固件的CAN总线通信,进而实现远程烧写操作。
[0032] 本发明还提供了一种boot程序,初始化包括通信模硬件设备后,检查是否存在用户程序,如是,则执行该用户程序,如否,则进入烧写固件的过程;
[0033] 所述执行该用户程序中包括:
[0034] 当所述用户程序收到升级固件的指令时,进入烧写固件的过程。
[0035] 上述的boot程序中,所述烧写固件的过程包括:B1、握手,反复不成功则执行B5,成功则执行B2;
[0036] B2、接收多个定长的二进制数据包并校验,
[0037] B3、校验成功则将所述二进制数据包写入用户程序区,并执行B5;
[0038] B4、数据长时间未接收完或校验出错,则执行B5;
[0039] B5、执行用户程序。
[0040] 与现有技术相比,本发明的技术方案通过一直在线的CAN总线对DSP芯片进行烧写/升级,大大简化了这一类型芯片的烧写/升级过程,解决了在密闭、狭小的空间中传统的烧写方式无法展开的缺陷。同时,通过远程服务器本发明还能够实现远程升级,使设备的升级不受距离限制,有利于节省人和时间,极大的提高了设备的升级效率。
[0041] 另外,本发明中,烧写程序的解析和下发通过调用一dll动态链接库实现,所述动态库与BOOT程序之间加解密算法统一。动态库解析程序文件后将得到的程序数据和地址信息一同下发给BOOT程序,BOOT程序按地址将数据烧录到芯片内部FLASH中,有效降低了程序烧写的复杂度。当在其他型号的DSP芯片上使用时,动态库文件不需改动,BOOT程序只需修改应用程序烧写和跳转的起始位置,就可以兼容使用,因此具备同类型DSP芯片下较好的移植性。附图说明
[0042] 图1是本发明一实施例的结构框图
[0043] 图2是本发明一实施例的操作界面图;
[0044] 图3是本发明一实施例的流程图

具体实施方式

[0045] 为使本发明的目的、特征更明显易懂,下面结合附图对本发明的具体实施方式作进一步的说明。然而,本发明可以用不同的形式实现,不应只是局限在所述的实施例。且,在不冲突的情况下,本申请中的实施例及实施例中的特征允许相互组合或替换。结合以下的说明,本发明的优点和特征将更清楚。
[0046] 需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
[0047] 还需声明的是,本发明中对步骤编号的目的在于便于引用,而非限定先后顺序。对于个别需强调顺序的步骤,文中将以专文字进行特别说明。
[0048] 以比较常见的DSP芯片TMS320F28335为例,对本发明做进一步的说明。
[0049] 本发明的方案构想是:在印制板上固定选择DSP芯片TMS320F28335的boot模式为F,即GPIO87-GPIO84四个管脚固定为高电平“1”,使得芯片上电后即运行FLASH中的boot程序。而该boot程序经过发明人的修改,可通过CAN总线接收新的用户程序,进而烧写到用户程序段(其物理地址也在FLASH中)中,实现通过CAN总线烧写/升级用户程序的目的。该方案的有益之处在于,烧写/升级用户程序时不需要打开机箱对DSP芯片进行管脚设置,烧写/升级后也不需要重新启动DSP芯片,只需在当前的系统连接下,直接进行boot程序引导即可,烧写/升级后也不需要重新启动DSP芯片,因为修改后的boot程序在最后会自动跳转到用户程序的入口,即能直接进入用户程序,免去重启的步骤。如果在上位机和DSP芯片之间接入远程服务器,则还能实现远程升级的功能,可免去工程人员来回奔波之苦。
[0050] 请参见如图1所示的装置结构图。所述装置包括通过CAN总线相连的DSP芯片TMS320F28335和上位机。进一步地,为了实现远程控制,还可以包括远程服务器,此时,上位机与远程服务器直接通信,或者,在物理结构上,上位机可以直接就是所述远程服务器的一部分。
[0051] 根据图1所示,上位机中包括hex文件解析模块、数据加密模块和数据下发模块。所述hex文件解析模块用于解析已生成的hex文件(一般为ASIC码),首先,所述hex文件解析模块将所述hex文件解析为二进制的代码,然后将其分割为同样大小的多包二进制数据包,并且,为了能够准确的写入到预定位置,所述hex文件解析模块还在每一包二进制数据包中都添加了目的地址。最终,所述二进制数据包根据其自身所包含的目的地址写入程序存储器中。其次,为了提高程序的保密性,本发明还设置了一数据加密模块,所述数据加密模块对程序数据进行加密处理,以保证难以被反编译,防止他人恶意窃取技术成果。最后,所述数据下发模块负责与DSP芯片TMS320F28335的通信,将加密的二进制数据包按包逐步下发至DSP芯片TMS320F28335中。下发过程中,如某一包数据丢失,则单独重新附送该包数据。也就是说,可以支持断点再续。现有的烧写技术中,如果通信过程发生中断,则需要重新下发所有程序数据,浪费时间,效率也不高。本发明将程序数据划分为多个数据包,通信中断时只丢失某一包或几包数据,重发时只需重发丢失的部分,不需要重发所有程序数据,提高了固件升级的效率。
[0052] 具体的固件(以DSP芯片TMS320F28335为例)升级方法如下:
[0053] 首先是步骤S1。打开TMS320F28335生产商TI(Texas Instrument,美国德州仪器公司)开发的CCS(Code Composer Studio)套件,编译工程代码,生成hex文件。然后打开如图2所示的上位机的软件界面,点击“打开文件”按钮,选择之前生成的hex文件,此时,所述上位机软件将会调用dll动态库对所述hex文件进行解析。一般来说hex文件为ASCII码的文件,由于本发明的技术方案中将在后续步骤中将直接烧写DSP芯片,因此调用所述动态库将其翻译为二进制机器码,以便芯片能够识别。解析生成的二进制数据包则一一显示在“源码数据”的显示框中。同时,所述动态库还将所述hex文件分割为多包固定长度的数据包。在不同的实施例中,可将其分割为不同长度,建议分割为256Byte/包、512Byte/包或1000Byte/包。另外,为了使所述二进制数据包能正确烧写到用户程序段中,每包所述二进制数据包还需嵌入目的地址。
[0054] 然后是步骤S2,建立通信通道,所述通信通道可以是CAN、RS232或RS485等多种通信协议的信道。本实施例中,给TMS320F28335上电,通过CAN总线与所述上位机通信。通信的建立也是通过如图2所示的上位机的软件实现的。该软件使用QT4.8.4平台开发。TMS320F28335芯片内部的相应CAN通信部分的代码固化在boot程序中,采用TI的开发工具CCS5.0开发而成。点击图2中“打开设备”按钮即可通过CAN总线建立上位机与TMS320F28335之间的通信。在实验室环境中,可通过USB-CAN工具实现USB到CAN的转接。进一步地,所述上位机还可以通过远程服务器与TMS320F28335实现远程连接,从而实现远程升级。
[0055] 步骤S3,所述上位机通过所述通信通道向所述待升级固件发送指令,使其进入指定的boot程序。所述boot程序是为本发明而重新编写的boot程序,不同于TI公司原厂的boot程序,需要能够支持至少一种通信协议,例如,支持CAN、RS232或RS485。所述boot程序相较原厂程序要多了一个启动TMS320F28335CAN通信的功能。所述boot程序需要事先通过传统的串口或仿真器/烧写器的方式烧写到芯片内部的FLASH中,并且所述boot程序所在的FLASH空间不能与之后将运行/升级的用户程序所在FLASH空间有所重合。本实施例中,boot程序是烧写到FLASH的A片区,程序起始地址为0X31000,用户程序烧写到FLASH的H片区,程序起始地址为0x30000。本发明所提出的创新点即在于:通过CAN通信下发的指令使固件程序跳转至所述指定的boot程序。也就是说,在本实施例中,上位机通过CAN向TMS320F28335发送一条指令,使其程序跳转至0X31000。如前所述,由于0X31000中的boot程序是为本发明而重新编写的boot程序,这样,后续才能继续通过CAN通信进行本地或远程的固件升级。
[0056] 步骤S4,所述上位机向TMS320F28335发送所述二进制数据包。具体地,需要通过握手的方式先验证当前通信的TMS320F28335是否是目标芯片,如握手成功则可下发所述二进制数据包,不然则结束烧写,执行原有app程序。握手的过程包括如下步骤:
[0057] S41、所述上位机首先发送握手请求给TMS320F28335;进一步地,所述握手请求需在上位机和TMS320F28335建立CAN连接后的一段时间内由所述上位机不停的向所述TMS320F28335发送。
[0058] S42、所述TMS320F28335收到所述请求后回送一个种子给所述上位机;
[0059] S43、所述上位机将所述种子加密后发回给所述TMS320F28335;
[0060] S44、所述TMS320F28335验证加密后的种子,如通过则握手成功,否则直接结束烧写进程
[0061] 握手成功后,所述上位机将所述二进制数据包一一发送到所述TMS320F28335中。为了防止泄密,还可以对所述二进制数据包进行加密处理。发送过程中,如有某一包数据未被成功接收,则重新发送该数据包即可,整个烧写过程不需要人工干预。进一步地,当一包所述二进制数据包发送失败,则重试若干次重新发送该二进制数据包,以保证数据的完整性。若该二进制数据包反复发送失败,则退出烧写过程。
[0062] 相比较而言,芯片自带的boot程序有如下3个缺点:
[0063] 芯片自带的boot程序只支持串口程序烧写功能,且烧写前需要将相关引脚置低,然后重新上电才能进入boot模式;
[0064] 在烧写过程中,芯片自带的boot程序不能受到断电或其他干扰,否则就会烧写失败,需要重新上电、从头开始烧写,更严重的是,可能导致芯片死,无法使用;
[0065] 烧写结束后,芯片自带的boot程序不能主动退出烧写状态,需要手工将引脚解除置低,然后再重新上电才能进入用户程序。
[0066] 本方案避免了上述3个缺点,烧写快捷,进入用户程序较快。
[0067] 步骤S5,所述TMS320F28335一一接收所述二进制数据包后,根据其中的目的地址将所述二进制数据包逐个写入FLASH中。如前所述,本实施例中,所述目的地址的起始地址为0x30000。对于已加密的数据包则需先解密。数据全部接收完成后,为了防止传输过程中出现误码,需对接收到的数据进行校验,校验无误则向所述上位机发送接收成功的消息,否则不刷新用户程序,只向所述上位机发送失败的消息。
[0068] 步骤S6,本实施例中,在boot程序的最后有一句LB#0x30000的跳转语句,其目的在于使程序跳转到用户程序入口处,从而可直接执行刚升级完的用户程序。
[0069] 基于同一发明思路,本发明还提出了一种固件升级装置,应用于前述的固件升级方法,包括上位机和待升级固件,所述上位机与所述待升级固件通过通信总线连接;
[0070] 所述上位机将准备好的hex文件解析为多个长度固定的二进制数据包发送给所述待升级固件;
[0071] 所述待升级固件中的boot程序为可通过所述通信总线触发的boot程序,所述上位机通过所述通信总线发送约定指令,使所述待升级固件进入指定的boot程序;
[0072] 所述待升级固件接受并校验所述二进制数据包成功后,跳转到用户程序入口,结束固件升级过程。
[0073] 进一步地,所述固件升级装置还包括一远程服务器,所述上位机通过所述远程服务器与待升级固件建立远程通信,进而实现远程烧写操作。
[0074] 基于同一发明思路,本发明还提出了一种boot程序,如图3所示,DSP芯片上电并初始化包括通信模块的硬件设备后,首先检查DSP芯片中是否存在用户程序,如是,则执行该用户程序,如否,则进入烧写固件的过程。其中,在执行所述用户程序的过程中,当收到升级固件的指令时,进入烧写固件(即升级用户程序)的过程。
[0075] 具体的,烧写固件的过程包括:
[0076] B1、握手,反复不成功则执行B5,成功则执行B2;
[0077] B2、接收多个定长的二进制数据包并校验;
[0078] B3、校验成功则将所述二进制数据包写入用户程序区,并执行B5;
[0079] B4、数据长时间未接收完或校验出错,则执行B5;
[0080] B5、执行用户程序。
[0081] 其中,经过步骤B1和B4而执行的步骤B5中,运行的是原用户程序,即升级未成功;经过步骤B3而执行的步骤B5中,运行的是新的用户程序,即升级成功的情况。
[0082] 上述的固件升级方法、升级装置及boot程序中,如CAN总线连接的是远程服务器,而该远程服务器中包括了上位机的功能,则还能进一步的实现远程升级的功能。从而能进一步的节约人力,提高固件升级的效率。
[0083] 上述的固件升级方法和升级装置可现场或远程对固件进行升级,并且不需要打开安装有DSP芯片的设备机箱,减少了传统烧写/升级过程中打开机箱、插入烧写器等操作,减轻了操作人员的工作强度,提高了固件烧写/升级的便利性。
[0084] 发明提出的远程升级方案更进一步的节约了工作人员往返时间,即使设备与人员不在同一地也能快速完成烧写/升级。
[0085] 同时,本发明对固件的升级程序数据进行了加密,能够防止程序被人恶意盗取,从而避免了技术机密的泄露。
[0086] 显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈