一种在线编程方法及装置与流程

文档序号:12718996阅读:192来源:国知局
一种在线编程方法及装置与流程

本发明涉及软件编程技术领域,特别是涉及一种在线编程方法及装置。



背景技术:

电子产品的在线编程目前有两种实现方法:ISP(In-system Programming,在系统编程)和IAP(In Application Programming,在应用编程)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。

电子产品的MCU的Flash(程序存储区)通常被分为3块:Bootloader(引导装载程序)区、Application(应用程序)区和Flag(标志)区。现有技术中,对电子产品在线编程时,通常先通过ISP的方式将第一Hex文件注入Bootloader区,然后运行Bootloader部分的代码,使用IAP的方式将第二Hex文件注入Application区,从而实现对电子产品的在线编程。

发明人在对现有技术的研究过程中发现,现有技术的方案需要采用ISP与IAP组合的方式才能实现对电子产品的在线编程,然而,对于一些低功耗的电子产品或者通讯速率较低的电子产品,由于IAP过程本身效率较低,所以ISP与IAP组合编程的方式会使得编程过程的时间相当长、而且操作也不方便,生产效率较低。



技术实现要素:

为解决上述技术问题,本发明实施例提供了一种在线编程方法及装置,以解决现有技术中在线编程时间长的问题,技术方案如下:

一种在线编程方法,包括:

获取第一Hex文件及第二Hex文件;

获取所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息,所述有效信息为编程时所用到的信息;

创建第三Hex文件,所述第三Hex文件包括所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息;

通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程。

优选地,通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程之前,还包括:

根据预先设计的IAP的实现方式,向所述第三Hex文件中添加符合Hex文件规定的标志位。

优选地,还包括:

向所述第三Hex文件中添加结束标识信息。

优选地,还包括:

判断所述第三Hex文件中的信息是否有效;

若是,执行通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程的步骤。

优选地,所述判断所述第三Hex文件中的信息是否有效,包括:

将所述第三Hex文件中的信息与所述第一Hex文件及所述第二Hex文件中的有效信息进行对比,判断所述第三Hex文件是否包含所述第一Hex文件中的有效信息及所述第二Hex文件中的有效信息。

一种在线编程装置,包括:

第一获取单元,用于获取第一Hex文件及第二Hex文件;

第二获取单元,用于获取所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息,所述有效信息为编程时所用到的信息;

创建单元,用于创建第三Hex文件,所述第三Hex文件包括所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息;

编程单元,用于通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程。

优选地,还包括:

第一添加单元,用于通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程之前,根据预先设计的IAP的实现方式,向所述第三Hex文件中添加符合Hex文件规定的标志位。

优选地,还包括:

第二添加单元,用于向所述第三Hex文件中添加结束标识信息。

优选地,还包括:

判断单元,用于判断所述第三Hex文件中的信息是否有效;

执行单元,用于当所述判断单元确定所述第三Hex文件中的信息有效时,执行通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程的步骤。

优选地,所述判断单元,包括:

判断子单元,用于将所述第三Hex文件中的信息与所述第一Hex文件及所述第二Hex文件中的有效信息进行对比,判断所述第三Hex文件是否包含所述第一Hex文件中的有效信息及所述第二Hex文件中的有效信息。

本申请实施例提供的技术方案,通过创建第三Hex文件,并将第一Hex文件与第二Hex文件合并至第三Hex文件中,从而实现了只通过ISP方式对Bootloader区及Application区进行编程,以此节省了电子产品的编程过程耗费的时间,提高了生产效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的一种在线编程方法的一种流程示意图;

图2为本发明实施例所提供的一种在线编程方法的另一种流程示意图;

图3为本发明实施例所提供的一种在线编程装置的一种结构示意图;

图4为本发明实施例所提供的一种在线编程装置的另一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在介绍本申请实施例之前,先对Hex文件进行简单介绍:

Hex文件作为文本文件,包含地址和数据,它的格式如下:

Hex整个文件以行为单位,每行以冒号开头,内容全部为十六进制码(以ASCII码显示)。Hex文件的每一行按照如下方法理解内容,例如:

:020000040000FA,可以看做0x02 0x00 0x00 0x04 0x00 0x00 0xFA;

其中,冒号后第一个0x02,表示数据长度为2;第二个和第三个0x00 0x00,表示地址为0x0000;第四个0x04,表示数据类型,有以下几类:

“00”:数据记录

“01”:文件结束记录

“02”:扩展段地址记录

“03”:开始段地址记录

“04”:扩展线性地址记录

“05”:开始线性地址记录

第五个之后的0x00 0x00,表示数据;

最后一个0xFA,表示校验码,每行的最后一个是校验码,校验码计算方式为取各字节的二进制算术和,不计超出256的溢出值,然后用0x100减去算术和得到校验码。

由于每行标识数据地址的只有2Byte,所以数据地址所包含的数据最大只能到64KB,为了保存高地址的数据,就需要扩展线性地址记录。如果这行的数据类型是0x04,那么,这行的数据就是随后数据的基地址。例如:

:020000040005F6;

:1000000018F09FE518F09FE518F09FE518F09FE5C0;

:1000100018F09FE5805F20B9F0FF1FE518F09FE51D;

第一行,是扩展线性历史记录,里面的数据0x0005就是基地址;第二行是数据记录,里面的地址值是0x0000,那么数据18F09FE518F09FE518F09FE518F09FE5要写入FLASH中的地址为(0x0005<<16)|0x0000,也就是写入FLASH的0x50000这个地址。同样,第三行的数据的写入地址为0x50000。当一个Hex文件的数据超过64KB的时候,文件中就会出现多个扩展线性地址。

文件结束记录是每一个Hex文件的最后一行。例如:

:00000001FF;

这样的一行数据内容是固定的,数据长度为0,地址为0。

一般的在线编程过程就是计算机通过读取Hex文件,按照MCU的规定协议发送给MCU,然后MCU按照上述Hex文件的格式,解析出地址以及该地址内对应的数据,将数据写入Flash中规定的区域。

请参阅图1,图1为本申请实施例提供的一种在线编程方法的一种实现流程图,所述方法包括:

步骤S101、获取第一Hex文件及第二Hex文件;

第一Hex文件可以为Bootloader.hex文件,第二Hex文件可以为Application.hex。

第一Hex文件指的是,现有技术中采用ISP方式对Bootloader区进行编程时所使用的Hex文件;第二Hex文件指的是,现有技术中采用IAP方式对Application区编程时所使用的Hex文件。

其中,使用第一Hex文件对Bootloader区编程指的是,解析第一Hex文件中的地址以及地址所对应的数据,并将解析出的数据写入Bootloader区中,同理地,使用第二Hex文件对Application区编程指的是,解析第二Hex文件中的地址以及地址所对应的数据,并将解析出的数据写入Application区中。

步骤S102、获取所述第一Hex文件里的有效信息及所述第二Hex文件里的有效信息;

所述有效信息为编程时所用到的信息,如所述有效信息可以为所述第一Hex文件或第二Hex文件里除结束行之外的信息。

步骤S103、创建第三Hex文件,所述第三Hex文件包括所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息;

需要说明的是,创建的第三Hex文件也可以是不包括第一Hex文件中的有效信息及所述第二Hex文件里的有效信息的空白文档,此时,创建第三Hex文件的步骤可以在步骤S101之前执行,也可以在步骤S101与步骤S102之间执行。当通过步骤S101及步骤S102获取第一Hex文件中的有效信息及所述第二Hex文件里的有效信息后,可以将获取的第一Hex文件中的有效信息及第二Hex文件里的有效信息添加至第三Hex文件中。

在获取到第一Hex文件及第二Hex文件的有效信息后,将该有效信息放入到创建的第三Hex文件中,以利用第三Hex文件对Bootloader区及Application区进行编程。

以下举例说明实际应用时,步骤S101-步骤S103的实现:

创建空白文本文档,以将其作为第三Hex文件,同时将其重命名为BT+APP.hex,通过记事本打开第一Hex文件,即Bootloader.hex文件,将表示文件结束的最后一行“:00000001FF”删除,并全选复制第一Hex文件中其它的行至BT+APP.hex文件中,同样地,对于第二Hex文件,即Application.hex文件,也将其除表示文件结束的最后一行之外的其它行全选复制到BT+APP.hex文件中。

步骤S104、通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程。

本申请实施例提供的技术方案,通过创建第三Hex文件,并将第一Hex文件与第二Hex文件合并至第三Hex文件中,从而实现了只通过ISP方式对Bootloader区及Application区进行编程,以此节省了电子产品的编程过程耗费的时间,提高了生产效率。

请参阅图2,图2为本申请实施例提供的一种在线编程方法的一种实现流程图,所述方法包括:

步骤S201、获取第一Hex文件及第二Hex文件;

步骤S202、获取所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息;

步骤S203、创建第三Hex文件,所述第三Hex文件包括所述有效信息;

步骤S204、根据预先设计的IAP的实现方式,向所述第三Hex文件中添加符合Hex文件规定的标志位;

由于本申请的第三Hex文件是由第一Hex文件与第二Hex文件生成的,而并不是由编译器直接生成的,所以,根据用户的需要,还可以在第三Hex文件中添加所需要的标志位。

由于现有技术中只在采用IAP方式编程时才用到标志位,所以,本实施例通过IAP的实现方式确定需要向第三Hex文件中添加的标志位。

以在地址0x8006010加入的标志位0x5533为例说明:

每次系统上电或重启时,bootloader会读取地址0x8006010的值,若其值为0x5533,则跳转到Application中运行。

执行IAP的在线编程时,首先需要擦除地址0x8006010的值0x5533,然后系统重启。由于已擦除地址0x8006010的值0x5533,所以bootloader不能检测到0x5533,从而程序不能跳转执行Application区中的代码,当IAP的在线编程完成后,重新在0x8006010写入0x5533,然后程序跳转至Application区运行。

