发明内容
为此,本发明实施例提供一种数据烧写方法、系统、烧写设备以及目标设备,用以减少数据烧写的错误率,提高烧写效率。
本发明实施例采用如下技术方案:
第一方面,提供一种数据烧写方法,所述数据烧写方法应用于数据烧写系统,所述数据烧写系统包括目标设备以及将待烧写数据烧写至所述目标设备的烧写设备,所述方法包括:
烧写设备生成待烧写数据的分段校验数据,将所述分段校验数据烧写至目标设备并判定所述分段校验数据被正确烧写;其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息以及所述待烧写数据的数据块大小;
所述烧写设备将所述待烧写数据烧写至所述目标设备;
所述目标设备生成待烧写数据对应的目标烧写数据,并根据所述分段校验数据,生成各分段目标烧写数据对应的第二校验信息;
所述目标设备比对所述第一校验信息、第二校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备。其中,所述比对结果用于表示第一校验信息对应的各分段待烧写数据是否被正确烧写至目标设备。
在第一方面第一种可能的实现方式中,所述目标设备比对所述第一校验信息、第二校验信息是否一致,确定比对结果,并将所述比对结果发送至所述烧写设备包括:
所述目标设备比对所述第一校验信息、第二校验信息,确定比对失败的分段校验数据,并将所述比对失败的分段校验数据发送至所述烧写设备。
结合第一种可能的实现方式,在第二种可能的实现方式中,所述目标设备比对所述第一校验信息、第二校验信息,确定比对失败的分段校验数据还包括:所述目标设备删除比对成功的分段校验数据。
结合第一方面,在第三种可能的实现方式中,所述烧写设备还根据所述比对结果确定比对失败的分段校验数据。
结合第二至第四种任一可能的实现方式中,所述数据烧写方法还包括:
所述烧写设备根据所述比对失败的分段校验数据确定对应的失败分段待烧写数据,并将所述失败分段待烧写数据烧写至所述目标设备;
所述目标设备生成所述失败分段待烧写数据对应的目标分段烧写数据及所述目标分段烧写数据对应的第三校验信息;
所述目标设备比对所述第一校验信息、第三校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备;
重复上述所述比对失败的分段校验数据的确定、所述失败分段待烧写数据的烧写以及第一校验信息和第三校验信息的比对,直至所述第一校验信息、第三校验信息比对成功。
结合第一方面,在第五种可能的实现方式中,所述烧写设备生成待烧写数据的分段校验数据包括:
根据所述分段数对所述待烧写数据进行分段处理,生成至少一分段待烧写数据;
对所述至少一分段待烧写数据进行校验计算,生成所述第一校验信息;
基于所述至少一分段待烧写数据对应的第一校验信息以及所述待烧写数据的数据块大小生成所述待烧写数据的分段校验数据。
结合第一方面,在第六种可能的实现方式中,所述烧写设备将所述待烧写数据的引导程序烧写至所述目标设备并判定所述引导程序被正确烧写。
结合第六种可能的实现方式,在第七种可能的实现方式中,所述烧写设备将所述待烧写数据的引导程序烧写至所述目标设备并判定所述引导程序被正确烧写包括:
根据读取到的所述待烧写数据的引导程序,确定对应的第四校验信息;
将所述引导程序烧写至所述目标设备;
读取所述目标设备的引导程序并根据所述目标设备的引导程序生成第五校验信息,并比对所述第四校验信息和第五校验信息;
若所述第四校验信息与第五校验信息一致,则判定所述引导程序被正确烧写;若所述第四校验信息与第五校验信息不一致,则重复上述第四校验信息的确定、所述引导程序的烧写以及第四校验信息和第五校验信息的比对,直至所述引导程序被判定正确烧写。
结合第一方面,在第八种可能的实现方式中,所述目标设备比对所述第一校验信息、第二校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备包括:
针对所述各分段待烧写数据中的每一分段待烧写数据,将其对应的第一校验信息及对应的分段目标烧写数据的第二校验信息进行比对,并在比对失败时发送比对失败指令至烧写设备。
结合第一方面或第八种可能的实现方式,在第九种可能的实现方式中,所述目标设备包括至少一处理器,所述分段数的数值与目标设备的处理器数量相同;所述根据所述分段校验数据,生成各分段目标烧写数据对应的第二校验信息包括:
根据所述分段数对所述目标烧写数据进行分段处理,获得至少一分段目标烧写数据;
控制所述至少一处理器一一对应获取所述至少一分段目标烧写数据;
控制所述至少一处理器一一对应计算获取到的至少一分段目标烧写数据的校验信息,获得所述各分段目标烧写数据对应的第二校验信息。
第二方面,提供一种烧写设备,包括:
第一烧写模块,用于生成待烧写数据的分段校验数据,将所述分段校验数据烧写至目标设备并判定所述分段校验数据被正确烧写;其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息以及所述待烧写数据的数据块大小;
第二烧写模块,用于将所述待烧写数据烧写至所述目标设备;
接收模块,用于接收所述目标设备反馈的比对结果,其中,所述比对结果是所述目标设备根据目标设备生成的第二校验信息与第一校验信息的比对确定的。
在第二方面第一种可能的实现方式中,还包括:确定模块,用于根据所述比对结果确定比对失败的分段校验数据。
结合第一种可能的实现方式,在第二种可能的实现方式中,还包括:
接收模块,用于接收所述目标设备发送的比对失败的分段校验数据;
第三烧写模块,用于根据所述比对失败的分段校验数据确定对应的失败分段待烧写数据,将所述失败分段待烧写数据烧写至所述目标设备,并在所述接收模块再次接收到比对失败的分段校验数据的情况下被触发。
结合第二方面,在第三种可能的实现方式中,所述第一烧写模块包括:
第一分段单元,用于根据所述分段数对所述待烧写数据进行分段处理,生成至少一分段待烧写数据;
第一生成单元,用于对所述至少一分段待烧写数据进行校验计算,生成所述第一校验信息;
第二生成单元,用于基于所述至少一分段待烧写数据对应的第一校验信息以及所述待烧写数据的数据块大小生成所述待烧写数据的分段校验数据。
结合第二方面,在第四种可能的实现方式中,所述烧写设备还包括:第四烧写模块,用于将所述待烧写数据的引导程序烧写至所述目标设备并判定所述引导程序被正确烧写。
结合第四种可能的实现方式,在第五种可能的实现方式中,所述第四烧写模块包括:
确定单元,用于根据读取到的所述待烧写数据的引导程序,确定对应的第四校验信息;
烧写单元,用于将所述引导程序烧写至所述目标设备;
比对单元,用于读取所述目标设备的引导程序并根据所述目标设备的引导程序生成第五校验信息,并比对所述第四校验信息和第五校验信息;
若所述第四校验信息与第五校验信息一致,则判定所述引导程序被正确烧写;若所述第四校验信息与第五校验信息不一致,则控制所述确定单元、烧写单元、比对单元分别执行上述第四校验信息的确定、所述引导程序的烧写以及第四校验信息和第五校验信息的比对,直至所述引导程序被判定正确烧写。
第三方面,提供一种目标设备,包括:
存储模块,用于存储待烧写数据的分段校验数据,其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息、起始LBA地址以及数据块大小;
生成模块,用于生成待烧写数据对应的目标烧写数据,并根据所述分段校验数据,生成各分段目标烧写数据对应的第二校验信息;
比对模块,用于比对所述第一校验信息、第二校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备。
在第三方面第一种可能的实现方式中,所述比对模块包括:第一确定单元,用于比对所述第一校验信息、第二校验信息,确定比对失败的分段校验数据,并将所述比对失败的分段校验数据发送至所述烧写设备。
结合第一种可能的实现方式,在第二种可能的实现方式中,所述比对模块,还用于删除比对成功的分段校验数据。
结合第一或第二种可能的实现方式,在第三种可能的实现方式中,所述比对模块包括:
第三生成单元,用于生成所述失败分段待烧写数据对应的目标分段烧写数据及所述目标分段烧写数据对应的第三校验信息;
第一比对单元,用于比对所述第一校验信息、第三校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备;
并控制所述第一确定单元、第三生成单元、第一比对单元分别执行上述所述比对失败的分段校验数据的确定、所述失败分段待烧写数据的烧写以及第一校验信息和第三校验信息的比对,直至所述第一校验信息、第三校验信息比对成功。
结合第三方面,在第四种可能的实现方式中,所述比对模块用于:针对所述各分段待烧写数据中的每一分段待烧写数据,将其对应的第一校验信息及对应的分段目标烧写数据的第二校验信息进行比对,并在比对失败时发送比对失败指令至烧写设备。
结合第三方面或第四种可能的实现方式,在第五种可能的实现方式中,所述目标设备包括至少一处理器,所述分段数的数值与目标设备的处理器数量相同;所述生成模块包括:
第二分段单元,用于根据所述分段数对所述目标烧写数据进行分段处理,获得至少一分段目标烧写数据;
第一控制单元,用于控制所述至少一处理器一一对应获取所述至少一分段目标烧写数据;
第二控制单元,用于控制所述至少一处理器一一对应计算获取到的至少一分段目标烧写数据的校验信息,获得所述各分段目标烧写数据对应的第二校验信息。
第四方面,提供一种数据烧写系统,包括烧写设备以及与所述烧写设备通信连接的目标设备,
所述烧写设备,用于生成待烧写数据的分段校验数据,将所述分段校验数据烧写至目标设备并判定所述分段校验数据被正确烧写,并将所述待烧写数据烧写至所述目标设备;其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息以及所述待烧写数据的数据块大小;
所述目标设备,用于生成待烧写数据对应的目标烧写数据,根据所述分段校验数据,生成各分段目标烧写数据对应的第二校验信息,并比对所述第一校验信息、第二校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备;。
本发明实施例通过比对待烧写数据的各分段待烧写数据对应的第一校验信息及烧写后目标烧写数据的各分段目标烧写数据对应的第二校验信息,来确定所述待烧写数据是否被正确地烧写至目标设备,并将比对结果发送至烧写设备。由于本发明实施例比对的第一校验信息是对应的各分段待烧写数据,则比对结果对应的即是各分段待烧写数据是否均被正确烧写,烧写设备就可根据比对结果判定哪些分段待烧写数据未被正确烧写。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1和图2,图1示出了本发明实施例提供的数据烧写系统,所述数据烧写系统包括烧写设备以及与所述烧写设备连接的目标设备,所述烧写设备与目标设备之间可数据通信,烧写设备可将待烧写数据或固件烧写到目标设备中。在具体实施中,烧写设备可以为具有把固件或数据烧写到其他设备中的嵌入式设备或PC设备或安装于设备中的数据烧写工具/装置,所述目标设备可以为移动终端、嵌入式设备、PC设备以及具有存储模块和中央处理器的主板。
请参阅图2,图2示出了本发明实施例基于数据烧写系统的数据烧写方法,包括:
S202、烧写设备生成待烧写数据的分段校验数据,将所述分段校验数据烧写至目标设备并判定所述分段校验数据被正确烧写;其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息以及待烧写数据的数据块大小;
S204、所述烧写设备将所述待烧写数据烧写至所述目标设备;
S206、所述目标设备生成待烧写数据对应的目标烧写数据,根据所述分段校验数据生成各分段目标烧写数据对应的第二校验信息;其中,分段目标烧写数据是所述目标烧写数据根据所述分段数被划分而成。具体的,所述第二校验信息是根据所述分段数,各分段目标烧写数据对应的校验信息;
S208、所述目标设备比对所述第一校验信息、第二校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备。
在这里,本领域技术人员应当理解的是,第一校验信息包括多个校验信息,分别对应分段待烧写数据;第二校验信息同样包括多个校验信息,分别对应各分段目标烧写数据。具体的,比对所述第一校验信息、第二校验信息是否一致。若一致,则所述比对结果为成功;若不一致,则比较结果为失败。其中,所述比对结果用于表示第一校验信息对应的各分段待烧写数据是否被正确烧写至目标设备。在具体实施例,若比对结果为成功,则表明待烧写数据被正确烧写至目标设备;若比对结果为失败,则第一/第二校验信息中比对不一致的校验信息对应的分段待烧写数据未被正确烧写至目标设备。
本发明实施例通过比对待烧写数据的各分段待烧写数据对应的第一校验信息及烧写后目标烧写数据的各分段目标烧写数据对应的第二校验信息,来确定所述待烧写数据是否被正确地烧写至目标设备,并将比对结果发送至烧写设备。由于本发明实施例比对的第一校验信息是对应的各分段待烧写数据,则比对结果对应的即是各分段待烧写数据是否均被正确烧写,烧写设备就可根据比对结果判定哪些分段待烧写数据未被正确烧写。为了能够更清楚地解释上述原理,下面举例来说明。假设待烧写数据为一具有1GB数据量的数据固件,经过系统分析后设定该数据固件被划分为4段,即分段数为4。
该分段数的设定可根据目标设备的处理器数量设定,例如目标设备为四核设备,则该分段数可以为4;也可为烧写设备接收外部的输入而设,例如用户通过烧写设备输入该分段数为4;还可以为烧写设备根据数据固件的大小、系统处理的效率、烧写数据总体的时间等因数自动设定。本发明实施例提供的数据烧写方法可以包括如下步骤。
S202、一般情况下,烧写设备是按照分段数4将待烧写数据等块划分,得到多个分段待烧写数据。当然,烧写设备也可以不将待烧写数据等块划分,只要将待烧写数据划分成与分段数相同数量的多个分段待烧写数据即可。划分后烧写设备获取到4个分段待烧写数据,其中,每个分段待烧写数据的数据块大小为256MB。烧写设备分别对各分段待烧写数据进行校验计算,得到对应的第一校验信息,具体的,可对各分段待烧写数据进行CRC算法计算,得到四个CRC数值(即第一校验信息),分别是CRC1,CRC2,CRC3和CRC4。烧写设备再针对上述四个CRC数值和待烧写数据的总大小数值A(即1GB)进行CRC算法计算,得到第五个CRC数值——CRC5。在这里,分段校验数据即包括CRC1-CRC4和待烧写数据的总大小数值——1GB。具体的,分段校验数据可如下表1所示。
表1
得到上述五个CRC数值后,烧写设备将分段校验数据即CRC1-CRC4以及待烧写数据的总大小数值烧写到目标设备中。
烧写完成后,目标设备将存储的数据——假设为CRC1',CRC2',CRC3',CRC4'以及待烧写数据的总大小数值B——发送给烧写设备。
烧写设备接收到上述CRC1'-CRC4'和B后,针对CRC1'-CRC4'和B进行CRC算法计算,得到第五个CRC数值——CRC5'。烧写设备比对CRC5、CRC5'是否一致:若一致,则表明分段校验数据被正确烧写至目标设备;若不一致,则表明分段校验数据未被正确烧写至目标设备。
烧写设备可再次将分段校验数据烧写至目标设备,并进行比对判断,直至待分段校验数据被正确烧写至目标设备。
S204、分段校验数据被正确烧写至目标设备后,烧写设备将所述待烧写数据烧写至目标设备。
S206、目标设备被烧写数据后,得到对应的目标烧写数据。根据分段校验数据,生成各分段目标烧写数据对应的第二校验信息。具体的,目标设备根据分段校验数据中的第一校验信息可获取目标烧写数据中各分段的数据(即分段目标烧写数据)及对应的数据块大小。目标设备再通过校验算法对各分段目标烧写数据进行校验计算,例如通过CRC算法对各分段目标烧写数据进行校验计算,生成各分段目标烧写数据对应的CRC数值,即第二校验信息。对应表1,目标设备获取到的数据可如下表2所示。
表2
源分段数据序列号 |
目标分段数据序列号 |
数据块大小 |
第二校验信息 |
分段待烧写数据1 |
分段目标烧写数据1 |
256MB |
CRC1″ |
分段待烧写数据2 |
分段目标烧写数据2 |
256MB |
CRC2″ |
分段待烧写数据3 |
分段目标烧写数据3 |
256MB |
CRC3″ |
分段待烧写数据4 |
分段目标烧写数据4 |
256MB |
CRC4″ |
目标设备分别对应比对所述CRC1-CRC4、CRC1″-CRC4″,生成比对结果。所述比对结果可如下表3所示。
表3
S208、目标设备将所述比对结果发送至烧写设备。
烧写设备接收到此比对结果后可清楚地知道待烧写数据的哪几块数据未被正确烧写。烧写设备无需重新烧写待烧写数据的全部数据,仅重新烧写未被正确烧写的数据(如上述描述中的分段待烧写数据3、4)即可,提高了数据烧写效率,节约了成本。具体的,烧写设备可在接收到比对结果后确定失败的分段待烧写数据,从而确定对应的失败分段待烧写数据,对于失败的分段待烧写数据重新进行上述烧写过程。
为了能够使烧写设备更快地找寻烧写失败的分段待烧数据,在本发明实施例的进一步改进中,目标设备还会删除比对成功的分段校验数据,将比对失败的分段校验数据保存,并只将比对失败的分段校验数据发送给烧写设备。烧写设备可根据比对失败的分段校验数据快速地找到对应的失败分段待烧写数据。基于前文举例,比对失败的分段校验数据如下表4所示。
表4
源分段数据序列号 |
第一校验信息 |
数据块大小 |
分段待烧写数据3 |
CRC3 |
256MB |
分段待烧写数据4 |
CRC4 |
256MB |
请参阅图1及图3,本实施例提供一种数据烧写方法,该方法应用于包括如图1所示的烧写设备、目标设备的数据烧写系统,图1所示的数据烧写系统描述可参照前文所述,在此不再赘述。在本实施例中,所述待烧写数据为一固件的系统镜像,其具有引导程序。图3示出数据烧写方法的时序流程图,具体方案如下。
(1)烧写设备先读取待烧写的固件中的引导程序部分,计算引导程序的CRC数值(第四校验信息),启动烧写该引导程序到目标设备的主存中。烧写设备回读目标设备主存中的引导程序并计算回读回来的引导程序的CRC数值(第五校验信息)进行比较,如果一致则表明引导程序烧写成功。
(2)烧写设备读取待烧写的系统镜像(即待烧写数据),并获取目标设备的中央处理芯片的核心处理器数量,将此核心处理器处理数量即为系统镜像被划分的分段数。烧写设备对所述系统镜像进行分段处理,得到多个分段系统镜像(即分段待烧写数据)。烧写设备分段计算该系统镜像的CRC数值(即第一校验信息),并对所有的分段CRC数值再计算一个CRC数值,我们暂称为二次CRC;比如系统镜像的总大小为1GB,待烧写设备的中央处理器的核心数是4,那么也就意味这烧写工具针对每256MB固件计算一个CRC数值,分别为CRC1,CRC2,CRC3,CRC4,针对这四个CRC数值,以及系统镜像的总大小数值我们再计算一个CRC5。根据前述CRC1-CRC4以及系统镜像的总大小数据等信息,可得到相应的分段校验数据,其表现形式可如前述表1所示。
(3)烧写设备将上述CRC1-CRC4、系统镜像的总大小数值烧写到目标设备的主存中,并回读这四个CRC数值和系统镜像的总大小数值。计算被回读的这四个CRC数值和系统镜像总大小的CRC数值,我们暂称为CRC5',那么比较CRC5与CRC5'是否一致来判断被烧写到待烧写设备主存中的CRC1到CRC4、系统镜像总大小是否被烧写成功。具体的,若一致,则表明被烧写成功。若不一致,则表明未被烧写成功,烧写设备需重新将上述CRC1-CRC4、系统镜像的总大小数值烧写到目标设备的主存中,并再次判断是否被烧写成功。
(4)烧写设备将系统镜像烧写到目标设备的主存中,烧写完成后发送指令重启目标设备。目标设备重启后加载运行引导程序(引导程序已经校验过,可以确保准确运行)。
(5)目标设备的引导程序解析被烧写到主存中的CRC数值个数以及系统镜像的总大小,获得每个CRC数值对应的系统镜像的大小,如前文所述4个CRC,系统镜像总大小1GB,获得每个CRC数值对应的系统镜像大小为256MB(这部分信息步骤3也已经校验过,可以确保数据准确)。
引导程序启动中央处理芯片的4个核心处理器,CPU1读取系统镜像的第一段256MB数据,计算该256MB数据的CRC1″,与已知的CRC1进行比较。CPU2读取系统镜像的第二段256MB数据,并计算该256MB数据的CRC2″,与已知的CRC2进行比较,依次类推。结合前述表2,计算出来的第二校验信息具体可如下表2'所示;结合前述表3,假设最终的比对结果可如下述表3'所示。
表2'
表3'
(6)如果目标设备的中央处理芯片的所有核心处理器成功校验完自己所负责的部分的系统镜像,表明整个系统镜像烧写成功。只要有一个核心处理器发现它所负责的部分的系统镜像的校验失败,则表明整个系统镜像烧写失败。无论失败与否,目标设备都会将结果通知烧写设备。结合前述表3',假设最终的比对结果应当为表3'所示,目标设备则会将带有结论“整个系统镜像烧写失败”的比对结果发送至烧写设备,烧写设备则会根据此比对结果分析出哪些分段待烧写数据未被正确烧写。
进一步的,为了加快烧写校验效率,本发明实施例在针对所述各分段待烧写数据中的每一分段待烧写数据,将其对应的第一校验信息及对应的分段目标烧写数据的第二校验信息进行比对的过程中,例如前述的CRC1与CRC1″、CRC2和CRC2″、CRC3和CRC3″、CRC4和CRC4″的一一比对的过程中,当检测到某一分段待烧写数据对应的校验信息比对失败时,立即发送校验失败的指令至烧写设备,告知烧写设备该分段待烧写数据未被正确烧写,从而导致整个系统镜像未被成功烧写。这样,当某些分段待烧写数据未被正确烧写时,目标设备并不需要将所有的分段待烧写数据校验完成后烧写设备才能判断整个系统镜像未被成功烧写,目标设备只要发现某一分段待烧写数据对应的第一校验信息未被校验通过,就会发送烧写失败的指令至烧写设备,告知烧写设备整个系统镜像未被成功烧写。为了能够进一步解释该方案,仍然以前述表3'为例,具体如下。
我们知道,表3'所表示的最终比对结果是分段待烧写数据3及分段待烧写数据4未被正确烧写,当CPU1-CPU4一一比对CRC1与CRC1″、CRC2和CRC2″、CRC3和CRC3″、CRC4和CRC4″时,CPU3最先发现CRC3和CRC3″不一致或CPU4最先发现CRC4和CRC4″不一致,此时目标设备则会立即发送烧写失败的指令至烧写设备,告知烧写设备整个系统镜像未被成功烧写。烧写设备无需等到目标设备比对完所有信息后才会知道整个系统镜像未被成功烧写。通过此改进,加快了校验环节,提高了生产效率。
为了能够完成将系统镜像正确烧写至目标设备的目的,本发明实施例需再次进行上述(4)至(6)的过程。但如果仍然有某些分段待烧写数据未被正确烧写,本发明实施例仍然要再次执行上述(4)至(6)的过程。如果每次烧写及校验的过程中均有未被正确烧写的分段待烧写数据的话,那么本发明实施例则会无限循环(4)至(6)的过程,这无疑是降低烧写效率及浪费生产资源。为了解决此问题,本发明实施例作了进一步改进,在目标设备只要发现某一分段待烧写数据对应的第一校验信息未被校验通过,就会发送烧写失败的指令至烧写设备后,所述数据烧写方法还可以包括:
目标设备还会将比对失败的分段校验数据发送至烧写设备,以告知烧写设备哪些分段待烧写数据未被正确烧写。烧写设备接收到比对失败的分段校验数据后可快速地找到对应的失败分段待烧写数据,并可只烧写对应的分段待烧写数据至目标设备,无需将整个系统镜像再次烧写,在提高烧写校验的同时提高了数据烧写的效率。进一步的,本发明实施例避免了由上述无限循环(4)至(6)的过程造成的降低烧写效率及浪费生产资源的问题。结合前述表4,比对失败的分段校验数据可如下表4'所示。
表4'
之前失败的分段数据被再次烧写后,目标设备可以控制原来的处理器(相对表4',则为CPU3及CPU4),计算此次烧写的分段系统镜像的CRC数值(第三校验信息),来进行比较。按照之前所述方式,之前失败的分段数据是否被正确烧写。
为了能够更清楚地解释本发明的技术方案,本发明实施例还提供一种数据烧写方法。在本实施中,分段校验数据包括:根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息、起始LBA地址以及数据块大小。假设待烧写数据为一具有1GB数据量的数据固件,经过系统分析后设定该数据固件被划分为4段,即分段数为4。
该分段数的设定可根据目标设备的处理器数量设定,例如目标设备为四核设备,则该分段数可以为4;也可为烧写设备接收外部的输入而设,例如用户通过烧写设备输入该分段数为4;还可以为烧写设备根据数据固件的大小、系统处理的效率、烧写数据总体的时间等因数自动设定。本发明实施例提供的数据烧写方法可以包括如下步骤。
S202、一般情况下,烧写设备是按照分段数4将待烧写数据等块划分,得到多个分段待烧写数据。当然,烧写设备也可以不将待烧写数据等块划分,只要将待烧写数据划分成与分段数相同数量的多个分段待烧写数据即可。
划分后烧写设备可获取到各分段待烧写数据的起始LBA地址以及数据块大小,并对各分段待烧写数据进行校验计算,得到对应的第一校验信息。具体的,可对各分段待烧写数据进行CRC算法计算,得到第一CRC数值。经过上述后,烧写设备即可得到待烧写数据的分段校验数据,如下表11所示。在具体实施例,该分段校验数据的表现形式可为如表11所示的数据格式。为了方便说明,以下表格以待烧写数据被等块划分,地址偏移量为分段待烧写数据大小(即256MB)为例。
表11
分段数据序列号 |
第一校验信息 |
起始LBA地址 |
数据块大小 |
分段待烧写数据1 |
第一CRC1 |
第一LBA地址 |
256MB |
分段待烧写数据2 |
第一CRC2 |
第一LBA地址+256MB |
256MB |
分段待烧写数据3 |
第一CRC3 |
第一LBA地址+512MB |
256MB |
分段待烧写数据4 |
第一CRC4 |
第一LBA地址+768MB |
256MB |
所述分段校验数据生成后,烧写设备将所述分段校验数据烧写至目标设备。为了便如说明,假设烧写设备原始生成的为分段校验数据A,目标设备被烧写的为分段校验数据B,烧写设备向目标设备获取所述分段校验数据B,并与原始生成的分段校验数据A一一进行比对。若分段校验数据A、分段校验数据B完全一致,则表明分段校验数据A被正确烧写至目标设备。若分段校验数据A与分段校验数据B并不完全一致,则表明分段校验数据A并没有被正确烧写至目标设备。此时,烧写设备可再次将分段校验数据烧写至目标设备,并进行比对判断,直至待分段校验数据被正确烧写至目标设备。
S204、分段校验数据被正确烧写至目标设备后,烧写设备将所述待烧写数据烧写至目标设备。
S206、目标设备被烧写数据后,得到对应的目标烧写数据。根据分段校验数据生成目标烧写数据对应的第二校验信息。具体的,根据分段校验数据中罗列的LBA起始地址、数据块大小等信息获取目标烧写数据中各分段的数据,即各分段目标烧写数据。目标设备再通过校验算法对各分段目标烧写数据进行校验计算,例如通过CRC算法对各分段目标烧写数据进行校验计算,生成各分段目标烧写数据对应的第二CRC数值,即第二校验信息。得到的第二校验信息可如下表22所示。
表22
分段数据序列号 |
起始LBA地址 |
数据块大小 |
第二校验信息 |
分段目标烧写数据1 |
第一LBA地址 |
256MB |
第二CRC1 |
分段目标烧写数据2 |
第一LBA地址+256MB |
256MB |
第二CRC2 |
分段目标烧写数据3 |
第一LBA地址+512MB |
256MB |
第二CRC3 |
分段目标烧写数据4 |
第一LBA地址+768MB |
256MB |
第二CRC4 |
目标设备分别对应比对所述第一CRC1-4、第二CRC1-4,生成比对结果。所述比对结果可如下表33所示。
表33
S208、目标设备将所述比对结果发送至烧写设备。
烧写设备接收到此比对结果后可清楚地知道待烧写数据的哪几块数据未被正确烧写。烧写设备无需重新烧写待烧写数据的全部数据,仅重新烧写未被正确烧写的数据(如上述描述中的分段待烧写数据3、4)即可,提高了数据烧写效率,节约了成本。具体的,烧写设备可在接收到比对结果后确定失败的分段待烧写数据,从而确定对应的失败分段待烧写数据,对于失败的分段待烧写数据重新进行上述烧写过程。
为了能够使烧写设备更快地找寻烧写失败的分段待烧数据,在本发明实施例的进一步改进中,目标设备还会删除比对成功的分段校验数据,将比对失败的分段校验数据保存,并只将比对失败的分段校验数据发送给烧写设备。烧写设备可根据比对失败的分段校验数据快速地找到对应的失败分段待烧写数据。基于前文举例,比对失败的分段校验数据如下表44所示。
表44
分段数据序列号 |
第一校验信息 |
起始LBA地址 |
数据块大小 |
分段待烧写数据3 |
第一CRC3 |
第一LBA地址+512MB |
256MB |
分段待烧写数据4 |
第一CRC4 |
第一LBA地址+768MB |
256MB |
请参阅图1及图4,本实施例具体提供一种数据烧写方法,该方法应用于包括如图1所示的烧写设备、目标设备的数据烧写系统,图1所示的数据烧写系统描述可参照前文所述,在此不再赘述。在本实施例中,所述待烧写数据为一固件,其具有引导程序。图4示出数据烧写方法的时序流程图,具体方案如下。
(1)烧写设备先读取待烧写的固件中的引导程序,计算引导程序的CRC数值(即第四校验信息),启动烧写该引导程序到目标设备的主存中。回读主存中的引导程序并计算回读回来的引导程序的CRC数值(第五校验信息)进行比较,如果一致则表明引导程序烧写成功。
(2)烧写设备读取待烧写的系统镜像(即待烧写数据),并接收生产人员输入的系统镜像的分段数,对所述系统镜像进行分段处理,得到多个分段系统镜像(即分段待烧写数据)。烧写设备分别计算该系统镜像各分段系统镜像的CRC数值(即第一校验信息),记录成表格数据(即分段校验数据),表格数据的格式为该分段系统镜像的起始LBA地址和该分段系统镜像的数据块大小,以及对应的CRC数值。具体的表格形式可参阅前文表11。
(3)烧写设备将此表格数据烧写到目标设备的主存中,并回读该表格,与烧写设备本地保存的该表格数据进行比较,确保表格数据烧写正确。具体的,假设烧写设备回读回来的为表格数据B,烧写设备本地存储的原始表格数据为表格数据A。若表格数据A与表格数据B完全一致,则表明表格数据A被正确地烧写到目标设备。否则,需要重新烧写表格数据A至目标设备,并再次比较判断表格数据A是否被正确烧写到目标设备。
(4)烧写设备将整个系统镜像烧写如目标设备的主存中,目标设备生成对应的目标系统镜像(即目标烧写数据)。
(5)烧写设备发送重启命令给目标设备。目标设备重启并加载运行引导程序(步骤(1)烧写校验的,可以确保正确),引导程序按照表格数据(步骤(2)产生的)中罗列的字段(步骤(2)所述的格式),依次读取目标设备本地的各分段目标系统镜像(即分段目标待烧写数据)来计算CRC数值(即第二校验信息),并于表格数据中该分段目标系统镜像真实的CRC数值(即第一校验信息)进行比较。如果比较结果不同则表明该分段系统镜像烧写错误;如果比较结果相同则表明该分段系统镜像烧写正确,具体的,可参阅前文表33。进一步的,目标设备还会将表格数据中,校验成功的分段信息删除,只保留校验失败的分段信息(即比对失败的分段校验数据)。如果各分段系统镜像校验全部成功,则目标设备主存中的表格数据都被删除完毕。
(6)假设有某些段数据校验比较后发现烧写失败了,则此分段数据对应的信息在所述的表格数据中会被目标设备保留下来(如步骤(5)所述,成功烧写的分段系统镜像的对应信息都会被删除,唯有烧写失败的分段系统镜像的对应信息会被保留),并发送给烧写设备。
(7)烧写设备接收到目标设备回传的表格数据,按照剩余项(也就是前所述的烧写失败的分段系统镜像的信息,包含该分段系统镜像的LBA地址,大小,CRC校验值),单独烧写此分段系统镜像,不用重新烧写全部系统镜像数据。
(8)之前失败的分段数据被再次烧写后,目标设备还会按照之前残留的表格数据信息(残留的表格数据信息对应上一次烧写失败的分段部分,也就是对应本次再烧写的分段部分,即比对失败的分段校验数据),可参阅前文表44。计算此次烧写的分段系统镜像的CRC数值(第三校验信息),来进行比较。按照之前所述方式,如果再烧写成功,则在残留的表格数据信息中删除再烧写成功的分段系统镜像信息,如果失败则继续保留该信息,最后再发送给烧写设备。
依次类推,从步骤(7)开始循环,直到所有分段系统镜像被完全正确烧写成功为止。
请参阅图5,本实施例仍然提供一种数据烧写方法,在这里,烧写设备为安装有烧写工具的PC端,简称PC烧写工具;目标设备为接收并存储待烧写数据的待烧写设备,包括主存及中央处理芯片,其中,PC端烧写工具往待烧写设备烧写的数据均存储于主存中,待烧写数据为一系统镜像。本实施例的具体工作原理如下。
①PC烧写工具烧写引导程序到待烧写设备。
②PC烧写工具回读引导程序,计算回读的引导程序的CRC,与烧写的引导程序的CRC进行比较,确保正确烧写引导程序。
③按照PC烧写工具上预设的待烧写设备的中央处理芯片的核心处理器数量,分割固件并计算被分割的各段固件数据的CRC,以及计算系统镜像总大小,并将这些数据烧写到待烧写设备的主存中。
④PC烧写工具回读步骤③所烧写的数据,并针对这些数据计算CRC;并与PC烧写工具烧写这些数据前计算的CRC进行比较,确保这些数据(各分段系统镜像的CRC和系统镜像的总大小)都正常烧写到待烧写设备的主存中。
⑤PC烧写工具烧写完整的系统镜像到待烧写设备的主存中。
⑥⑦待烧写设备中央处理芯片的各个核心处理器按照分段要求读取自己负责校验的那段固件,并计算该段固件数据的CRC,与已知的该段数据对应的正确CRC(步骤③中烧写的)进行比较。
⑧全部核心处理器校验自己负责的固件,都完全正确,向PC烧写工具发送校验成功指令。如果一旦有一个核心处理器校验自己负责的固件出错,向PC烧写工具发送校验失败指令。
本发明实施例还提供一种烧写设备,包括:
第一烧写模块,用于生成待烧写数据的分段校验数据,将所述分段校验数据烧写至目标设备并判定所述分段校验数据被正确烧写;其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息以及所述待烧写数据的数据块大小;
第二烧写模块,用于将所述待烧写数据烧写至所述目标设备;
接收模块,用于接收所述目标设备反馈的比对结果,其中,所述比对结果是所述目标设备根据目标设备生成的第二校验信息与第一校验信息的比对确定的。
本发明实施例还提供一种目标设备,包括:
存储模块,用于存储待烧写数据的分段校验数据,其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息、起始LBA地址以及数据块大小;
生成模块,用于生成待烧写数据对应的目标烧写数据,并根据所述分段校验数据,生成各分段目标烧写数据对应的第二校验信息;
比对模块,用于比对所述第一校验信息、第二校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备。
其中,比对模块用于:针对所述各分段待烧写数据中的每一分段待烧写数据,将其对应的第一校验信息及对应的分段目标烧写数据的第二校验信息进行比对,并在比对失败时发送比对失败指令至烧写设备。
具体的,所述目标设备包括至少一处理器,所述分段数的数值与目标设备的处理器数量相同;所述生成模块包括:
第二分段单元,用于根据所述分段数对所述目标烧写数据进行分段处理,获得至少一分段目标烧写数据;
第一控制单元,用于控制所述至少一处理器一一对应获取所述至少一分段目标烧写数据;
第二控制单元,用于控制所述至少一处理器一一对应计算获取到的至少一分段目标烧写数据的校验信息,获得所述各分段目标烧写数据对应的第二校验信息。
本发明的设备实施例的工作原理及相应的有益效果与前述方法实施例理念一致,具体可参阅前述的内容,在此不再赘述。
本发明实施例还提供一种烧写设备,包括:
存储器;
一个或多个处理器;以及,
一个或多个模块,所述一个或多个模块被存储在所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个模块用于执行以下步骤的指令:
生成待烧写数据的分段校验数据,将所述分段校验数据烧写至目标设备并判定所述分段校验数据被正确烧写;其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息、起始LBA地址以及数据块大小;
将所述待烧写数据烧写至所述目标设备;
接收所述目标设备反馈的比对结果,其中,所述比对结果是所述目标设备根据目标设备生成的第二校验信息与第一校验信息的比对确定的。
本发明实施例还提供一种目标设备,包括:
存储器;
一个或多个处理器;以及,
一个或多个模块,所述一个或多个模块被存储在所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个模块用于执行以下步骤的指令:
存储待烧写数据的分段校验数据,其中,所述分段校验数据包括根据所述待烧写数据被划分的分段数,各分段待烧写数据对应的第一校验信息、起始LBA地址以及数据块大小;
生成待烧写数据对应的目标烧写数据,并根据所述分段校验数据,生成各分段目标烧写数据对应的第二校验信息;
比对第一校验信息、第二校验信息,确定比对结果,并将所述比对结果发送至所述烧写设备。
所述处理器还可被配置为执行可实现前述方法实施例的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。
本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。