程序代码烧写方法、装置、计算机设备和存储介质与流程

文档序号:14923600发布日期:2018-07-13 08:12

本申请涉及芯片程序代码烧写技术领域,特别是涉及一种程序代码烧写方法、装置、系统、计算机设备和存储介质。



背景技术:

在生产智能化电子产品过程中,需要对产品中所使用的芯片进行程序代码的烧写,在芯片程序烧写过程中一般使用烧写器对大批量芯片进行程序烧写。

在传统的程序代码烧写方法中,烧写器与目标芯片的握手同步基本都是使用最简单的请求-应答方式来实现。在握手同步之后,烧写器可以向目标程序发送待烧写程序代码对应的程序数据帧,并在目标芯片接收程序数据帧完成之后进行校验,若校验成功,则该数据帧对应的程序代码烧写成功。

由此可见,传统的程序代码烧写方法,容易出现芯片烧写失败的问题。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够降低芯片烧写失败率的程序代码烧写方法、装置、系统、计算机设备和存储介质。

一种程序代码烧写方法,所述方法包括:

建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;

在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将所述帧校验码发送至目标芯片;

向所述目标芯片发送帧数据,触发所述目标芯片在接收到帧数据时,根据所述帧校验码对所述帧数据进行校验;

根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将所述待烧写程序代码烧写至所述目标芯片。

在一个实施例中,所述的程序代码烧写方法,根据校验结果调整所述帧数据的数据结构和帧数据的传输速度的步骤,包括:

若数据结构仅由有效数据字段构成的帧数据校验失败,则在所述帧数据的数据结构的有效数据字段前部添加起始数据字段以及在后部添加结束数据字段;

将数据结构调整后的帧数据发送至目标芯片,并接收目标芯片的二次校验结果;

若二次校验失败,则降低信号传输速度,根据调整后的传输速度将数据结构调整后的帧数据发送至目标芯片。

在一个实施例中,所述的程序代码烧写方法,还包括:

若数据结构仅由有效数据字段构成的帧数据校验成功,则判断帧数据是否全部发送完毕;

若未发送完毕,则向所述目标芯片发送下一帧数据。

在一个实施例中,所述的程序代码烧写方法,在获取待烧写程序代码中各个帧数据对应的帧校验码之前,还包括:

将待烧写代码的帧长度、最小存储单元长度、烧写命令、校验命令以及空片检查命令发送至目标芯片。

一种程序代码烧写方法,所述方法包括:

建立与烧写器的低速同步,并向烧写器发送同步应答信号,所述烧写器接收同步应答信号后进行第一延时;

在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;

在接收到烧写器发送的帧数据时,根据所述帧校验码对所述帧数据进行校验,并将校验结果反馈至烧写器,触发所述烧写器根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,并接收所述烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

在一个实施例中,所述的程序代码烧写方法,在向烧写器发送的同步应答信号的步骤后,还包括:

在向烧写器发送同步应答信号后进行第二延时;

在第二延时之后,若接收到所述烧写器发送的再次同步请求信号,则向所述烧写器再次发送所述同步应答信号。

一种程序代码烧写装置,所述装置包括:

减速延时模块,用于建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;

发送模块,用于在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将所述帧校验码发送至目标芯片;

校验模块,用于向所述目标芯片发送帧数据,触发所述目标芯片在接收到帧数据时,根据所述帧校验码对所述帧数据进行校验;

烧写模块,用于根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将所述待烧写程序代码烧写至所述目标芯片。

一种程序代码烧写系统,包括:

烧写器和目标芯片;

所述烧写器用于执行以下步骤:

建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;

在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将所述帧校验码发送至目标芯片;

向所述目标芯片发送帧数据,触发所述目标芯片在接收到帧数据时,根据所述帧校验码对所述帧数据进行校验;

根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将所述待烧写程序代码烧写至所述目标芯片;

所述目标芯片用于执行以下步骤:

建立与烧写器的低速同步,并向烧写器发送同步应答信号,所述烧写器接收同步应答信号后进行第一延时;

在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;

在接收到烧写器发送的帧数据时,根据所述帧校验码对所述帧数据进行校验,并将校验结果反馈至烧写器,触发所述烧写器根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,并接收所述烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;

在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将所述帧校验码发送至目标芯片;

向所述目标芯片发送帧数据,触发所述目标芯片在接收到帧数据时,根据所述帧校验码对所述帧数据进行校验;

根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将所述待烧写程序代码烧写至所述目标芯片;

