掌桥专利:专业的专利平台
掌桥专利
首页

一种产品序列号烧录的方法、装置及存储介质

文献发布时间:2023-06-19 09:54:18


一种产品序列号烧录的方法、装置及存储介质

技术领域

本发明涉及序列号烧录领域,尤其是涉及一种产品序列号烧录的方法、装置及存储介质。

背景技术

电子产品在生产时,为了区分具体电子产品的唯一性,通常会在电子产品的指定存储位置中写入产品序列号(Serial Number,SN)。

然而,随着技术的发展,微控制单元(Microcontroller Unit,MCU)存贮空间越来越大,大多数产品的SN便存贮在MCU的内部Flash中。

在现有技术中,向MCU内部Flash中烧录SN,通常的做法是待MCU烧入正式固件(Firmware)后,上位机使用约定的通讯协议将SN发送到电子产品中的MCU,MCU收到SN并校验后,通过自编程的方式将SN写进对应的Flash地址中。

但是,使用这种方式将SN烧录到电子产品中不仅需要增加上位机与MCU的通讯串口,而且在MCU程序中还需要增加数据通讯及Flash内部数据擦除及写入功能。这使得当正式固件量产时,采用这种方式需要重新修改固件,这不仅增加了开发者的工作量,而且还需要对固件进行测试,导致烧录产品序列号的效率较低。

发明内容

本发明提供一种产品序列号烧录的方法、装置及存储介质,用以解决现有技术中存在的烧录产品序列号的效率和准确度低的技术问题。

第一方面,为解决上述技术问题,本发明实施例提供的一种产品序列号烧录方法的技术方案如下:

在接收到电子产品的序列号烧录指令时,从数据库获取第一产品序列号,并转换为与包含固件的第二文件中数据类型相同的第二产品序列号,同时生成包含第二产品序列号和第一烧录地址的第一文件;

将所述第一文件与包含固件的第二文件进行合并,获得第三文件;

将所述第三文件烧录进所述电子产品的微控制单元MCU的指定存储位置。

一种可能的实施方式,生成包含第二产品序列号和第一烧录地址的第一文件,包括:

从所述第一烧录地址的最低字节开始,到所述第一烧录地址的最低字节结束,按预设数据格式构建每行数据,获得所述第一文件。

一种可能的实施方式,从所述第一烧录地址的最低字节开始,到所述第一烧录地址的最高字节结束,按预设数据格式构建每行数据,获得所述第一文件,包括:

从所述最低字节开始,向所述最高字节方向,依次获取具有所述第一预设值字节数的子地址数据;

将第一个所述子地址数据和第二产品序列号,按所述预设数据格式构建为所述第一文件中结束命令所在行之前的一行数据;

从第二个所述子地址数据开始,按照所述预设数据格式依次构建为第一文件中的一行数据,直接最后一个所述子地址数据,获得第一文件;其中,包含高字节的所述子地址数据所在行,位于包含低字节的子地址数据之前。

一种可能的实施方式,按照所述预设数据格式依次构建为第一文件中的一行数据,包括:

当最后一个所述子地址数据中包含的字节数据小于所述第一预设值时,在所述子地址数据的高位用0补齐。

一种可能的实施方式,所述预设数据格式,包括:

本行数据长度、本行起始地址、本行数据类型、本行数据以及本行数据的校验和。

一种可能的实施方式,所述本行数据,包括:

所述第一个子地址数据外的其它子地址数据、所述第二产品序列号;

当所述本行数据类型为所述其它子地址数据时,所述本行数据类型为扩展线性地址;

当所述本行数据为所述第二产品序列号时,所述本行起始地址为所述第二子地址数据,所述本行数据类型为数据记录。

一种可能的实施方式,将所述第一文件与包含固件的第二文件进行合并,获得第三文件,包括:

去除所述第三文件中结束命令所在行的数据,获得中间数据;

