软件烧录方法和装置
技术领域
本发明属于芯片程序烧录技术领域,尤其涉及软件烧录方法和装置。
背景技术
烧录是指将软件程序写入芯片或是单片机。现有技术中,对于芯片进行软件程序烧录有多种方式,通常是对芯片本身设计,留有专门为烧录程序设计的烧录硬件接口,然后通过指定设备连接至电脑,使用指定的应用软件完成烧录。这种烧录方式在针对产品开发小批量的芯片是较为方便的,但不适用于大批量芯片烧录,原因有以下几点:(1)烧录过程操作比较复杂:需要人工完成插接烧录线、芯片供电、电脑应用软件打开以及烧录程序操作等多个步骤,无法自动化的控制烧录,效率极低;(2)在整机产品中难以实现:通常需要烧录程序的芯片是作为产品设计的一个组件而应用,在结构上是被产品中其他组件包围或者遮挡的,很难有空间将烧录线插至专门的烧录的硬件接口,如果要对整机上安装好的芯片进行程序烧录就必须要完成一定的拆装工作,极大的提高了操作难度;(3)对于已经外销的产品,当需要对软件做重新烧录升级的时候,需要派人员拿着专用的烧录设备到每个产品的所在地进行程序烧录,提高了烧录成本。
发明内容
有鉴于此,本发明实施例提供了一种软件烧录方法和装置,以解决现有技术中对芯片烧录时需额外预留烧录硬件接口,且人工操作多,使得烧录效率低、操作难度大和成本高的问题。
本发明实施例的第一方面提供了一种软件烧录方法,适用于上位机一侧,包括:
向下位机发送文件的第一数据帧,以使得所述下位机根据所述第一数据帧向所述上位机发送第一反馈信息;
根据所述第一反馈信息加载所述文件的第二数据帧,根据所述第二数据帧的帧辨别字节判断所述第二数据帧是否为结束数据帧;
在所述第二数据帧为结束数据帧时,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件;
在所述第二数据帧不为结束数据帧时,向所述下位机发送所述第二数据帧。
可选的,所述在所述第二数据帧不为结束数据帧,向所述下位机发送所述第二数据帧具体为:
根据所述第二数据帧的帧辨别字节判断所述第二数据帧为起始数据帧、初始数据帧或烧录数据帧;
在所述第二数据帧为所述起始数据帧,向所述下位机发送所述起始数据帧;
在所述第二数据帧为所述初始数据帧,向所述下位机发送所述初始数据帧;
在所述第二数据帧为所述烧录数据帧,向所述下位机发送所述烧录数据帧。
可选的,所述向所述下位机发送所述烧录数据帧之后还包括:
对所述烧录数据帧的烧录数据信息进行CRC(Cyclic Redundancy Check,循环冗余校验码)校验计算,生成CRC校验帧;
向所述下位机发送所述CRC校验帧;
所述上位机向所述下位机发送所述文件的数据帧的顺序为:所述起始数据帧、所述初始数据帧、所述烧录数据帧、所述CRC校验帧和所述结束数据帧。
可选的,所述方法还包括:
在超出第一等待预设时间仍未接收所述第一反馈信息,重新向所述下位机发送所述文件的所述第一数据帧。
本发明实施例的第二方面提供了另一种软件烧录方法,适用于下位机一侧,包括:
接收上位机发送的文件的第一数据帧,并根据所述第一数据帧的帧辨别字节判断所述第一数据帧是否是结束数据帧;
在所述第一数据帧是所述结束数据帧时,向上位机发送烧录成功信息;
在所述第一数据帧不是所述结束数据帧时,根据所述第一数据帧的帧辨别字节判断所述第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到第一反馈信息;
将所述第一反馈信息发送给所述上位机,以使得所述上位机继续发送所述文件的数据帧。
可选的,所述下位机接收所述上位机发送所述文件的数据帧的顺序为:所述起始数据帧、所述初始数据帧、所述烧录数据帧、所述CRC校验帧和所述结束数据帧。
可选的,所述根据所述第一数据帧的帧辨别字节判断所述第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到所述第一反馈信息具体为:
在所述第一数据帧为所述起始数据帧时,对所述下位机的存储区域数据进行擦除,并生成第一接收反馈信息;
在所述第一数据帧为所述初始数据帧时,获取所述初始数据帧的烧录目标首地址字节、烧录目标字节长度值和烧录目标求和校验值,并生成第二接收反馈信息;
在所述第一数据帧为所述烧录数据帧时,比较接收的所述烧录数据帧中烧录数据信息的总字节数与所述烧录目标字节长度值,并生成第三接收反馈信息,同时对接收的所述烧录数据帧的烧录数据信息进行CRC校验,得到第一CRC校验值;
在所述第一数据帧为所述CRC校验帧时,判断接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值是否相等,并生成第四接收反馈信息;
所述第一反馈信息包括所述第一接收反馈信息、所述第二接收反馈信息、所述第三接收反馈信息和所述第四接收反馈信息的其中一种信息。
可选的,所述比较接收的所述烧录数据帧中烧录数据信息的总字节数和所述烧录目标字节长度值,并生成所述第三接收反馈信息具体为:
在接收的所述烧录数据帧中烧录数据信息的总字节数小于所述烧录目标字节长度值时,继续接收所述烧录数据帧的烧录数据信息;
在接收的所述烧录数据帧中烧录数据信息的总字节数不小于所述烧录目标字节长度值时,对接收的所述烧录数据帧进行求和校验得到第一求和校验值,生成所述第三接收反馈信息。
可选的,所述判断接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值是否相等,并生成第四接收反馈信息具体为:
在接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值相等时,获取所述第一求和校验值;
在接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值不相等时,并生成第二烧录失败信息。
可选的,所述获取所述第一求和校验值之后还包括:
比较所述第一求和校验值与所述烧录目标求和校验值是否相等;
在所述第一求和校验值与所述烧录目标求和校验值相等时,将接收的所述烧录数据帧烧录到所述存储区域,并生成第一烧录成功信息;
在所述第一求和校验值与所述烧录目标求和校验值不相等时,并生成第一烧录失败信息;
所述第四接收反馈信息包括所述第一烧录成功信息、所述第一烧录失败信息和所述第二烧录失败信息的其中一种信息。
本发明实施例的第三方面提供了一种软件烧录控制装置,包括上位机;所述上位机包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述适于上位机的任一项所述方法的步骤。
本发明实施例的第四方面提供了一种软件烧录控制装置,包括下位机;所述下位机包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述适于下位机的任一项所述方法的步骤。
本发明实施例的第五方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,包括所述计算机程序被处理器执行时实现上述适于上位机的任一项所述方法的步骤,或所述计算机程序被处理器执行时实现实现上述适于下位机的任一项所述方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:上位机通过通信协议向下位机发送文件的第一数据帧,下位机根据第一数据帧判断接收的数据帧是否正确并向上位机发送第一反馈信息;上位机根据第一反馈信息加载文件的第二数据帧,判断第二数据帧是否是文件的结束数据帧;如果是结束数据帧,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件;如果不是结束数据帧,上位机继续向下位机发送文件的数据帧,实现了通过通信协议对芯片自动烧录,不用额外预留烧录硬件接口,同时可以远程控制芯片程序升级,减少人工操作,提高烧录效率,降低烧录成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的上位机的软件烧录方法的实现流程示意图;
图2是图1中步骤S104的实现流程示意图;
图3是图2中步骤S204之后的软件烧录方法的实现流程示意图;
图4是本发明实施例提供的下位机的软件烧录方法的实现流程示意图;
图5是本发明实施例提供的上位机和下位机交互的软件烧录方法的实现流程示意图;
图6是本发明实施例提供的适于上位机的软件烧录装置的结构框图;
图7是本发明实施例提供的适于下位机的软件烧录装置的结构框图;
图8是本发明实施例提供的适于上位机的软件烧录控制装置的示意图;
图9是本发明实施例提供的适于下位机的软件烧录控制装置的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
参见图1提供了一种软件烧录方法的一个实施例实现流程示意图,适于上位机一侧,详述如下:
步骤S101,向下位机发送文件的第一数据帧,以使得所述下位机根据所述第一数据帧向所述上位机发送第一反馈信息。
本实施例的上位机是通过通信协议向下位机发送文件的数据帧,并不是通过芯片烧录专用硬件接口传递数据,例如CAN(Controller Area Network,控制器局域网络)通信总线的通信协议,还可使其他可实现相关功能的通信总线的通信协议,例如,RS232总线的通信协议等,因此不用额外预留烧录硬件接口,减少人工操作,降低烧录成本。
具体的,根据通信协议向下位机发送文件的第一数据帧,下位机存储文件的第一数据帧并向上位机反馈是否成功接收第一数据帧。其中,第一反馈信息是指下位机是否成功接收文件的第一数据帧,以及根据接收的第一数据帧是否完成相应的操作。
可选的,上位机向下位机发送文件可以以数据帧为单位,即将文件分为多个数据帧发送给下位机,起始数据帧为上位机和下位机通信开始的数据帧,初始数据帧、烧录数据帧和CRC校验帧为上位机向下位机发送文件的主要烧录数据,结束数据帧为上位机和下位机此次通信完成的数据帧。
可选的,上位机向下位机发送文件可以以行字符为单位。示例性的,MOTOROLA16(摩托罗拉16进制)烧录文件格式,将文件数据按行进行发送。第一行字符为文件的其中一行字符,当接收到下位机的第一反馈信息之后,加载文件的下一行字符,即第二行字符,根据所述第二行字符的类型辨别字段判断所述第二行字符信息是否为结束行字符。其中,起始行字符以起始数据帧通过通信总线发送至下位机,每行烧录行字符均通过初始数据帧、一个或多个烧录数据帧和CRC校验帧发送,结束行字符以结束数据帧发送。
应理解,本实施例仅是对上位机向下位机发送文件的形式或单位的解释说明,并不是对文件发送信息的单位进行限定。
步骤S102,根据所述第一反馈信息加载所述文件的第二数据帧,根据所述第二数据帧的帧辨别字节判断所述第二数据帧是否为结束数据帧。
其中,文件的每个数据帧都有和每个数据帧相对应的帧辨别字节。帧辨别字节代表帧辨别字节相对应的数据帧类型,当检测到一个数据帧的帧辨别字节,就可以知道这个数据帧的作用是什么,即帧辨别字节为数据帧的类型字节。
判断第二数据帧的帧辨别字节与结束数据帧的帧辨别字节是否相等。
步骤S103,在所述第二数据帧为结束数据帧时,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件。
具体的,第二数据帧的帧辨别字节与结束数据帧的帧辨别字节相等,第二数据帧为结束数据帧,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件,说明上位机和下位机此次通信完成。
步骤S104,在所述第二数据帧不为结束数据帧时,向所述下位机发送所述第二数据帧。
具体的,第二数据帧的帧辨别字节与结束数据帧的帧辨别字节不相等,第二数据帧不是结束数据帧,向所述下位机发送所述第二数据帧。
可选的,本实施例的软件烧录方法还可以包括:根据所述第一反馈信息加载所述文件的第二数据帧,根据所述第二数据帧的帧辨别字节判断所述第二数据帧是否为空数据帧,在所述第二数据帧为空数据帧时,停止向所述下位机发送其他数据帧,在所述第二数据帧不为空数据帧时,向所述下位机发送所述第二数据帧。
进一步地,参见图2,一个实施例中,步骤S106中所述在所述第二数据帧不为结束数据帧,向所述下位机发送所述第二数据帧的实现过程可以包括:
步骤S201,根据所述第二数据帧的帧辨别字节判断所述第二数据帧为起始数据帧、初始数据帧或烧录数据帧。
可选的,文件的数据帧可以包括起始数据帧、初始数据帧、烧录数据帧、CRC校验帧和结束数据帧。上位机向下位机发送文件的数据帧的顺序为:起始数据帧、初始数据帧、烧录数据帧、CRC校验帧和结束数据帧。例如,当下位机成功接收到起始数据帧后向上位机发送第一反馈信息,上位机加载第二数据帧,也就是初始数据帧,将初始数据帧发送给下位机,下位机成功接收到初始数据帧时向上位机反馈信息,上位机加载第三数据帧,也就是烧录数据帧,即只有当下位机成功接收一种数据帧时,并反馈给上位机,上位机才向下位机发送下一个数据帧。
其中,起始数据帧是指上位机开始向下位机发送数据,即上位机和下位机开始通讯的指示信息;初始数据帧是指上位机开始向下位机发送关于烧录目标的信息,例如烧录目标首地址字节、烧录目标字节长度值和烧录目标求和校验值等,即开始向下位机发送烧录目标数据的指示信息;烧录数据帧是指文件的烧录目标数据信息,是上位机向下位机发送的主要数据;CRC校验帧是对烧录数据帧的烧录数据信息进行CRC校验生成的数据帧。
具体的,所述第二数据帧的帧辨别字节是否与所述起始数据帧的帧辨别字节相等,或所述第二数据帧的帧辨别字节是否与所述初始数据帧的帧辨别字节相等,或所述第二数据帧的帧辨别字节是否与所述烧录数据帧的帧辨别字节相等。
步骤S202,在所述第二数据帧为所述起始数据帧,向所述下位机发送所述起始数据帧。
可选的,起始数据帧可以包括帧辨别字节。上位机向所述下位机发送起始数据帧,指示下位机与上位机开始通讯。
步骤S203,在所述第二数据帧为所述初始数据帧,向所述下位机发送所述初始数据帧。
可选的,初始数据帧可以包括帧辨别字节、烧录目标首地址字节、烧录目标字节长度值和烧录目标求和校验值。烧录目标是指烧录数据帧的烧录数据信息。具体的,在第二数据帧为初始数据帧,向下位机发送初始数据帧的帧辨别字节、烧录目标首地址字节、烧录目标字节长度值和烧录目标求和校验值。
步骤S204,在所述第二数据帧为所述烧录数据帧,向所述下位机发送所述烧录数据帧。
可选的,烧录数据帧包括帧辨别字节和烧录数据信息。
示例性的,每个数据帧的前两个字节代表帧辨别字节,起始数据帧的帧辨别字节为S0,初始数据帧的帧辨别字节为S1,烧录数据帧的帧辨别字节为S2,结束数据帧的帧辨别字节为S7,当第二数据帧的帧辨别字节为S0时,则第二数据帧为起始数据帧,当第二数据帧的帧辨别字节为S1时,则第二数据帧为初始数据帧,当第二数据帧的帧辨别字节为S2时,则第二数据帧为烧录数据帧;当第二数据帧的帧辨别字节为S7时,则第二数据帧为结束数据帧。
进一步地,参见图3,一个实施例中,步骤S204中所述在所述第二数据帧为所述烧录数据帧,向所述下位机发送所述烧录数据帧之后还可以包括:
步骤S301,对所述烧录数据帧的烧录数据信息进行循环冗余校验码CRC校验计算,生成CRC校验帧。
步骤S302,向所述下位机发送所述CRC校验帧。
示例性的,基于MOTOROLA16的数据帧格式自动生成数据帧的求和校验值,但是求和校验值本身存在一些缺陷,例如两个数据帧的字节为:
FA 1F 2C 79 00 00 00 00
FA 1F 2C 79 00 00 56AA
两个数据帧求和校验值的结果都是为41,也就是即使在传输过程中两个数据帧的最后两个字节出现错误,那求和校验值也可能是正确的。因此,为了提高数据帧传输的可靠性,本发明实施例中,在对数据帧进行求和校验的基础上又增加了CRC校验,通过双层校验保证数据传输可靠性。
本实施例中,上位机通过通信总线向下位机发送数据帧的过程中增加了求和校验和CRC校验。在上位机向下位机发送数据过程中出现丢失数据帧的情况时,经过求和校验和CRC校验可以检验出接收的数据帧与发送的数据帧不符,以使得下位机向上位机反馈接收失败信息,上位机会重新发送相对应的数据帧,保证了数据传输的可靠性。
示例性的,如表1所示,上位机通过CAN总线向下位机发送数据帧,基于CAN总线通信时,每次传输一帧数据,每个数据帧包含8个字节的数据信息。其中,起始数据帧包括帧辨别字节,当上位机将起始数据帧发送到下位机时,则指示下位机通讯开始;初始数据帧包括帧辨别字节、烧录目标首地址字节、烧录目标求和校验值和烧录目标字节长度值,当上位机将初始数据帧发送到下位机时,则指示下位机将要发送烧录数据帧;烧录数据帧包括帧辨别字节和烧录数据信息,当上位机将烧录数据帧发送到下位机时,以使得下位机将烧录数据帧的烧录数据信息烧录进芯片;CRC校验帧包括帧辨别字节和CRC校验值,用于校验上位机发送的烧录数据帧的烧录数据信息和下位机接收的烧录数据帧的烧录数据信息是否相等。可选的,本发明实施例的上位机和下位机进行通信的烧录文件的格式可以是MOTOROLA16格式,也可以是Intel(因特尔)格式,上位机在向下位机发送烧录文件数据时,根据所述烧录文件的格式将烧录文件数据通过多个数据帧传输给下位机。但本发明不限定为这两种文件格式。
表1:基于CAN总线传输的文件的数据帧格式
进一步地,一个实施例中,所述适于上位机的软件烧录方法还包括:
在超出第一等待预设时间仍未接收所述第一反馈信息,重新向所述下位机发送所述文件的所述第一数据帧。
具体的,设置等待接收所述第一反馈信息的第一等待预设时间。在等待接收所述第一反馈信息的时间大于所述第一等待预设时间,即未接收所述第一反馈信息,重新向所述下位机发送第一数据帧。在等待接收所述第一反馈信息的时间小于或等于所述第一等待预设时间,继续等待接收下位机的第一反馈信息。
实际应用中,上位机根据通信协议与下位机通信时,会出现在通信过程中丢失数据帧的可能性,本发明实施例中加入等待超时重发方法,上位机等待超时重新发送对应数据帧,直至上位机反馈接收数据帧成功的信息,保证了数据传输的可靠性。
上述实施例的软件烧录方法,根据通信协议向下位机发送文件的第一数据帧,以使得下位机根据所述第一数据帧向上位机发送第一反馈信息;根据第一反馈信息加载文件的第二数据帧,根据第二数据帧的帧辨别字节判断第二数据帧是否为结束数据帧;在第二数据帧为结束数据帧时,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件;在第二数据帧不为结束数据帧时,继续向下位机发送文件的数据帧,实现了对芯片自动烧录,同时可以远程控制芯片程序升级,减少人工操作,提高烧录效率,降低烧录成本。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例二
参见图4提供了另一种软件烧录方法的一个实施例实现流程示意图,适于下位机一侧,详述如下:
步骤S401,接收上位机发送的文件的第一数据帧,并根据所述第一数据帧的帧辨别字节判断所述第一数据帧是否是结束数据帧。
步骤S402,在所述第一数据帧是结束数据帧时,向上位机发送烧录成功信息。
具体的,在所述文件的数据帧全部发送完毕时,则下位机向上位机发送烧录成功信息,说明上位机和下位机此次通讯完成。
可选的,当下位机在预设时间内没有收到上位机发送的数据帧,停止接收上位机发送的数据帧。当下位机在预设时间内没有收到上位机发送的数据帧说明此次烧录过程,所述文件需要烧录的烧录数据信息烧录完成。
步骤S403,在所述第一数据帧不是所述结束数据帧时,根据所述第一数据帧的帧辨别字节判断所述第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到第一反馈信息。
示例性的,每个数据帧的前两个字节代表帧辨别字节,起始数据帧的帧辨别字节为S0,初始数据帧的帧辨别字节为S1,烧录数据帧的帧辨别字节为S2,CRC检验帧的帧辨别字节为S3,当第一数据帧的帧辨别字节为S0时,则第一数据帧为起始数据帧,当第一数据帧的帧辨别字节为S1时,则第一数据帧为初始数据帧,当第一数据帧的帧辨别字节为S2时,则第一数据帧为烧录数据帧;当第一数据帧的帧辨别字节为S3时,则第一数据帧为CRC校验帧。
可选的,所述第一反馈信息包括所述第一接收反馈信息、所述第二接收反馈信息、所述第三接收反馈信息和所述第四接收反馈信息的其中一种信息。
可选的,下位机接收上位机发送文件的数据帧的顺序为:起始数据帧、初始数据帧、烧录数据帧、CRC校验帧和结束数据帧。例如,上位机向下位机发送起始数据帧,下位机成功接收起始数据帧后向上位机发送反馈信息,上位机再向下位初始数据帧,当下位机成功接收初始数据帧后向上位机反馈接收成功信息,上位机在向下位机发送烧录数据帧,即只有当下位机成功接收数据帧并向上位机发送反馈信息后,上位机接收到反馈信息向下位机发送下一个数据帧,下位机才能接收下一个数据帧。
进一步地,一个实施例中,所述根据所述第一数据帧的帧辨别字节判断所述第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到所述第一反馈信息具体为:
在所述第一数据帧为起始数据帧时,对所述下位机的存储区域数据进行擦除,并生成第一接收反馈信息。
具体的,当第一数据帧的帧辨别字节与起始数据帧的帧辨别字节相等时,对存储文件的烧录数据帧的存储区域进行擦除,即清除存储区域的原始数据。示例性的,当烧录数据帧的数据信息实现功能与当前存储在存储区域的数据实现的功能不同时,当下位机收到起始数据帧时,对存储区域进行擦除,用以存储文件的烧录数据帧。
可选的,在所述第一数据帧为所述初始数据帧时,获取所述初始数据帧的烧录目标首地址字节、烧录目标字节长度值和烧录目标求和校验值,并生成第二接收反馈信息。
可选的,在所述第一数据帧为所述烧录数据帧时,比较接收的所述烧录数据帧中烧录数据信息的总字节数与所述烧录目标字节长度值,并生成第三接收反馈信息,同时对接收的所述烧录数据帧的烧录数据信息进行CRC校验,得到第一CRC校验值。
进一步地,一个实施例中,所述比较接收的所述烧录数据帧中烧录数据信息的总字节数与所述烧录目标字节长度值,并生成所述第三接收反馈信息具体为:
在接收的所述烧录数据帧中烧录数据信息的总字节数小于所述烧录目标字节长度值时,继续接收所述烧录数据帧的烧录数据信息。
具体的,在所述第一数据帧为所述烧录数据帧时,若接收的烧录数据帧中烧录数据信息的总字节数小于初始数据帧中的烧录目标字节长度值,则说明下位机接收烧录数据帧还未接受完,继续接收所述烧录数据帧的烧录数据信息。
在接收的所述烧录数据帧中烧录数据信息的总字节数不小于所述烧录目标字节长度值时,对接收的所述烧录数据帧进行求和校验得到第一求和校验值,生成所述第三接收反馈信息。
具体的,若接收的烧录数据帧中烧录数据信息的总字节数不小于初始数据帧中的烧录目标字节长度值,则说明下位机接收烧录数据帧接收完,对接收的所述烧录数据帧进行求和校验得到第一求和校验值,生成第三接收反馈信息,第三接收反馈信息作为第一反馈信息发送给上位机。
可选的,在所述第一数据帧为所述CRC校验帧时,判断接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值是否相等,并生成第四接收反馈信息。
进一步地,一个实施例中,所述判断接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值是否相等,并生成第四接收反馈信息具体为:
在接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值相等时,获取第一求和校验值。
比较所述第一求和校验值与所述烧录目标求和校验值是否相等。
可选的,在所述第一求和校验值与所述烧录目标求和校验值相等时,将接收的所述烧录数据帧烧录到所述存储区域,并生成第一烧录成功信息。
具体的,所述第一求和校验值与所述烧录目标求和校验值相等时,说明所述烧录数据信息接收正确,将烧录数据帧的烧录数据信息烧录到存储区域,生成第一烧录成功信息并发送给上位机。
可选的,在所述第一求和校验值与所述烧录目标求和校验值不相等时,并生成第一烧录失败信息。
具体的,在所述第一求和校验字节与所述烧录目标求和校验值不相等,则说明发送文件的烧录数据帧失败,生成第一烧录失败信息。第一烧录失败信息作为第一反馈信息发送给上位机,上位机重新对下位机发送文件的烧录数据帧。
可选的,在接收的所述CRC校验帧中的CRC校验值与所述第一CRC校验值不相等时,并生成第二烧录失败信息。
具体的,在下位机接收的CRC校验帧中的CRC校验值与下位机中的CRC校验帧的CRC校验值不相等时,则说明发送的文件的烧录数据帧失败,生成第二烧录失败信息。第二烧录失败信息作为第一反馈信息发送给上位机,上位机重新对下位机发送文件的烧录数据帧。
可选的,所述第四接收反馈信息包括所述第一烧录成功信息、所述第一烧录失败信息和所述第二烧录失败信息的其中一种信息。
步骤S404,将所述第一反馈信息发送给所述上位机,以使得所述上位机继续发送所述文件的数据帧。
可选的,当下位机未能成功接收到上位机发送的第一数据帧,向上位机发送第一反馈信息,以使得上位机重新发送第一数据帧。
示例性的,当下位机未能成功接收到上位机发送的烧录数据帧,向上位机发送第一反馈信息,以使得上位机重新发送烧录数据帧,不需要从文件的起始数据帧重新发送。
上述软件烧录方法的实施例中,通过接收上位机发送的文件的第一数据帧,并根据第一数据帧判断文件的数据帧是否全部发送完毕;在文件的数据帧全部发送完毕时,停止向上位机发送反馈信息;在文件的数据帧未发送完毕时,根据第一数据帧的帧辨别字节判断第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到第一反馈信息;将第一反馈信息发送给上位机,以使得上位机继续发送文件的数据帧,实现了不用额外预留烧录硬件接口自动接收烧录程序,同时接收远程控制程序升级,减少人工操作,提高烧录效率,降低烧录成本。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例三
参见图5提供了一种上位机和下位机交互的软件烧录方法的一个实施例实现流程示意图,详述如下:
步骤S501,上位机向下位机发送文件的第一数据帧。
可选的,上位机和下位机通过通信总线连接。通信总线可以是CAN(ControllerArea Network,控制器局域网络)总线,也可以是其他可以实现所述通信总线功能的其他相关总线,例如SPI(Serial Peripheral Interface,串行外设接口)总线、USB(UniversalSerial Bus,通用串行总线)和RS232总线等。
步骤S502,下位机接收上位机发送的第一数据帧,并根据第一数据帧的帧辨别字节判断第一数据帧是否是结束数据帧;在第一数据帧是结束数据帧时,向上位机发送烧录成功信息;在第一数据帧不是结束数据帧时,根据第一数据帧的帧辨别字节判断第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,得到第一反馈信息并发送给上位机。
本实施例中上述的步骤502的具体实现过程在上述实施例二中已有描述,这里不再赘述。
步骤S503,上位机根据第一反馈信息加载文件的第二数据帧,根据第二数据帧的帧辨别字节判断第二数据帧是否为结束数据帧。
可选的,所述文件包括:起始数据帧、初始数据帧、烧录数据帧、CRC校验帧和结束数据帧。
步骤S504,在所述第二数据帧为结束数据帧时,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件;在所述第二数据帧不为结束数据帧时,向所述下位机发送所述第二数据帧。
本实施例中的步骤503和步骤504的具体实现过程在上述实施例一中已有描述,这里不再赘述。
可选的,所述继续向所述下位机发送文件的数据帧的过程如上述实施例一中描述,当第二数据帧为起始数据帧时,起始数据帧作为第二数据帧烧录给下位机,下位机根据第二数据帧生成第二反馈信息发送给上位机,上位机根据第二反馈信息继续加载文件的第三数据帧,重复如上述方法中步骤503至步骤504的过程,直至上位机停止向下位机发送文件的数据帧。
示例性的,当第二数据帧为烧录数据帧时,烧录数据帧作为第二数据帧发送给下位机,下位机根据第二数据帧生成第二反馈信息发送给上位机,上位机根据第二反馈信息继续加载文件的第三数据帧,重复如上述方法中步骤503至步骤504的过程,直至上位机停止向下位机发送文件的数据帧。
可选的,上述软件烧录方法中,只要是上位机向下位机发送文件的数据帧,则下位机则根据上位机向下位机发送的文件的数据帧向上位机发送反馈信息,直到上位机停止向下位机发送文件的数据帧。
上述软件烧录方法的实施例中,上位机通过通信协议向下位机发送文件的第一数据帧,下位机根据第一数据帧判断接收的数据帧是否正确并向上位机发送第一反馈信息;上位机根据第一反馈信息加载文件的第二数据帧,判断第二数据帧是否是文件的结束数据帧;如果是结束数据帧,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件;如果不是结束数据帧,上位机继续向下位机发送文件的数据帧,实现了通过通信总线对芯片自动烧录,不用额外预留烧录硬件接口,同时可以远程控制芯片程序升级,减少人工操作,提高烧录效率,降低烧录成本。
实施例四
对应于上文实施例一所述的软件烧录方法,图6中示出了本发明实施例提供的适于上位机的软件烧录装置。为了便于说明,仅示出了与本实施例相关的部分。
该装置适用于上位机,包括:烧录模块110和第一判断模块120。
烧录模块110用于根据通信协议向下位机发送文件的第一数据帧,以使得所述下位机根据所述第一数据帧向所述上位机发送第一反馈信息。
第一判断模块120用于根据所述第二数据帧的帧辨别字节判断所述第二数据帧是否为结束数据帧,在所述第二数据帧为结束数据帧时,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件。
烧录模块110还用于在所述第二数据帧不为结束数据帧时,向所述下位机发送所述第二数据帧。
上述软件烧录装置,烧录模块110根据通信协议向下位机发送文件的第一数据帧,以使得下位机根据第一数据帧向上位机发送第一反馈信息;第一判断模块120根据第一反馈信息加载文件的第二数据帧,根据第二数据帧的帧辨别字节判断第二数据帧是否为结束数据帧,在第二数据帧为结束数据帧时,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件;烧录模块110在第二数据帧不为结束数据帧时,继续向下位机发送所述文件的数据帧,实现了对芯片自动烧录,同时可以远程控制芯片程序升级,减少人工操作,提高烧录效率,降低烧录成本。
实施例五
对应于上文实施例二所述的软件烧录方法,图7中示出了本发明实施例提供的适于上位机的软件烧录装置。为了便于说明,仅示出了与本实施例相关的部分。
该装置适用于下位机,包括:接收模块210、第二判断模块220和发送模块230。
接收模块210用于接收上位机发送的文件的第一数据帧,并根据所述第一数据帧的帧辨别字节判断所述第一数据帧是否是结束数据帧;在所述第一数据帧是所述结束数据帧时,向上位机发送烧录成功信息。
第二判断模块220用于在所述第一数据帧不是所述结束数据帧时,根据所述第一数据帧的帧辨别字节判断所述第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到第一反馈信息。
发送模块230用于将所述第一反馈信息发送给所述上位机,以使得所述上位机继续发送所述文件的数据帧。
上述软件烧录装置,接收模块210接收上位机发送的文件的第一数据帧,并根据第一数据帧判断文件的数据帧是否全部发送完毕,在文件的数据帧全部发送完毕时,停止向上位机发送反馈信息;第二判断模块220在文件的数据帧未发送完毕时,根据第一数据帧的帧辨别字节判断第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到第一反馈信息;发送模块230将第一反馈信息发送给上位机,实现了不用额外预留烧录硬件接口,自动接收烧录程序,同时接收远程控制程序升级,减少人工操作,提高烧录效率,降低烧录成本。
实施例六
图8是本发明实施例六提供的适于上位机的软件烧录控制装置100的示意图。如图8所示,本实施例的软件烧录控制装置100包括:处理器130、存储器140以及存储在所述存储器140中并可在所述处理器130上运行的计算机程序141,例如软件烧录的控制程序。所述处理器130在执行所述计算机程序141时实现上述各个软件烧录方法实施例中的步骤,例如图1所示的步骤S101至S104。或者,所述处理器130执行所述计算机程序141时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块110至120的功能。
示例性的,所述计算机程序141可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器140中,并由所述处理器130执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序141在所述软件烧录控制装置100中的执行过程。例如,所述计算机程序141可以被分割成烧录模块、和第一判断模块,各模块具体功能如下:
烧录模块用于根据通信协议向下位机发送文件的第一数据帧,以使得所述下位机根据所述第一数据帧向所述上位机发送第一反馈信息。
第一判断模块用于根据所述第二数据帧的帧辨别字节判断所述第二数据帧是否为结束数据帧,在所述第二数据帧为结束数据帧时,向所述下位机发送所述结束数据帧,并停止向所述下位机发送所述文件。
烧录模块还用于在所述第二数据帧不为结束数据帧时,向所述下位机发送所述第二数据帧。
所述软件烧录控制装置100可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述软件烧录控制装置100可包括,但不仅限于,处理器130、存储器140。本领域技术人员可以理解,图8仅仅是软件烧录控制装置100的示例,并不构成对软件烧录控制装置100的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述软件烧录控制装置100还可以包括输入输出设备、网络接入设备、总线等。
所称处理器130可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器140可以是所述软件烧录控制装置100的内部存储单元,例如软件烧录控制装置100的硬盘或内存。所述存储器140也可以是所述软件烧录控制装置100的外部存储设备,例如所述软件烧录控制装置100上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡等。进一步地,所述存储器140还可以既包括所述软件烧录控制装置100的内部存储单元也包括外部存储设备。所述存储器140用于存储所述计算机程序以及所述软件烧录控制装置100所需的其他程序和数据。所述存储器140还可以用于暂时地存储已经输出或者将要输出的数据。
实施例七
图9是本发明实施例七提供的适于下位机的软件烧录控制装置200的示意图。如图9所示,本实施例的软件烧录控制装置200包括:处理器240、存储器250以及存储在所述存储器250中并可在所述处理器240上运行的计算机程序251,例如软件烧录的控制程序。所述处理器240在执行所述计算机程序251时实现上述各个软件烧录方法实施例中的步骤,例如图4所示的步骤S401至S404。或者,所述处理器240执行所述计算机程序251时实现上述各装置实施例中各模块/单元的功能,例如图7所示模块210至230的功能。
示例性的,所述计算机程序251可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器250中,并由所述处理器240执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序251在所述软件烧录控制装置200中的执行过程。例如,所述计算机程序251可以被分割成接收模块、第二判断模块和发送模块,各模块具体功能如下:
接收模块用于接收上位机发送的文件的第一数据帧,并根据所述第一数据帧的帧辨别字节判断所述第一数据帧是否是结束数据帧,在所述第一数据帧是所述结束数据帧时,向上位机发送烧录成功信息。
第二判断模块用于在所述第一数据帧不是所述结束数据帧时,根据所述第一数据帧的帧辨别字节判断所述第一数据帧为起始数据帧、初始数据帧、烧录数据帧或CRC校验帧,并得到第一反馈信息。
发送模块用于将所述第一反馈信息发送给所述上位机,以使得所述上位机继续发送所述文件的数据帧。
所述的处理器240和存储器250与上述实施例六的处理器130和存储器140的结构相同,这里不做进一步的赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包括的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包括在本发明的保护范围之内。