或所述处理器执行所述计算机程序时实现以下步骤:

建立与烧写器的低速同步,并向烧写器发送同步应答信号,所述烧写器接收同步应答信号后进行第一延时;

在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;

在接收到烧写器发送的帧数据时,根据所述帧校验码对所述帧数据进行校验,并将校验结果反馈至烧写器,触发所述烧写器根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,并接收所述烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;

在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将所述帧校验码发送至目标芯片;

向所述目标芯片发送帧数据,触发所述目标芯片在接收到帧数据时,根据所述帧校验码对所述帧数据进行校验;

根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将所述待烧写程序代码烧写至所述目标芯片;

或所述计算机程序被处理器执行时实现以下步骤:

建立与烧写器的低速同步,并向烧写器发送同步应答信号,所述烧写器接收同步应答信号后进行第一延时;

在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;

在接收到烧写器发送的帧数据时,根据所述帧校验码对所述帧数据进行校验,并将校验结果反馈至烧写器,触发所述烧写器根据校验结果调整所述帧数据的数据结构和帧数据的传输速度,并接收所述烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

上述程序代码烧写方法、装置、计算机设备和存储介质,通过在烧写器和目标芯片之间建立低速同步,烧写器在接收到目标芯片发送的同步应答信号后进行第一延时,烧写器提前发送所有校验码,目标芯片进行分帧多次校验,数据接收与校验过程同时进行,并动态调整帧数据结构、适时降低通信速度,可以降低程序代码烧写的失败率,提高烧写过程的稳定性,同时提高程序代码烧写的效率。

附图说明

图1为一个实施例中程序代码烧写方法的应用环境图;

图2为一个实施例中程序代码烧写方法的流程示意图;

图3为一个实施例中烧写器和目标芯片在程序代码烧写过程中的工作流程示意图;

图4为另一个实施例中程序代码烧写方法的流程示意图;

图5为一个实施例中程序代码烧写过程中的程序同步方法示意图;

图6为一个实施例中程序代码烧写方法中帧数据收发流程示意图;

图7为一个实施例中程序代码烧写装置的结构框图;

图8为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的程序代码烧写方法,可以应用于如图1所示的应用环境中。其中,自动放片机器设备101与烧写器(控制电路)102可以通过串口进行通信。烧写器可以有三块Flash(Flash Memory,闪存),Flash是一种非易失内存。其中,Flash1可用于存放系统程序代码,该程序代码主要为烧写器烧写至目标芯片的程序代码;Flash2可用于存放目标芯片初期程序,该程序是由烧写器推送至目标芯片数据存储器中的程序,它主要完成对自身内部时钟的校准、密钥的写入、与烧写器一起将系统程序代码烧写至目标芯片程序存储器中;Flash3可用于存放烧写器运行程序。烧写器中可以包含有四个开关,分别为烧写、校验、擦除、空片检查等功能,开关闭合,系统将会完成选择的功能,烧写器烧写的最终结果通过指示灯进行指示。自动放片机器设备上有芯片放置基座,基座上可以放置目标芯片,目标芯片在未烧写之前一般都为空片,目标芯片内部有数据存储器和程序存储器。自动放片机器设备同时还包括放置芯片的一些机械动作模块。

在一个实施例中,如图2所示,提供了一种程序代码烧写方法,以该方法应用于图1中的烧写器为例进行说明,包括以下步骤:

步骤S201,建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时。

具体地,在烧写器与目标芯片之间的同步过程中,通常都只有同步请求和同步应答信号的收发,这些信号只有一个字节左右,对收发同步请求信号和同步应答信号可以采用适当低速形式进行。采用适当低速形式进行请求应答,基本不会对整个烧写时间造成影响,因为相对于系统程序代码的几兆或者几十兆字节而言,几个请求应答字节几乎是微不足道的。低速发送接收请求应答信号,能很好地避开系统偶然稳定性问题而导致程序烧写失败的情形,而且同步过程本身也是非常关键的步骤,所以适当低速握手同步能很好提高系统的稳定性。

步骤S202,在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将帧校验码发送至目标芯片。

步骤S203,向目标芯片发送帧数据,触发目标芯片在接收到帧数据时,根据帧校验码对帧数据进行校验。