将所述中间数据插入所述第二文件中结束命令所在行之前的任一行,获得所述第三文件。

第二方面,本发明实施例提供了一种产品序列号烧录的装置,包括:

生成单元,用于在接收到电子产品的序列号烧录指令时,从数据库获取第一产品序列号,并转换为与包含固件的第二文件中数据类型相同的第二产品序列号,同时生成包含第二产品序列号和第一烧录地址的第一文件;

合并单元,用于将所述第一文件与包含固件的第二文件进行合并,获得第三文件;

烧录单元,用于将所述第三文件烧录进所述电子产品的微控制单元MCU的指定存储位置。

一种可能的实施方式,所述生成单元还用于:

从所述第一烧录地址的最低字节开始,到所述第一烧录地址的最低字节结束,按预设数据格式构建每行数据,获得所述第一文件。

一种可能的实施方式,所述生成单元还用于:

从所述最低字节开始,向所述最高字节方向,依次获取具有所述第一预设值字节数的子地址数据;

将第一个所述子地址数据和第二产品序列号,按所述预设数据格式构建为所述第一文件中结束命令所在行之前的一行数据;

从第二个所述子地址数据开始,按照所述预设数据格式依次构建为第一文件中的一行数据,直接最后一个所述子地址数据,获得第一文件;其中,包含高字节的所述子地址数据所在行,位于包含低字节的子地址数据之前。

一种可能的实施方式,所述生成单元还用于:

当最后一个所述子地址数据中包含的字节数据小于所述第一预设值时,在所述子地址数据的高位用0补齐。

一种可能的实施方式,所述预设数据格式,包括:

本行数据长度、本行起始地址、本行数据类型、本行数据以及本行数据的校验和。

一种可能的实施方式,所述本行数据,包括:

所述第一个子地址数据外的其它子地址数据、所述第二产品序列号;

当所述本行数据类型为所述其它子地址数据时,所述本行数据类型为扩展线性地址;

当所述本行数据为所述第二产品序列号时,所述本行起始地址为所述第二子地址数据,所述本行数据类型为数据记录。

一种可能的实施方式,所述合并单元用于:

去除所述第三文件中结束命令所在行的数据,获得中间数据;

将所述中间数据插入所述第二文件中结束命令所在行之前的任一行,获得所述第三文件。

第三方面,本发明实施例还提供一种产品序列号烧录的装置,包括:

至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上述第一方面所述的方法。

第四方面,本发明实施例还提供一种可读存储介质,包括:

存储器,

所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上述第一方面所述的方法。

通过本发明实施例的上述一个或多个实施例中的技术方案,本发明实施例至少具有如下技术效果:

在本发明提供的实施例中,通过在接收到电子产品的序列号烧录指令时,从数据库获取第一产品序列号,并转换为与包含固件的第二文件中数据类型相同的第二产品序列号,同时生成包含第二产品序列号和第一烧录地址的第一文件;将第一文件与包含固件的第二文件进行合并,获得第三文件;将第三文件烧录进电子产品的微控制单元MCU的指定存储位置。由于将包含第二产品序列号和第一烧录地址的第一文件,与包含固件的第二文件进行了合并,使得通过一次烧录,便可以将第二产品序列号和固件一起同时写入电子产品的微控制单元MCU的指定存储位置,使得在烧录后无需再对固件进行修改及测试,达到减少工作量、提高烧录效率的技术效果。并且,由于第二产品序列号和固件是合并后一起烧录在电子设备中的,因此可以只使用一个通信接口进行烧录,而不必再向现有技术中那样为单独烧录产品序列号配置单独的通信接口,更无需在MCU中增加数据通信及Flash内部数据擦除和写入功能,有利于批量烧录电子产品的产品序列号和固件。

附图说明

图1为本发明实施例提供的一种产品序列号烧录方法的流程图;

图2为本发明实施例提供的预设数据格式的结构示意图;

图3为本发明实施例提供的一种产品序列号烧录装置的结构示意图。