可见,在执行IAP的在线编程时,会写入标志位,所以,根据IAP的实现方式,可以确定需要添加的标志位。

在添加标志位时,需要按照Hex文件的规定确定标志位的写入地址和长度,并计算标志位对应的扩展线性地址和地址。

比如要在地址0x8006010加入标志位0x5533,在地址0x8010020加入标志位0x01,则第一个标志位0x5533的扩展线性地址为0x800,基地址为0x6010,数据长度为2,所以要加入的行是:

:020000040800F2(校验码F2=0x100-0x2-0x4-0x8)

:02601000553306

那么标志位0x01对应的Hex行是:

:020000040801F1

:0100200001DE。

步骤S205、向所述第三Hex文件中添加结束标识信息;

由于复制到第三Hex文件中的信息只是第一Hex文件与第二Hex文件中的有效信息,所以,还需要向第三Hex文件中添加结束标识信息。

另外,如果想在Flash中加入其它的产品信息,如设备号,生产日期等,均可按照标志位的方式加入到第三Hex文件中。

步骤S206、将所述第三Hex文件中的信息与所述第一Hex文件及所述第二Hex文件中的有效信息进行对比,判断所述第三Hex文件是否包含所述第一Hex文件及所述第二Hex文件中的有效信息,若是,执行步骤S207;

由于在将第一Hex文件中的有效信息与第二Hex文件中的有效信息合并到第三Hex文件中时,有可能存在因误操作造成对有效信息的破坏,所以,在利用第三Hex文件进行编程之前,需要通过文本对比工具将第三Hex文件种的信息与第一Hex文件及第二Hex文件中的有效信息进行对比,以判断第三Hex文件中是否包含了第一Hex文件及第二Hex文件中的有效信息。

步骤S207、通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程。

可选的,步骤S201-S203的执行过程与上述实施例提供的步骤S101-S103的执行过程相同,有关步骤S201-S203的详细过程,请参见上述对步骤S101-S103的描述,在此不做赘述。

本申请实施例提供的技术方案,通过创建第三Hex文件,并将第一Hex文件与第二Hex文件合并至第三Hex文件中,从而实现了只通过ISP方式对Bootloader区及Application区进行编程,以此节省了电子产品的编程过程耗费的时间,提高了生产效率。另外,采用本实施例的方案,可以根据用户的需求添加需要的标志位,提高了用户体验。

请参阅图3,图3为本申请实施例提供的在线编程装置的一种结构示意图,该装置结构示意图中的各单元的工作过程参照图1对应的实施例中方法的执行过程,该装置包括:

第一获取单元301,用于获取第一Hex文件及第二Hex文件;

第二获取单元302,用于获取所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息,所述有效信息为编程时所用到的信息;

创建单元303,用于创建第三Hex文件,所述第三Hex文件包括所述有效信息;

编程单元304,用于通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程。

本申请实施例提供的技术方案,通过创建第三Hex文件,并将第一Hex文件与第二Hex文件合并至第三Hex文件中,从而实现了只通过ISP方式对Bootloader区及Application区进行编程,以此节省了电子产品的编程过程耗费的时间,提高了生产效率。

请参阅图4,图4为本申请实施例提供的在线编程装置的一种结构示意图,该装置结构示意图中的各单元的工作过程参照图2对应的实施例中方法的执行过程,该装置包括:

第一获取单元401,用于获取第一Hex文件及第二Hex文件;

第二获取单元402,用于获取所述第一Hex文件中的有效信息及所述第二Hex文件里的有效信息,所述有效信息为编程时所用到的信息;

创建单元403,用于创建第三Hex文件,所述第三Hex文件包括所述有效信息;

第一添加单元404,用于通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程之前,根据预先设计的IAP的实现方式,向所述第三Hex文件中添加符合Hex文件规定的标志位。

第二添加单元405,用于向所述第三Hex文件中添加结束标识信息。

判断子单元406,用于将所述第三Hex文件中的信息与所述第一Hex文件及所述第二Hex文件中的有效信息进行对比,判断所述第三Hex文件是否包含所述第一Hex文件中的有效信息及所述第二Hex文件中的有效信息。

编程单元407,用于通过ISP方式、利用所述第三Hex文件对所述Bootloader区及所述Application区编程。

本申请实施例提供的技术方案,通过创建第三Hex文件,并将第一Hex文件与第二Hex文件合并至第三Hex文件中,从而实现了只通过ISP方式对Bootloader区及Application区进行编程,以此节省了电子产品的编程过程所耗费的时间,提高了生产效率。另外,采用本实施例的方案,可以根据用户的需求添加需要的标志位,提高了用户体验。

对于装置或系统实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置或系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,在没有超过本申请的精神和范围内,可以通过其他的方式实现。当前的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本申请的目的。例如,所述单元或子单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或多个子单元结合一起。另外,多个单元可以或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

另外,所描述系统,装置和方法以及不同实施例的示意图,在不超出本申请的范围内,可以与其它系统,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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