对于步骤S202和步骤S203,可以先计算出整个待烧写程序代码中各个帧数据对应的帧校验码,将整个程序代码计算出的多个帧校验码提前发送至目标芯片。在帧校验码发送完成之后,可以将待烧写程序分帧多次发送至目标芯片,使目标芯片在接收到帧数据时,进行分帧多次校验。实现边接收帧数据,边对帧数据进行校验,接收与校验实时同步进行,而不需要等帧接收完成之后才进行校验。由于帧校验码的检纠错能力与帧数据的长度相关,若帧数据长度超过帧校验码检纠错能力范围,校验出错的概率就会增加,校验出错会导致烧写失败。提前发送所有校验码并采用分帧多次校验可以使烧写器在校验码不能纠正错误的情况下可提前结束烧写,既能降低校验出错率,又能发挥校验码的纠错能力。

同时采用分帧多次校验相对于只对整个程序数据进行一次校验,时间上并不会加长,因为计算的数据总量是相等的。数据接收与校验过程同时进行,可以让处理器的利用率得到极大发挥,提高了程序代码烧写器的稳定性和效率。

步骤S204,根据校验结果调整帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将待烧写程序代码烧写至目标芯片。

上述步骤中,若校验成功,则本帧数据的收发成功,烧写器可以接着取下一帧数据发送给目标芯片,若本帧数据的收发失败,可以先调整本帧数据的数据结构再发送给目标芯片,若本帧数据的收发再次失败,则可以降低通信速度将数据结构调整后的本帧数据再次发送给目标芯片。

上述实施例,通过在烧写器和目标芯片之间建立低速同步,烧写器在接收到目标芯片发送的同步应答信号后进行第一延时,烧写器提前发送所有校验码,目标芯片进行分帧多次校验,数据接收与校验过程同时进行,并动态调整帧数据结构、适时降低通信速度,可以降低程序代码烧写的失败率,提高烧写过程的稳定性,同时提高程序代码烧写的效率。

在一个实施例中,步骤S203可以包括:

若数据结构仅由有效数据字段构成的帧数据校验失败,则在帧数据的数据结构的有效数据字段前部添加起始数据字段以及在后部添加结束数据字段;将数据结构调整后的帧数据发送至目标芯片,并接收目标芯片的二次校验结果;若二次校验失败,则降低信号传输速度,根据调整后的传输速度将数据结构调整后的帧数据发送至目标芯片。

在上述实施例中,第一次烧写器发送给目标芯片的帧数据的数据结构组成可以为:全部为有效数据字段。若第一次发送数据失败,第二次发送过程即可改变帧数据的数据结构,可以改为:起始数据段、有效数据字段、结束数据段,采用该种帧数据结构进行发送或接收。加入起始和结束字段,在串行通信过程中,对几个串行通信信号引脚进行分时复用,在烧写器上的多路目标芯片烧写也是采用了分时形式方式,输入输出信号引脚不断进行变换使用,对烧写器过程造成干扰。

目标芯片校准内部时钟并使用内部时钟驱动芯片,因此时钟偏差也不完全一致,由于温度、电子噪声以及程序设计上的漏洞等因素的影响,使得芯片内部时钟还会出现细微抖动。机器不断的夹片、放片、压片、启动烧写,这里存在一系列的机械动作,目标芯片与基座也极易发生接触不稳,其次每次不同的接触阻抗,在上述各种条件的影响之下,程序开发调试和工程应用中发现,串行通信收发的数据中,常出现起始数据字段和结束数据字段错误,而中间数据正确的情形。因此,改变帧数据的数据结构,在程序收发的数据帧中加入起始字段和结束字段,可以改善烧写器的稳定性。第二次数据发送失败之后,采用适当降低通信速度,帧中同样加入起始字段和结束字段。在双机或多机通信过程中,适当降低数据通信的速度对于时钟抖动或偏差、电路电磁干扰等一系列原因带来的数据收发错误具有重要改善作用,因此对个别帧数据收发出错后,采取适当降低速度的方式来进行收发数据能有效提高烧写器的烧写成功率。

上述实施例,在帧数据校验失败时,通过在帧数据的数据结构的有效数据字段前部添加起始数据字段以及在后部添加结束数据字段来提高烧写器的稳定性,在二次校验失败时,通过降低信号传输速度将数据结构调整后的帧数据发送至目标芯片来提高烧写器的烧写成功率。

进一步地,在一个实施例中,步骤S203还可以包括:

若数据结构仅由有效数据字段构成的帧数据校验成功,则判断帧数据是否全部发送完毕;若未发送完毕,则向目标芯片发送下一帧数据。