具体实施方式

本发明实施列提供一种产品序列号烧录的方法、装置及存储介质,用以解决现有技术中存在的烧录产品序列号的效率和准确度低的技术问题。

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

请参考图1,本发明实施例提供一种产品序列号烧录方法,该方法的处理过程如下。

步骤101:在接收到电子产品的序列号烧录指令时,从数据库获取的数据类型为字符型的第一产品序列号,转换为与包含固件的第二文件中数据类型相同的第二产品序列号,并生成包含第二产品序列号和第一烧录地址的第一文件。

为了对电子产品进行批量烧录,可以在烧录设备的数据库中,存储每个电子设备对应的第一产品序列号,及该第一产品序列号将要烧录到电子设备中的第一烧录地址,在数据库中第一产品序列号通常是以字符型的数据类型进行存储的,但也可以是其它的数据类型进行存储,具体不做限定,第一烧录地址是以十六进制的数据类型进行存储的。

在烧录设备接收到电子产品的序列号烧录指令时,从数据库获取第一产品序列号,并转换为与包含固件的第二文件中数据类型相同的第二产品序列号。

例如,数据库中电子设备1的第一产品序列号为BA120001(字符型),包含固件的第二文件中数据的数据类型为十六进制数据,此时需要将第一产品序列号(BA120001)转换为第二产品序列号(十六进制数据):0x42 0x41 0x31 0x32 0x30 0x30 0x30 0x30 0x31(0x代表十六进制),让第二产品序列号的数据类型与第二文件中数据的数据类型相同。

若第一产品序列号的数据类型与第二文件中数据的数据类型相同,则无需转换,在后续的方案中直接用第一产品序列号替换第二产品序列号即可。

之后,便可生成包含第二产品序列号和第一烧录地址的第一文件,可以采用下列方式实现:

从第二产品序列号开始,到第一烧录地址的高地址数据结束,按预设数据格式构建每行数据,获得第一文件,可以采用下列方式实现:

从最低字节开始向最高字节方向,依次获取具有第一预设值字节数的子地址数据,将第一个子地址数据和第二产品序列号,按预设数据格式构建为第一文件中结束命令所在行之前的一行数据;从第二个子地址数据开始,按照预设数据格式依次构建为第一文件中的一行数据,直接最后一个子地址数据,获得第一文件;其中,包含高字节的子地址数据所在行位于包含低字节的子地址数据之前。

当最后一个子地址数据中包含的字节数据小于第一预设值时,在子地址数据的高位用0补齐。

例如,以第二产品序列号为:0x42 0x41 0x31 0x32 0x30 0x30 0x30 0x30 0x31,第一烧录地址为:0x07A120为例,第一预设值为2、第二预设值为1为例。

从第一烧录地址(0x07A120)的最低字节(0x20)开始,向最高字节方向,获取具有2字节数的子地址数据,结果为:第一个子地址数据为0xA120,由于0xA1只有1字节,不足2字节,因此在最后一个子地址数据的高位用0补齐,即最后个子地址数据为0x0007。

由于第一烧录地址(0x07A120)实际只包括了2个子地址数据,第一个为0xA120,第二个为0x0007。

因此将第一个子地址数据0xA120和第二产品序列号,按预设数据格式构建为第一文件中结束命令所在行之前的一行数据;将第二个子地址数据,按预设数据格式构建为第一文件中的一行数据,得到第一文件。

构建好的第一文件内容为:

:02000004

:09

:00000001FF

请参见图2为本发明实施例提供的预设数据格式的结构示意图。

预设数据格式,包括:本行数据长度、本行起始地址、本行数据类型、本行数据以及本行数据的校验和。

本行数据可以是第一个子地址数据之外的其它子地址数据、也可以是第二产品序列号。

当本行数据类型为其它子地址数据时,本行数据类型为扩展线性地址。

当本行数据为第二产品序列号时,本行起始地址为第二子地址数据,本行数据类型为数据记录。