在上述实施例中,若帧数据校验成功即帧数据收发成功,则可以判断帧数据是否全部收发完毕,还未收发完成则可以取下一帧数据。进行分帧多次校验,边接收帧数据,边对帧数据进行校验。

上述实施例,提前发送所有校验码,通过接收与校验实时同步进行,采用分帧多次校验可以使烧写器在校验码不能纠正错误的情况下可提前结束烧写,既能降低校验出错率,也能发挥校验码的纠错能力。

如图3所示,在一个实施例中,在步骤S202中的获取待烧写程序代码中各个帧数据对应的帧校验码之前,还可以包括骤S302:将待烧写代码的帧长度、最小存储单元长度、烧写命令、校验命令以及空片检查命令发送至目标芯片。

在上述实施例中,帧长度、最小存储单元长度、烧写命令、校验命令以及空片检查命令等都是烧写器与目标芯片同步过程中,烧写器需要发送给目标芯片的关键信息,关键信息还可以包括系统程序代码的长度、存储器标识、密钥等。图3示出了烧写器和目标芯片在程序代码烧写过程中的工作流程,烧写器与目标芯片均处于运行状态,目标芯片需要完成多个内部前期初始化操作,且需要完成多次数据信息的交互过程,因此存在多处同步过程。图3中,烧写器执行S301至S305的步骤,目标芯片执行S306至S309的步骤。

对于步骤S301,烧写器启动目标芯片,可以先复位目标芯片,然后向目标芯片推送目标芯片初期程序代码,在对目标芯片进行程序的烧写时,烧写器和目标芯片都将运行,因此目标芯片也需要可运行的控制程序代码,这些程序由烧写器在开始烧写之前推送至目标芯片,该程序存储在目标芯片的数据存储器中,掉电后自动丢失,因为该程序只是在烧写程序代码阶段需要使用。

对于步骤S302,需要烧写器与目标芯片同步之后才能完成,发送程序长度主要是让目标芯片了解后续烧写器将会发送过来多长的数据。其中,烧写、校验、空片检查这些命令主要是烧写器命令目标芯片需要对接收到的程序执行的操作。

对于步骤S303,可以预先发送系统程序所有帧的校验码,帧校验码的个数与系统程序代码的长度以及每帧数据长度相关。

对于步骤S304,同步成功之后开始发送系统程序数据代码,该程序数据内容将烧写至目标芯片的程序存储器中,是目标芯片做成实际产品后所运行的程序代码。

对于步骤S305,若帧数据没发送完成则可以取下一帧数据继续发送给目标芯片。

对于步骤S306,目标芯片接收烧写器发送过来的帧长度、最小存储内存长度,还有烧写、校验、空片检查等相关命令,接收完成之后,目标可以将自身存储设备ID号等信息给烧写器。

对于步骤S307,目标芯片接收系统程序代码各帧校验码,然后对目标芯片内部存储器总线进行初始化、擦除内部程序存储器。

对于步骤S308,目标芯片接收烧写器通过串口发送过来的系统程序帧数据,边接收边校验。

对于步骤S309,若帧数据还没接收完成,则可以向烧写器发送帧请求触发烧写器向目标芯片发送下一帧数据。

上述实施例,通过在烧写器和目标芯片之间建立低速同步,烧写器在接收到目标芯片发送的同步应答信号后进行第一延时,烧写器提前发送所有校验码,目标芯片进行分帧多次校验,数据接收与校验过程同时进行,并动态调整帧数据结构、适时降低通信速度,可以降低程序代码烧写的失败率,提高烧写过程的稳定性,同时提高程序代码烧写的效率。

如图4所示,在一个实施例中,目标芯片可以执行以下程序代码烧写方法,方法包括:

S401,建立与烧写器的低速同步,并向烧写器发送同步应答信号,烧写器接收同步应答信号后进行第一延时;

上述步骤中,目标芯片在收到烧写器的同步请求信号后,回复同步应答,烧写器接收同步应答信号后进行第一延时。烧写器进行第一延时的主要作用是为避免主机发送请求并收到应答后,从机还在进行预判延时部分时,主机又开始了第二次同步请求过程,此时从机误判为第一次的同步请求,并认为主机未收到应答信号,而再次发送应答,从而导致同步出现错误。

如图5中的虚线框502所示,在一个实施例中,烧写器和目标芯片在运行各自的功能代码的过程中进行多次同步,在步骤S401中的向烧写器发送的同步应答信号的步骤后,目标芯片还可以通过以下步骤进行预判延时:

在向烧写器发送同步应答信号后进行第二延时;在第二延时之后,若接收到烧写器发送的再次同步请求信号,则向烧写器再次发送同步应答信号。

上述实施例中,目标芯片在收到烧写器的请求信号后回复应答,利用烧写器在未收到应答信号会不断重复发送请求的特点,通过一定的延时,再接收是否继续存在请求信号的方式来判断烧写器是否收到应答,如果预判延时时间到达,仍然未收到请求,则表示烧写器已经收到应答,无需再发送应答信号。预判延时delay计算公式为:

式中,T_time=8*k/发送波特率,为发送请求或应答信号时间;R_time=8*k/接收波特率,为接收请求或者应答信号时间;k为一次有效请求或应答信号字节个数,一般k=1,即单字节有效请求应答形式。Other_time为烧写器执行同步过程中,在其它判断等指令代码所花费的时间,delay_Step对应图5中的501,为烧写器实现同步后执行的延时。在预判延时delay计算公式中,delay_Step需满足的条件:

delay_Step>n*(T_time+R_time)+Other_time

为了保证目标芯片接收的请求为本次同步过程所申请;条件n>1是预判延时的最小等待时间,系统根据同步状况进行动态调整,因为若在预判延时过后还未收到烧写器请求信号,则表示烧写器已经收到了应答。同时也可能出现烧写器并未收到应答,仍然在继续请求过程,但因为干扰等原因,目标芯片在短暂预判延时过程中并没有收到正确的请求信号。因此n的取值决定预判等待的时间,n值越大,同步的可靠性将越高,但程序的效率将会降低。因此系统通过统计同步成功情况,动态调整预判延时参数n的大小,自动匹配得到系统最佳的预判等待时间。

上述实施例,通过烧写器与目标芯片多次同步过程采用适当低速形式进行请求应答,并配合使用预判延时来实现同步过程,可以提高同步过程的准确性。

S402,在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;

S403,在接收到烧写器发送的帧数据时,根据帧校验码对帧数据进行校验,并将校验结果反馈至烧写器,触发烧写器根据校验结果调整帧数据的数据结构和帧数据的传输速度,并接收烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

对于步骤S402和步骤S403,在烧写器中,帧校验码可以是16位校验码,目标芯片的数据接收与校验能同步进行,主要是数据接收为DMA(Direct Memory Access,直接存贮访问)方式,接收过程不占用CPU(Central Processing Unit,中央处理器)时间,因此能实现边接收边校验。烧写器中通常使用的校验方法为CRC(Cyclic Redundancy Check,循环冗余校验)。CRC是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。主要是利用了除法及余数的原理来进行错误侦测。CRC校验码有8位、16位等形式,生成的多项式如(2)和(3)式所示;

CRC8=X8+X5+X4+X0(2)

CRC16=X16+X15+X2+X0(3)

CRC生成多项式的幂次越高,其检错能力越强。若生成多项式最高幂次为R,则该CRC校验码的检纠错类型有以下4种:a,可检测出所有奇数个错误;b,可检测出所有单个突发错误;c,可检测出所有两个错误;d,可检测出所有长度小于等于R比特的突发错误。因此CRC校验检错能力也并非百分之百,本发明实施例中的分帧校验方法可以提高校验过程的纠错能力。

上述实施例,通过在烧写器和目标芯片之间建立低速同步,烧写器在接收到目标芯片发送的同步应答信号后进行第一延时,烧写器提前发送所有校验码,目标芯片进行分帧多次校验,数据接收与校验过程同时进行,并动态调整帧数据结构、适时降低通信速度,可以降低程序代码烧写的失败率,提高烧写过程的稳定性,同时提高程序代码烧写的效率。

下面结合图6,阐述本发明一个实施例中的程序代码烧写方法:

对于步骤S601,烧写器与目标芯片多次同步过程采用适当低速形式进行请求应答,并配合使用图5所示的同步方法来实现同步过程。

烧写器在对目标芯片进行程序代码烧写时,目标芯片也处于运行状态,这是芯片批量烧写常使用的一种程序烧写方法,具有烧写速度快、可完成功能多等特点,相对ISP((Internet Service Provider,在线编程)方式,烧写器和目标芯片同时处于运行状态的方式烧写速度更快,可进行的操作更多。

本发明实施例中的烧写器中可以包含三个程序代码,第一个是系统程序代码,该程序代码是目标芯片在做成产品后所运行的代码,也是待烧写至目标芯片程序存储器中的代码;第二个是烧写器运行程序,该程序用于控制烧写器完成烧写系统程序代码至目标芯片中;第三个是目标芯片初期程序,该程序由烧写器工作起始阶段时,通过串行总线推送至目标芯片数据存储器中的,掉电后自动丢失,主要用于目标芯片校准内部时钟、写入密钥等关键参数,还能与烧写器共同将系统程序代码烧写至自身程序存储器中。

因为烧写器与目标芯片均处于运行状态,目标芯片需要完成多个内部前期初始化操作,且需要完成多次数据信息的交互过程,因此存在多处同步过程。

烧写器与目标芯片进行程序烧写通信时,其通信连接的信号引脚基本都是采用分时复用串行通信方式。使用串行分时复用进行通信,能够减少芯片引脚的使用数量,烧写器控制芯片引脚资源也有限,且一般烧写器都还包含有多路烧写通道。目标芯片在不断由机器吸片,然后压紧至芯片基座上时,使用过多的引脚很容易出现部分引脚接触不良的问题,从而造成烧写器烧写失败等情况的发生。

采用分时复用串行通信方式,程序数据的烧写和握手通信通常都是使用同一数据口线、同一个芯片内部串行通信模块,因此现在大多数烧写器的同步过程和程序数据烧写过程均采用同一速率进行。

同步一般都是使用请求应答的形式来实现,在烧写器与目标芯片进行同步过程中,烧写器和目标芯片通常都存在许多前期初始化操作,因此,存在输入输出口线使用的变换、引脚信号电平的抖动、时钟的变化、目标芯片与基座接触等一系列原因,极有可能造成同步过程应答接收不到或出错的问题,从而导致同步失败。同步过程中,通常都有许多关键的信息进行传递,比如:帧长度、系统程序代码的长度、存储器标识、密钥等,同步一旦出错,这些过程都将出错,最终导致烧写失败。同步过程,通常都只有请求和应答信号的收发,这些信号只有短短的一个字节左右,对收发请求应答信号使用低速传输,基本不会对整个烧写时间造成影响,因为相对于系统程序代码的几兆或者几十兆字节而言,几个请求应答字节几乎是微不足道的,此处的低速请求应答,对单个芯片而言,存在细微的时间延长,但是它换来了整体芯片烧写的成功率,最终整体芯片的烧写时间得到缩短、效率得到了提高,因此低速处理是完全合理且意义重大的。

低速发送接收请求应答信号,能很好的避开系统偶然稳定性问题发生而导致程序烧写失败的情形,而且同步过程本身也是非常关键的步骤,所以适当低速握手同步能有效提高烧写过程的稳定性。同步过程使用带动态延时预判方法,能够使程序很好适应当前条件状况,可避免因干扰导致有效应答错误接收或未接收到而引起同步失败的问题,可进一步提升烧写器程序代码烧写的可靠性。

对于步骤S602,可以提前计算并发送所有帧校验码;在目前很多串行帧数据通信中,通常都会在每帧数据中加入帧校验码,比如:RS485通信方式应用于远程智能抄表系统、石油勘探多点数据采集都是典型的串行数据通信方式,它们大都有采用标准的数据帧结构,这个帧数据中就包含有校验码,不过帧校验码都是随帧一起发送的。这些领域将校验码随帧一起发送,而不是提前发送,主要是其系统采集回的数据是不确定的,只能采集一帧数据然后计算校验码,再添加至帧数据位置。对于待烧写的系统程序数据,其开发完成之后编译链接生成的二进制数据是固定不变的。因系统程序代码二进制文件是确定的,在烧写之前,就可以对程序数据按帧数据长度对应计算一个校验码,一般程序都会分为许多个数据帧进行发送,因此就包含有多个校验码。

现有大多数开发的烧写器也有对整个程序代码进行分帧处理,但是其对整个程序数据只计算了一个校验码,目标芯片接收全部程序数据之后,再对其进行一次校验。也有少数对每帧数据都加入了帧校验码,对其进行多次校验,但是基本都是按照通常串行通信的形式,随帧发送,待帧接收完成之后,接收方对接收的数据再进行校验。在本发明实施例中,不按照通常的方法将帧校验码随帧一起发送,而是将整个程序代码计算出的多个帧校验码提前发送至目标芯片,这样做的作用主要是可以实现边接收帧数据,边对数据进行校验,接收与校验实时同步进行,而不需要等帧接收完成之后才进行校验,能够提高程序代码烧写效率。其次,进行分帧多次校验,也能提高帧校验码的检纠错能力。

对于步骤S603,可以将帧数据的收发与校验同步进行。当前帧数据收发,对于烧写器而言为发送帧数据,对于目标芯片为接收帧数据,当前帧数据收发完成,接着取下一帧,或者收发完成结束,或者收发出错结束。

对于步骤S604,第一次帧数据收发的数据结构组成为:全部为有效数据字段。如果帧数据收发成功,则判断帧数据是否全部收发完毕,还未收发完成则取下一帧数据;如果数据收发失败,也即发生了错误,则改变帧数据帧的数据结构。

对于步骤S605,第一次发送数据失败,第二次发送过程即改变帧数据的数据结构,数据结构变为:起始数据段、有效数据字段、结束数据段,采用该种帧数据的数据结构进行发送或接收。如果成功,则收发下一帧。如果失败,则执行步骤S606。加入起始和结束字段,是因为在串行通信中,可以对几个串行通信信号引脚进行分时复用,烧写器上的多路目标芯片烧写也是采用了分时形式方式,输入输出信号引脚的不断变换使用,目标芯片校准内部时钟并使用内部时钟驱动芯片,因此时钟偏差也不完全一致。由于温度、电子噪声的影响以及程序设计上难免存在的漏洞,使得芯片内部时钟还会出现细微抖动。另外,由于机器不断地夹片、放片、压片、启动烧写等一系列机械动作,目标芯片与基座之间极易发生接触不稳,而且每次不同的接触阻抗在上述各种干扰条件下会使起始数据字段和结束数据字段出现错误。因此,改变帧数据结构,在程序收发的数据帧中加入起始字段和结束字段,对于改善烧写器稳定性具有一定作用和价值。

对于步骤S606,在第二次数据发送失败之后,可以适当降低通信速度,帧数据中同样加入起始字段和结束字段。如果收发成功,则取下一帧或完成整个程序收发结束。如果收发失败,则直接结束整个烧写过程。在双机或多机通信过程中,适当降低数据通信的速度对于时钟抖动或偏差、电路电磁干扰等一系列原因带来的数据收发错误具有重要改善作用,因此对个别帧数据收发出错后,采取适当降低速度的方式来进行收发数据是完全有必要的,能够很好地提高烧写器的烧写成功率。

对于步骤S607,若所有帧数据未收发完毕,则烧写器可以取下一帧数据继续发送给目标芯片,若所有帧数据收发完毕,则可以结束烧写过程。

上述实施例,通过在烧写器和目标芯片之间建立低速同步,烧写器在接收到目标芯片发送的同步应答信号后进行第一延时,烧写器提前发送所有校验码,目标芯片进行分帧多次校验,数据接收与校验过程同时进行,并动态调整帧数据结构、适时降低通信速度,可以降低程序代码烧写的失败率,提高烧写过程的稳定性,同时提高程序代码烧写的效率。

应该理解的是,虽然图2至6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

如图7所示,本发明实施例还提供一种程序代码烧写装置,包括:

减速延时模块701,用于建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时。

具体地,在烧写器与目标芯片之间的同步过程中,通常都只有同步请求和同步应答信号的收发,这些信号只有一个字节左右,对收发同步请求信号和同步应答信号可以采用适当低速形式进行。

采用适当低速形式进行请求应答,基本不会对整个烧写时间造成影响,因为相对于系统程序代码的几兆或者几十兆字节而言,几个请求应答字节几乎是微不足道的。低速发送接收请求应答信号,能很好地避开系统偶然稳定性问题而导致程序烧写失败的情形,而且同步过程本身也是非常关键的步骤,所以适当低速握手同步能很好提高系统的稳定性。

发送模块702,用于在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将帧校验码发送至目标芯片。

校验模块703,用于向目标芯片发送帧数据,触发目标芯片在接收到帧数据时,根据帧校验码对帧数据进行校验。

对于发送模块702和校验模块703,可以先计算出整个待烧写程序代码中各个帧数据对应的帧校验码,将整个程序代码计算出的多个帧校验码提前发送至目标芯片。在帧校验码发送完成之后,可以将待烧写程序分帧多次发送至目标芯片,使目标芯片在接收到帧数据时,进行分帧多次校验。实现边接收帧数据,边对帧数据进行校验,接收与校验实时同步进行,而不需要等帧接收完成之后才进行校验。由于帧校验码的检纠错能力与帧数据的长度相关,若帧数据长度超过帧校验码检纠错能力范围,校验出错的概率就会增加,校验出错会导致烧写失败。提前发送所有校验码并采用分帧多次校验可以使烧写器在校验码不能纠正错误的情况下可提前结束烧写,既能降低校验出错率,又能发挥校验码的纠错能力。同时采用分帧多次校验相对于只对整个程序数据进行一次校验,时间上并不会加长,因为计算的数据总量是相等的。数据接收与校验过程同时进行,可以让处理器的利用率得到极大发挥,提高了程序代码烧写器的稳定性和效率。

烧写模块704,用于根据校验结果调整帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将待烧写程序代码烧写至目标芯片。

在上述烧写模块704中,上述步骤中,若校验成功,则本帧数据的收发成功,烧写器可以接着取下一帧数据发送给目标芯片,若本帧数据的收发失败,可以先调整本帧数据的数据结构再发送给目标芯片,若本帧数据的收发再次失败,则可以降低通信速度将数据结构调整后的本帧数据再次发送给目标芯片。

上述实施例,通过在烧写器和目标芯片之间建立低速同步,烧写器在接收到目标芯片发送的同步应答信号后进行第一延时,烧写器提前发送所有校验码,目标芯片进行分帧多次校验,数据接收与校验过程同时进行,并动态调整帧数据结构、适时降低通信速度,可以降低程序代码烧写的失败率,提高烧写过程的稳定性,同时提高程序代码烧写的效率。

关于程序代码烧写装置的具体限定可以参见上文中对于程序代码烧写方法的限定,在此不再赘述。上述程序代码烧写装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

本发明实施例还提供一种程序代码烧写系统,包括:烧写器和目标芯片;

烧写器用于执行以下步骤:建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将帧校验码发送至目标芯片;向目标芯片发送帧数据,触发目标芯片在接收到帧数据时,根据帧校验码对帧数据进行校验;根据校验结果调整帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将待烧写程序代码烧写至目标芯片;

目标芯片用于执行以下步骤:建立与烧写器的低速同步,并向烧写器发送同步应答信号,烧写器接收同步应答信号后进行第一延时;在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;在接收到烧写器发送的帧数据时,根据帧校验码对帧数据进行校验,并将校验结果反馈至烧写器,触发烧写器根据校验结果调整帧数据的数据结构和帧数据的传输速度,并接收烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

上述实施例与本发明实施例中的程序代码烧写方法对应的实施例相类似,此处不再赘述。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:

建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将帧校验码发送至目标芯片;向目标芯片发送帧数据,触发目标芯片在接收到帧数据时,根据帧校验码对帧数据进行校验;根据校验结果调整帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将待烧写程序代码烧写至目标芯片;

或处理器执行计算机程序时实现以下步骤:

建立与烧写器的低速同步,并向烧写器发送同步应答信号,烧写器接收同步应答信号后进行第一延时;在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;在接收到烧写器发送的帧数据时,根据帧校验码对帧数据进行校验,并将校验结果反馈至烧写器,触发烧写器根据校验结果调整帧数据的数据结构和帧数据的传输速度,并接收烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

建立与目标芯片的低速同步,并在接收到目标芯片发送的同步应答信号后进行第一延时;在进行延时之后,获取待烧写程序代码中各个帧数据对应的帧校验码,将帧校验码发送至目标芯片;向目标芯片发送帧数据,触发目标芯片在接收到帧数据时,根据帧校验码对帧数据进行校验;根据校验结果调整帧数据的数据结构和帧数据的传输速度,根据调整后的帧数据的数据结构和帧数据的传输速度将待烧写程序代码烧写至目标芯片;

或计算机程序被处理器执行时实现以下步骤:

建立与烧写器的低速同步,并向烧写器发送同步应答信号,烧写器接收同步应答信号后进行第一延时;在烧写器进行第一延时之后,接收烧写器发送的待烧写程序代码中各个帧数据对应的帧校验码;在接收到烧写器发送的帧数据时,根据帧校验码对帧数据进行校验,并将校验结果反馈至烧写器,触发烧写器根据校验结果调整帧数据的数据结构和帧数据的传输速度,并接收烧写器调整帧数据的数据结构和帧数据的传输速度后烧写的程序代码。

需要说明的是,本发明实施例所涉及的术语“第一\\第二\\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\\第二\\第三”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\\第二\\第三”区分的对象在适当情况下可以互换,以使这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

本发明实施例的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或(模块)单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种程序代码烧写方法。

本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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