例如,以上述第一文件的内为例,在第一文件中第一行:第一个字节(0x02)表示本行数据长度;第二、三个字节(0x00 0x00)表示本行数据起始地址;第四字个字节(0x04)表示本行数据类型,由于在第一行中的本行数据为子地址数据(0X0007),对应的数据类型用'04'标识,代表扩展线性地址(Extended Linear Address Record:);由于本行的子地址数据包括2个字节所有用第五、六个字节本行数据(0X0007),代表扩展线性地址;最后一个字节(即第七字节)为本行数据的校验和(0xF3),其中,校验和的算法为:检验和=0x100-累加和,累加和(不计进位)为校验和(0xF3)前所有16进制数据按字节累加后不计进位的值。

在第一文件中第二行:第一个字节(0x09)表示本行数据长度;第二、三个字节(0xA1 0x20)表示本行起始地址;第四个字节0x00表示本行数据类型,由于第二行中第二产品序列号为本行数据,因此'00'用来表示本行数据类型;第五至十三字节表示本行数据(即第二产品序列号)。通过第一行和第二行中的子地址数据,可以构成第二产品序列号要写入的地址为0x0700 0000加上0xA120,即实际地址为0x07A120;最后一个字节(即第十四个字节)为本行数据的校验和,校验和的计算方式同第一行中校验和的计算方式。

第一文件的最后一行(00000001FF)为结束命令所在行,即第三行的本行数据长度为00,地址为0000,数据类型为01,校验和为FF结束命令所在行用于标识第二文件的结尾。结束命令所在行使用的数据格式也可以理解为是预设数据格式,由于结束命令所在行中本行数据长度为00,因此最后一行中不包括本行数据,即结束命令所在行使用的数据格式包括以下内容:本行数据长度、本行数据地址,本行数据类型、本行校验和。

又如,第二产品序列号为:0x42 0x41 0x31 0x32 0x30 0x30 0x30 0x30 0x31,第一烧录地址为:0x020507A120为例,第一预设值为2、第二预设值为1为例。

第一烧录地址对应的子地址数据(从第一个开始依次)为:0xA120、0x0507、0x0002。

:02000004

:02000004

:09

:00000001FF

通过上述方式获得第一文件之后,便可执行步骤102。

步骤102:将第一文件与包含固件的第二文件进行合并,获得第三文件。

将第一文件与包含固件的第二文件进行合并可以采用下列方式实现:

去除第三文件中结束命令所在行的数据,获得中间数据;将中间数据插入第二文件中结束命令所在行之前的任一行,获得第三文件。

例如,第一文件的内容为:

:020000040007F3

:09A120004241313230303030315F

:00000001FF

假设要写入电子设备的固件为第二文件的内容,该内容为(在下列文件内容中,为了节约篇幅用X代表省略的文件内容):

:020000040000FA

:1000000020EB00208D04000095040000AD020000EC

:10001000990400009B0400009D0400000000000003

:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

:105CE0002A1A8D041AEF041B412B0419181AA50453

:105CF0001A4D1C1AED0451041890D003A339C200A8

:00000001FF

将第一文件去除结束命令所在行之后的中间数据(下列带下滑线的数据),插入到第二文件中结束命令所在行(即最后一行)之前,则得到的第三文件为:

:020000040000FA

:1000000020EB00208D04000095040000AD020000EC

:10001000990400009B0400009D0400000000000003

:1000200000000000000000000000000015020000B9

:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

:105CE0002A1A8D041AEF041B412B0419181AA50453

:105CF0001A4D1C1AED0451041890D003A339C200A8

:00000001FF

需要说明的是,上述中间数据可以插入第二文件的结束命令所在行之前的任一行,为了节约篇幅在此不再一一举例。

步骤103:将第三文件烧录进电子产品的微控制单元MCU的指定存储位置。

指定存储位置可以是MCU内部Flash,或其它存储空间,具体不做限定。

在本发明提供的实施例中,通过在接收到电子产品的序列号烧录指令时,从数据库获取第一产品序列号,并转换为与包含固件的第二文件中数据类型相同的第二产品序列号,同时生成包含第二产品序列号和第一烧录地址的第一文件;将第一文件与包含固件的第二文件进行合并,获得第三文件;将第三文件烧录进电子产品的微控制单元MCU的指定存储位置。由于将包含第二产品序列号和第一烧录地址的第一文件,与包含固件的第二文件进行了合并,使得通过一次烧录,便可以将第二产品序列号和固件一起同时写入电子产品的微控制单元MCU的指定存储位置,使得在烧录后无需再对固件进行修改及测试,达到减少工作量、提高烧录效率的技术效果。并且,由于第二产品序列号和固件是合并后一起烧录在电子设备中的,因此可以只使用一个通信接口进行烧录,而不必再向现有技术中那样为单独烧录产品序列号配置单独的通信接口,更无需在MCU中增加数据通信及Flash内部数据擦除和写入功能,有利于批量烧录电子产品的产品序列号和固件。

基于同一发明构思,本发明一实施例中提供一种产品序列号烧录的装置,该装置的产品序列号烧录方法的具体实施方式可参见方法实施例部分的描述,重复之处不再赘述,请参见图3,该装置包括:

生成单元301,用于在接收到电子产品的序列号烧录指令时,从数据库获取第一产品序列号,并转换为与包含固件的第二文件中数据类型相同的第二产品序列号,同时生成包含第二产品序列号和第一烧录地址的第一文件;

合并单元302,用于将所述第一文件与包含固件的第二文件进行合并,获得第三文件;

烧录单元303,用于将所述第三文件烧录进所述电子产品的微控制单元MCU的指定存储位置。

一种可能的实施方式,所述生成单元301还用于:

从所述第一烧录地址的最低字节开始,到所述第一烧录地址的最低字节结束,按预设数据格式构建每行数据,获得所述第一文件。

一种可能的实施方式,所述生成单元301还用于:

从所述最低字节开始,向所述最高字节方向,依次获取具有所述第一预设值字节数的子地址数据;

将第一个所述子地址数据和第二产品序列号,按所述预设数据格式构建为所述第一文件中结束命令所在行之前的一行数据;

从第二个所述子地址数据开始,按照所述预设数据格式依次构建为第一文件中的一行数据,直接最后一个所述子地址数据,获得第一文件;其中,包含高字节的所述子地址数据所在行,位于包含低字节的子地址数据之前。

一种可能的实施方式,所述生成单元301还用于:

当最后一个所述子地址数据中包含的字节数据小于所述第一预设值时,在所述子地址数据的高位用0补齐。

一种可能的实施方式,所述预设数据格式,包括:

本行数据长度、本行起始地址、本行数据类型、本行数据以及本行数据的校验和。

一种可能的实施方式,所述本行数据,包括:

所述第一个子地址数据外的其它子地址数据、所述第二产品序列号;

当所述本行数据类型为所述其它子地址数据时,所述本行数据类型为扩展线性地址;

当所述本行数据为所述第二产品序列号时,所述本行起始地址为所述第二子地址数据,所述本行数据类型为数据记录。

一种可能的实施方式,所述合并单元302用于:

去除所述第三文件中结束命令所在行的数据,获得中间数据;

将所述中间数据插入所述第二文件中结束命令所在行之前的任一行,获得所述第三文件。

基于同一发明构思,本发明实施例中提供了一种产品序列号烧录的装置,包括:至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上所述的产品序列号烧录方法。

基于同一发明构思,本发明实施例还提一种可读存储介质,包括:

存储器,

所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上所述的产品序列号烧录方法。

本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

相关技术
  • 一种产品序列号烧录的方法、装置及存储介质
  • 产品序列号文件生成方法、系统、电子装置及存储介质
技术分类

06120112341634