一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

器件升级方法、系统、编程工具、器件和存储介质与流程

2021-10-24 05:08:00 来源:中国专利 TAG:器件 软件更新 编程工具 升级 方法


1.本技术涉及器件软件更新技术领域,尤其涉及一种器件升级方法、系统、编程工具、器件和存储介质。


背景技术:

2.传感器等器件的固件或其他代码需升级的时候,目前通常采用编程工具对器件进行升级,为提高效率,编程工具需要一对多进行升级,由于同种类型器件的固件代码相同,编程工具一般采用广播形式升级,而编程工具接收器大多数是单任务处理模式,同一时间只能处理一条数据,因为这种局限的存在,在对多个器件进行升级的过程中,多个器件的同时应答会导致编程工具的接收产生碰撞现象,导致编程工具无法正常接收升级过程所需的应答,易导致升级失败。


技术实现要素:

3.本技术提供一种器件升级方法、系统、编程工具、器件和存储介质,用于解决编程工具对器件一对多升级中,编程工具无法正常接收升级过程所需的应答,易导致升级失败的技术问题。
4.为解决上述问题,特提供如下技术方案:
5.第一方面,提供了一种器件升级方法,包括:编程工具对多个待升级的器件进行排序,并将排序得到的排序号发送给相应的器件;编程工具广播用于对多个器件进行升级的编程命令;编程工具接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
6.第二方面,提供了一种器件升级方法,包括:器件接收编程工具发送的排序号;器件接收编程工具广播的编程命令,编程命令为用于对器件进行升级的命令;器件依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长;器件按照应答响应时长,对编程命令进行错峰应答。
7.第三方面,提供了一种器件升级系统,包括编程工具和多个器件,其中:编程工具,用于对多个待升级的器件进行排序,将排序得到的排序号发送给相应的器件;广播用于对多个器件进行升级的编程命令;器件,用于接收编程工具广播的编程命令;依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长;按照应答响应时长,对编程命令进行错峰应答,编程工具,用于接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
8.第四方面,提供了一种编程工具,包括:第一处理模块,用于对多个待升级的器件进行排序;第一发送模块,用于将排序得到的排序号发送给相应的器件,广播用于对多个器件进行升级的编程命令;第一接收模块,用于接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
9.第五方面,提供了一种器件,包括:第二接收模块,用于接收编程工具发送的排序
号,接收编程工具广播的编程命令,编程命令为用于对器件进行升级的命令;第二处理模块,用于依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长;第二发送模块,用于按照应答响应时长,对编程命令进行错峰应答。
10.第六方面,提供了一种编程工具,包括通信接口、存储器和处理器,存储器存储有程序代码,处理器,用于调用程序代码,并当程序代码被执行时被布置为实现如前述第一方面任一项的器件升级方法。
11.第七方面,提供了一种器件,包括通信接口、存储器和处理器,存储器存储有程序代码,处理器,用于调用程序代码,并当程序代码被执行时,被布置为实现如前述第二方面任一项的器件升级方法。
12.第八方面,提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时用于实现如前述第一方面任一项的器件升级方法,或实现如前述第二方面任一项的器件升级方法。
13.本技术提出的提供的器件升级方法、系统、编程工具、器件和存储介质所实现的方案中,与传统的方案相比,编程工具先将器件排序后,再发送一系列编程命令,对于编程工具发送的一系列编程命令,器件会按编程工具分配的排序号错峰应答,从而避免了数据碰撞问题,提高了升级成功率。
附图说明
14.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
15.图1是本技术实施例中器件升级系统的一系统结构示意图;
16.图2是本技术实施例中器件升级方法的一交互流程示意图;
17.图3是本技术实施例的器件升级方法中的排序流程示意图;
18.图4是本技术实施例的器件升级方法中编程工具侧的一流程示意图;
19.图5是本技术实施例的器件升级方法中器件侧的一流程示意图;
20.图6是本技术实施例中编程工具的一结构示意图;
21.图7是本技术实施例中器件的一结构示意图;
22.图8是本技术实施例中编程工具的另一结构示意图;
23.图9是本技术实施例中器件的另一结构示意图。
具体实施方式
24.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员本技术前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.本技术提供了一种器件升级系统,如图1所示,该器件升级系统包括编程工具和多个器件,其中,该器件为需要被升级的器件,该编程工具是用于对器件的固件或其他代码进
行升级的装置,该编程工具可以与器件实现通信连接,从而利用通信交互过程完成器件的升级工作。固件就是写入器件的eprom(可擦写可编程只读存储器)、eeprom(电可擦可编程只读存储器)等内存中的程序,例如,具体可以是指写入flash memory(闪存)的程序,固件是指器件内部保存的器件“驱动程序”,通过固件,器件才能按照设定的器件驱动实现特定的运行动作,固件是担任着一个器件比较基础的程序。当然,除了固件外,有些器件还可能装有其他软件,本技术中称为其他代码。
26.其中,在器件升级系统中,编程工具,用于对多个待升级的器件进行排序,将排序得到的排序号发送给相应的器件;广播用于对多个器件进行升级的编程命令;器件,用于接收编程工具广播的编程命令;依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长;按照应答响应时长,对编程命令进行错峰应答,编程工具,用于接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
27.基于上述器件升级系统,本技术中对应提出了器件升级方法,可以指的是对器件的固件或其他代码进行升级的方法,上述器件可以是指任意一种配置有固件的器件,例如,该器件可以是指各种类型的传感器或者其他需配置固件的器件,以传感器为例,示例性的,该传感器可以指的是胎压传感器、流量传感器、位置传感器等传感器,具体本技术不做限定,这里不再一一举例说明,但均在本技术范围内,相应的器件升级时,通常需要对应的编程工具,例如,当为胎压传感器进行固件升级时,该编程工具可以指的是轮胎压力监控系统(tire pressure monitoring system,tpms)编程工具,本技术中简称为tpms编程工具,为便于理解,后续实施例的描述例子中,将均会用tpms编程工具对胎压传感器的固件升级为例进行说明,但此例子并不对本技术造成限定,详见下述实施例。
28.实施例1
29.如图2所示,提供一种器件升级方法,图2为器件升级方法的交互流程示意图,从编程工具和器件两侧交互的角度对该器件升级方法进行说明,主要包括如下步骤:
30.s10:编程工具对多个待升级的器件进行排序。
31.s20:编程工具将排序得到的排序号发送给相应的器件。
32.在编程工具以一对多的方式对器件进行升级时,首先需要对多个待升级的器件进行排序,以得到每个器件相应的排序号,该排序号指示了每个器件的升级顺序。编程工具在得到每个器件相应的排序号后,再将每个器件相应的排序号,反馈给相应的器件。
33.对于器件而言,器件会接收编程工具反馈的排序号。例如,假设器件包括胎压传感器1、胎压传感器2、...、胎压传感器n,可以对这n个胎压传感器进行排序,并将相应的排序号反馈至相应的胎压传感器。
34.s30:编程工具广播用于对多个器件进行升级的编程命令,以使多个器件按分配的排序号依次对编程命令进行错峰应答。
35.编程命令,是在对器件进行升级过程中,所需要向器件发送的命令,通常,一个完整的升级过程中,编程工具需要依次向同个器件发送一系列编程命令,这一系列编程命令中包含升级所需的数据(如升级包),在编程工具向相应的器件反馈相应的排序号,且器件接收到相应的排序号之后,由于是一对多升级方式,编程工具广播用于对多个器件进行升级的编程命令,以使多个器件按分配的排序号依次对编程命令进行错峰应答。
36.s40:器件依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有
不同的应答响应时长。
37.s50:器件按照应答响应时长,对编程命令进行错峰应答。
38.对于每个待升级的器件而言,在编程工具广播用于对多个器件进行升级的编程命令之后,在范围内的每个器件都能接收到编程工具所广播的编程命令,器件在接收到编程命令之后,便可以依据自身的排序号,确定对应的应答响应时长,且不同的排序号对应不同的应答响应时长,随后按照应答响应时长,对编程命令进行错峰应答,从而完成升级过程。
39.可以理解,由于每个器件接收到的排序号不同的,每个器件依据自身对应的排序号所确定出的应答响应时长不同,这样,不同的器件按照自身的应答响应时长,对编程命令进行应答时,会形成错峰应答的形式,使得编程工具也能够错峰接收到不同器件对编程命令进行回应的编程应答数据。对于一系列编程命令,编程工具和器件均能实现相应的错峰处理,编程工具对多个待升级器进行升级的整个过程错峰进行,有效地避免了数据碰撞现象。
40.例如,继续以上述n个胎压传感器为例,对于每个胎压传感器而言,其接收到了编程工具所反馈的排序号,例如,在接收到编程工具广播的某个编程命令a后,这n个胎压传感器依据自身的应答响应时长,依次对该编程命令a进行回应,以将编程应答数据错峰返馈给编程工具,这样,一系列编程命令广播之后,编程工具便能完成对这n个胎压传感器的升级。
41.可以看出,本技术实施例提供的器件升级方法中,与传统的方案相比,将器件进行全部排序后,对于编程工具发送的一系列编程命令,器件会按编程工具分配的排序号错峰应答,从而避免了数据碰撞问题,提高了升级成功率,由于成功了实现了一对多升级,也就有效地提高了升级效率,具有较高的实用性。
42.需要说明的是,作为其中一种示例,上述对器件的具体升级过程,可以采用空中下载(firmware over

the

air,fota)差分升级方式进行,以胎压传感器为例,tpms编程工具通过获取待升级胎压传感器的app bin文件的校验值,将app bin文件的校验值与升级app bin文件进行比较,计算出差异部分,编程工具向通过编程命令方式,向待升级胎压传感器发送差异部分的升级包即可,利用fota差分升级可以提高升级效率,并适用于小内存mcu的器件。
43.需要说明的是,编程工具对多个器件进行排序,并将排序得到的排序号发送给相应的器件的过程,如图3所示,其过程包括如下步骤a

b:
44.a、编程工具对排序广播命令进行广播,该排序广播命令包含应答控制标识,该应答控制标识用于指示多个器件中的未排序器件进行应答。
45.在对多个待升级的器件进行排序的过程,可以通过广播的方式实现。在本技术实施例中,在编程工具的广播命令中,预设了两种对器件的应答进行控制的广播命令。
46.其中一种广播命令,为包含了应答控制标识的排序广播命令,顾名思义,该排序广播命令也是一种广播命令,在广播命令信号接收范围内的器件均能够接收到该排序广播命令,特殊的地方在于,该排序广播命令包括了本技术所定义的应答控制标识,为区别于其他广播命令,在本技术中称为排序广播命令,其中,该应答控制标识用于指示接收到该排序广播命令的未排序器件进行应答。
47.另外一种广播命令,广播命令为包括器件id和排序号的排序号分配广播命令,顾名思义,该排序号分配广播命令也是一种广播命令,在广播命令信号接收范围内的器件也
均能够接收到该排序号分配广播命令,特殊的地方在于,该排序号分配广播命令包括了器件id,为区别于其他广播命令,在本技术中称为排序号分配广播命令,其中,排序号分配广播命令中的器件id,用于指示与器件id匹配的应答器件保存排序号,并对排序号分配广播命令进行应答。
48.可见,综上两种类型的广播命令,本技术会在编程工具的广播命令中,预先设定2种对器件的应答控制,可在广播id中体现,示例性的,广播命令中的id[3],id[4]分别表示广播id的第3位和第4位,上述两种类型的广播命令,可如下所示:
[0049]
第1种应答控制:id[3]==0xff&&id[4]==0xff,用于指示未排序的器件进行应答;
[0050]
第2种应答控制:id[3]==0xxx&&id[4]==0xxx,用于指示只有器件id匹配的应答。
[0051]
在该步骤a中,其中的排序号分配广播命令的用处,将在后续描述中逐渐展开描述,这里编程工具首先对排序广播命令进行广播,举例说明,该排序广播命令t1可如下所示:
[0052]
t1:ff ff ff ff 0b 11 00 ff aa 55 99 66 ff ff 00 0f e9;
[0053]
其中,前4个字节ff ff ff ff为广播id。器件收到包含上述前4个字节为ff ff ff ff的广播命令后,器件就可以确定该广播命令为排序广播命令。
[0054]
另外,需要说明的是,本技术中所指的未排序器件,指的是未被编程工具分配排序号的器件。对于器件而言,会通过判断是否接收过排序号来判断自身是否已经被排序,也就是说,当器件判定为接收到编程工具反馈的排序号,则说明已被排序,该器件会拒绝对排序广播命令进行应答,也即不会响应排序广播命令当前接收到的排序广播命令,当器件判定未接收过编程工具反馈的排序号,则说明未被排序,该器件则采用延时响应方式向编程工具应答包含自身器件id的排序应答数据。其中,器件的延时应答时长,由接收到所述排序广播命令的排序轮次和自身器件id所确定。
[0055]
需要说明的是,器件id是器件的唯一识别id,是器件厂家所配置的id,无特殊情况,一般的器件id均为数字,如有特殊情况,例如器件id是包含非数字字符和数字字符的情况,则本技术的器件id是指其中的数字id,为便于描述,后文描述中均以数字id为例说明。
[0056]
另外需要说明的是,器件的延时应答时长,为何与接收到排序广播命令的排序轮次和自身器件id相关联,一方面,是因为器件接收到的排序广播命令之后,需知道当前接收到的排序广播命令,是某一升级过程最初始的接收到的排序广播命令,还是该某一次升级过程中,除最开始的排序广播命令以外的其他排序广播命令,如果是某次升级过程最初始的接收到的排序广播命令,为第一轮排序,由于距离上一次接收到升级用的广播命令的时间间隔时长通常会比较长,比如20天前升级过,那么是20天前会接收过升级用的广播命令。该次升级过程中除最开始的排序广播命令以外的其他排序广播命令,也即后续的第二轮、第三轮...,那么此次用于升级的广播命令的时间间隔时长一般比较短。因此,对于每个器件而言,依据前一次的排序情况,后续有可能会又多次排序的过程,某个器件可能会多次接收到排序广播命令,器件需依据排序轮次来确定是哪种情况的排序广播命令,从而依据具体情况选择对应具体的延时响应时长策略。
[0057]
因此,当为第一轮排序时,也即接收到的所述排序广播命令为第一轮排序命令,未
排序器件用于采用自身对应的第一延时时长进行应答,当为第一轮排序后面的其他轮排序时,也即当接收到的所述排序广播命令为第一轮排序命令的后续轮排序命令时,未排序器件用于采用自身对应的第二延时时长进行应答;第一延时时长由未排序器件自身对应的器件id所确定,第二延时时长,由未排序器件自身器件id对应的变形id所确定,且未排序器件在不同排序轮次时对应的变形id不同。当接收到排序广播命令的间隔时长超过预设间隔时长时,说明是刚开始升级所接收到的排序广播命令,也即是第一轮排序所发送的排序广播命令,对于排序广播命令辐射范围内的器件而言,均会在第一延时时长后,针对该排序广播命令向编程工具应答包含自身器件id的排序应答数据,特殊的地方在于,不同器件的第一延时时长由器件自身对应的器件id所确定。
[0058]
在一种实施方式中,未排序器件对应的第一延时时长,由器件对应的器件id和预设待升级器件数量上限值确定,具体的,作为其中一种示例,未排序器件对应的第一延时时长可通过如下计算方式确定:n*t;其中,n为未排序器件对应的器件id对预设器件数量上限值取余得到,更为具体的,n为器件根据自身器件id的最后一个字节,对预设器件数量上限值取余得到,t为预设延时周期,t可以依据实际应用场景进行配置,作为一个示例,该t可以为25ms(毫秒)。需要说明的是,除了对预设器件数量上限值取余外,在实际使用中,也可以采用其他经验值进行取余,甚至结合器件id,采用其他计算方式得到第一延时时长,具体本技术不做限定。
[0059]
其中,该预设器件数量上限值,由器件的内存空间大小确定。需要说明的,对于大多数编程工具而言,编程工具一次能够同时编程的器件的个数受限于器件的内存空间的约束,因此,首先要通过器件的内存空间确定编程工具能够同时编程的器件个数上限值,也即预设器件数量上限值。例如,tpms编程工具一次能够同时编程的胎压传感器个数,受限于胎压传感器的mcu flash内存空间的约束,因此,首先要根据胎压传感器mcu flash内存空间确定tpms编程工具能同时编程的传感器个数上限值。
[0060]
这里不妨以胎压传感器mcu的flash内存分成6k bytes app 2kbytes bootloader为例进行说明,由于bootloader(用于引导加载程序)所占内存空间只有2kb,无法实现复杂的防碰撞算法,为了避免数据碰撞,只能设置毫秒延时函数,同时考虑到胎压传感器发送高频应答命令本身的耗时,最终选取支持8个传感器能够一次编程,也即对应的一次能够升级的胎压传感器个数上限值的为8个,上述传感器个数上限值预先写入到胎压传感器中,便于实施本技术提供的器件升级方法。
[0061]
假设实际待升级的胎压传感器为8个,则将8个胎压传感器摆放在tpms编程工具附近,如正上方30cm以内。tpms编程工具首先采用排序广播命令发送t1,这8个胎压传感器接收到该排序广播命令后,进入bootloader模式,由于此时所有胎压传感器都还没有经过排序,这8个胎压传感器都能同时收到该排序广播命令并应答,此时胎压传感器根据自身器件id的最后一个字节,对预设值8(能同时编程的传感器个数上限)取余,余数n(1~7中任一个),进而实现简单应答延时n*25ms,tpms编程工具根据收到胎压传感器的应答先后顺序,进而实行排序。
[0062]
例如,假设8个胎压传感器分别为a,b,c,d,e,f,g,h,胎压传感器接收到上述排序广播命令t1后,通过自身器件id,依据延时函数(n*25),得到胎压传感器c对应的延时时长为0ms,胎压传感器d对应的延时时长为50ms,其余胎压传感器的延时时长相同。在这个例子
可以看出,由于这8个胎压传感器的对应的第一延时时长不同,也就是对排序广播命令的应答快慢不同,成功将使得编程工具会在不同的时间节点收到相应的排序应答数据,编程工具会先接收到胎压传感器c反馈的排序应答数据,再接收到胎压传感器d的排序应答数据,其他排序应答数据无法正常接收。
[0063]
b、编程工具依据接收到的排序应答数据的顺序,对发送排序应答数据的应答器件进行排序。
[0064]
c、编程工具将排序号反馈给相应的应答器件。
[0065]
如前述,不同的胎压传感器应答都会携带自身器件id,tpms编程工具获取c,d的排序应答数据中携带的器件id,编程工具并根据应答先后顺序为id分配对应的排序号,以完成排序,并向已排序的胎压传感器反馈排序号。假设此时得到的第一轮排序的排序结果(设m为排序号,取值1

8),最后的结果可如下所示:
[0066]
c(m:01),d(m:02),a,b,e,f,g,h未排序;
[0067]
因此,编程工具将排序号1和排序号,分别反馈给胎压传感器c和传感器d。
[0068]
在一实施例中,编程工具依据接收到的排序应答数据的顺序,对发送排序应答数据的应答器件进行排序,并将排序号反馈给相应的应答器件,具体指的是:编程工具件分别生成每个应答器件相应的排序号分配广播命令并进行广播,该排序号分配广播命令中包括器件id和排序号,其中,排序号分配广播命令中的器件id用于控制id匹配的应答器件保存所述排序号,并对所述排序号分配广播命令进行应答,以使与所述排序号分配广播命令中的器件id匹配的器件进行应答。
[0069]
如前述,由于tpms编程工具只获取到胎压传感器c和胎压传感器d应答的包含有器件id的排序应答数据,依据上述第一轮的排序结果,tpms编程工具分别生成胎压传感器c和胎压传感器d对应的排序号分配广播命令,其中一条为包含胎压传感器c的器件id和排序号(01)的排序号分配广播命令t2,另一条包括胎压传感器d的器件id和排序号(02)的排序号分配广播命令t3,按照排序,tpms编程工具首先对排序号分配广播命令t2进行广播,此时,依据应答控制,由于排序号分配广播命令t2包含的是胎压传感器c的器件id,因此只有胎压传感器c会应答该排序号分配广播命令t2,接收到胎压传感器c应答的包含有器件id的应答数据后r2后,编程工具再对排序号分配广播命令t3进行广播,同理,此时只有胎压传感器d会用应答数据r3应答该排序号分配广播命令t3。由此,实现了编程工具向传感器c和d分别发送为其分配的排序号的过程,第一轮排序完成。
[0070]
举例说明:
[0071]
t2:c3 3d 84 e6 0b 11 00 ff aa 55 99 66 ff ff 01 0f e9;
[0072]
t2中携带胎压传感器c的器件id:c3 3d 84 e6,排序号01。
[0073]
r2:c3 3d 84 e6 10 51 41 41 42 43 33 33 33 33 33 34 34 34 35 45 47;
[0074]
胎压传感器c应答r2以表示成功接收到排序号。
[0075]
t3:c3 3d 88 99 0b 11 00 ff aa 55 99 66 ff ff 02 0f e9;
[0076]
t3中携带胎压传感器d的器件id:c3 3d 88 99,排序号02。
[0077]
r3:c3 3d 88 99 10 51 41 41 42 43 33 33 33 33 33 34 34 34 35 45 47;
[0078]
胎压传感器c应答r3以表示成功接收到排序号。
[0079]
值得说明的是,在编程工具件生成每个应答器件相应的排序号分配广播命令并进
行广播之后,编程工具件接收到分配应答数据;根据分配应答数据,确定排序号已分配成功的器件。如上述例子,可以根据接收到的分配应答数据r2和r3,分别确定胎压传感器c和d,已经接收到排序号。
[0080]
d、编程工具重复上述步骤a

c,以继续对多个待升级的器件中剩余的未排序的器件分配排序号,直至符合预设排序截止条件。
[0081]
在不满足预设排序截止条件时,编程工具会继续对排序广播命令进行广播,也即会重复上述步骤a

b,直至以继续对多个待升级的器件中剩余的未排序的器件分配排序号,直至符合预设排序截止条件。预设排序截止条件为:多个待升级的器件中已排序的器件数量达到预设器件数量上限值、或者上一次轮次排序后的预设时长内未增加新的器件排序、或者多个待升级的器件的排序总时长达到预设总时长。需要说明的是,上述预设排序截止条件,均是为了能够得到所需的已排序器件而进行的设置。其中,上一次轮次排序后的预设时长内未增加新的器件排序,说明已经排序完毕,会跳出排序流程,预设总时长是一种经验值,也可以事先进行设定,具体不做限定。
[0082]
可以理解,以上述例子为例,tpms编程器一次能够同时编程的胎压传感器上限值为8,在经过第一轮排序,也即仅仅对胎压传感器c和d分配了排序号之后,明显不符合预设截止条件,因为还有6个未排,tpms编程器会继续广播排序广播命令。
[0083]
对于器件而言,此时已经出现两种器件,一种是已分配排序号的器件(c和d),另一种是还未分配排序号的器件(a,b,e,f,g,h),此时,已分配排序号的器件(c和d)将不会对第二轮的排序广播命令进行应答,还未分配排序号的器件(a,b,e,f,g,h)会继续进行应答该第二轮的排序广播命令,具体地,未排序的器件在第二延时时长后,向编程工具应答包含自身器件id的排序应答数据,所述第二延时时长,由所述未排序器件自身器件id对应的变形id所确定,且所述未排序器件在不同排序轮次时对应的变形id不同。
[0084]
更为具体的,作为其中一种示例,未排序器件对应的第二延时时长通过如下计算方式确定:p*t;其中,p为未排序器件的器件id对应的变形id对预设器件数量上限值取余得到,t为预设延时周期,t可以依据实际应用场景进行配置,作为一个示例,该t可以为25ms(毫秒)。需要说明的是,未排序器件对应的变形id,由未排序器件的器件id的最后一个字节左移或右移预设位数后得到,具体不做限定。
[0085]
例如,得到第一轮排序后,tpms编程工具再采用第1种应答控制方式发送广播排序广播命令t4,所有未排序的胎压传感器(a,b,e,f,g,h)收到该命令t4后,将自身器件id的最后一个字节左移一位后(也可右移,移位方向和移位数可灵活设置,这里以左移一位举例),重新对上限值8取余,余数n(1~7中任一个),进而实现简单应答延时n
z
*25ms。例如,未排序的胎压传感器为e,其器件id为(0x25),对8取余,余数是为1,延时1*25ms;再下一次排序时,对胎压传感器e的器件id采取左移方式,胎压传感器e的器件id(0x25)将变成(0x4a),也即,此时胎压传感器为e对应的变形id为(0x4a),对8取余,余数为2,因此,胎压传感器e对应的第二延时时长为2*25ms,通过重新计算应答延时,可以减少未排序传感器应答碰撞的情况。需要说明的是,如若胎压传感器e还继续参与到下一次排序,则胎压传感器e对应的第二延时时长,由上一次排序轮次的变形id(0x4a)的最后一个字节进行左移一位,得到新的变形id,继续参与到此此轮排序的延时时长确定中,其他情况以此类推,这里不一一说明
[0086]
举例说明:
[0087]
t4:ff ff ff ff 0b 11 00 fe aa 55 99 66 ff ff 00 0f e9
[0088]
根据第一轮的排序结果和应答控制,胎压传感器c和d已排序不会应答该排序广播命令t4,传感器a,b,d,e,f,g,h未排序,则传感器a,b,e,f,g,h收到排序广播命令t4后,将自身序列号左移一位,对8取余,假设各个未排序的胎压传感器的变形id对上限值8取余的余数结果为:a(3),b(3),e(1),f(5),g(4),h(7),括号内为余数,则第二轮排序结果为c(m:1),d(m:2),e(m:3),g(m:4),f(m:5),h(m:6),a,b未排序。
[0089]
同样的,胎压传感器每次应答排序广播命令时都会携带自身的器件id,tpms编程工具获取胎压传感器e、g、f和h的排序应答数据中携带的器件id,并根据应答先后顺序为胎压传感器e、g、f和h分配对应的排序号,然后根据e、g、f和h及其对应的排序号,以及上面第2种应答控制,向胎压传感器e、g、f和h分别发送为其分配的排序号,以完成第二轮排序,其中,为其分配的排序号的过程,也可以参阅前述实施例的描述,这里不再展开描述。
[0090]
之后,编程工具再采用第1种应答控制发送排序广播命令t5,如此循环以对未排序的胎压传感器依次排序,直至已排序的器件数量达到预设待升级胎压传感器数量上限值为8个,或上一轮次排序后的预设时长(如2s)内未增加新的传感器排序,或排序总时长达到预设总时长(如15s)时,则结束排序流程。
[0091]
需要说明的是,上一次轮次排序后的预设时长、总时长、器件数量上限值等涉及具体数字的说明,均为举例说明,并不会对本技术造成限定。
[0092]
可以理解,通过上述排序处理过程,由于随着排序轮次的增加,剩余未排序的器件会越来越少,最终数据碰撞的概率会越来越低,有效地提高了升级成功率,解决一对多编程高频通讯数据碰撞的问题,提高升级效率,而且,该防碰撞的处理方式也无需占用很大内存,适用于小内存mcu等器件的处理,具有较强的实用性。
[0093]
实施例2
[0094]
上述实施例1中,从编程工具和器件两端的交互角度进行了描述,如图4所示,这里从编程工具单侧的角度,对本技术实施例进行描述,包括如下步骤:
[0095]
s10a:编程工具对多个待升级的器件进行排序,并将排序得到的排序号发送给相应的器件。
[0096]
s20a:编程工具广播用于对多个器件进行升级的编程命令。
[0097]
s30a:编程工具接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
[0098]
在一实施例中,编程工具对多个待升级的器件进行排序,并将排序得到的排序号发送给相应的器件,包括如下步骤:
[0099]
a、编程工具对排序广播命令进行广播,排序广播命令包含应答控制标识,应答控制标识用于指示多个器件中的未排序器件进行应答;
[0100]
b、编程工具依据接收到的排序应答数据的顺序,对发送排序应答数据的应答器件进行排序;
[0101]
c、编程工具将排序号反馈给相应的应答器件;
[0102]
d、编程工具重复上述步骤a

c,以继续对多个待升级的器件中剩余的未排序器件分配排序号,直至符合预设排序截止条件;
[0103]
其中,未排序器件对排序广播命令采用延时方式应答,且每个未排序器件的延时
应答时长,由接收到排序广播命令的排序轮次和自身器件id所确定。
[0104]
在一实施例中,预设排序截止条件为:多个待升级的器件中已排序的器件数量达到预设器件数量上限值、或者上一次轮次排序后的预设时长内未增加新的器件排序、或者多个待升级的器件的排序总时长达到预设总时长。
[0105]
在一实施例中,编程工具将排序号反馈给相应的已应答排序器件,包括如下步骤:
[0106]
编程工具分别生成与每个应答器件相应的排序号分配广播命令,并对所述排序号分配广播命令进行广播;
[0107]
其中,所述排序号分配广播命令中包括器件id和排序号,所述器件id用于控制id匹配的应答器件保存所述排序号,并对所述排序号分配广播命令进行应答。
[0108]
上述编程工具的更多细节,可以对应参阅前述交互实施例的描述,可以看出,本技术实施例提供的器件升级方法中,与传统的方案相比,编程工具将待升级器件进行全部排序后,编程工具会发送一系列编程命令,使得器件会按编程工具分配的排序号错峰应答,编程工具错峰接收编程应答数据,从而避免了数据碰撞问题,提高了升级成功率,由于成功了实现了一对多升级,也有效地提高了升级效率,具有较高的实用性。
[0109]
实施例3
[0110]
上述实施例1中,从编程工具和器件两端的交互角度进行了描述,实施例2从编程工具侧进行了说明,如图5所示,这里从器件侧的角度,对本技术实施例进行描述,包括如下步骤:
[0111]
s10b:器件接收编程工具发送的排序号。
[0112]
s20b:器件接收编程工具广播的编程命令,编程命令为用于对器件进行升级的命令。
[0113]
s30b:器件依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长。
[0114]
s40b:器件按照应答响应时长,对编程命令进行错峰应答。
[0115]
在一实施例中,器件接收编程工具发送的排序号,包括如下步骤:
[0116]
器件接收编程工具发送的排序广播命令,排序广播命令包含应答控制标识,应答控制标识用于指示多个器件中的未排序器件进行应答;
[0117]
器件判断是否已经接收到编程工具反馈的排序号;
[0118]
当器件判定未接收到编程工具反馈的排序号,则采用延时响应方式向编程工具应答包含自身器件id的排序应答数据,其中,器件的延时应答时长,由接收到排序广播命令的排序轮次和自身器件id确定;
[0119]
器件接收编程工具反馈的排序号,排序号为编程工具根据接收到的排序应答数据的顺序,对发送排序应答数据的应答器件进行排序后得到的排序号。
[0120]
在一实施例中,当判定已接收到编程工具反馈的排序号,器件拒绝对排序广播命令进行应答。
[0121]
在一实施例中,器件采用延时响应方式向编程工具应答包含自身器件id的排序应答数据,包括如下步骤:当接收到的排序广播命令为第一轮排序命令,器件在第一延时时长后,向编程工具应答包含自身器件id的排序应答数据,第一延时时长由自身器件id和预设器件数量上限值所确定;当接收到的排序广播命令为第一轮排序命令后续的其他轮排序命
令,器件在第二延时时长后,向编程工具应答包含自身器件id的排序应答数据,第二延时时长,由自身器件id对应的变形id和预设器件数量上限值所确定。
[0122]
在一实施例中,器件通过n*t确定第一延时时长,通过p*t确定第二延时时长;其中,n为器件的器件id对预设器件数量上限值取余得到,p为器件当前轮次对应的变形id对预设器件数量上限值取余得到,t为预设延时周期。在一实施例中,器件对应的变形id,由器件id的最后一个字节左移或右移预设位数后得到。
[0123]
可以看出,本技术实施例提供的器件升级方法中,与传统的方案相比,器件可以接收到编程工具反馈的排序号,这样,器件接收到编程工具反馈的编程指令后,器件会按编程工具分配的排序号错峰应答,从而避免了数据碰撞问题,提高了升级成功率。
[0124]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0125]
实施例4
[0126]
在一实施例中,提供一种编程工具,该编程工具可以是tpms编程工具等编程工具,该编程工具与上述实施例中器件升级方法中的编程工具一一对应。如图6所示,该编程工具包括第一处理模块101、第一发送模块102和第一接收模块103。各功能模块详细说明如下:第一处理模块101,用于对多个待升级的器件进行排序;第一发送模块102,用于将排序得到的排序号发送给相应的器件,广播用于对多个器件进行升级的编程命令;第一接收模块103,用于接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
[0127]
在一实施例中,第一处理模块101用于实现如下步骤:a、对排序广播命令进行广播,排序广播命令包含应答控制标识,应答控制标识用于指示多个器件中的未排序器件进行应答;b、依据接收到的排序应答数据的顺序,对发送所述排序应答数据的应答器件进行排序;第一发送模块102,用于:c、将排序号反馈给相应的应答器件;编程工具通过第一处理模块101和发送模块102,重复上述步骤a

c,以继续对多个待升级的器件中剩余的未排序器件分配排序号,直至符合预设排序截止条件。
[0128]
在一实施例中,预设排序截止条件为:多个待升级的器件中已排序的器件数量达到预设器件数量上限值、或者上一次轮次排序后的预设时长内未增加新的器件排序、或者多个待升级的器件的排序总时长达到预设总时长。
[0129]
在一实施例中,第一处理模块101具体用于:分别生成每个应答器件相应的排序号分配广播命令,其中,所述排序号分配广播命令中包括器件id和排序号,所述器件id用于控制id匹配的应答器件保存所述排序号,并对所述排序号分配广播命令进行应答;第一发送模块102,具体用于:对所述排序号分配广播命令进行广播,以使与排序号分配广播命令中的器件id匹配的器件进行应答。
[0130]
在一实施例中,提供一种器件,该器件可以是胎压传感器等器件,该器件与上述实施例中器件升级方法中的器件一一对应。如图7所示,该器件包括第二接收模块201、第二处理模块202和第二发送模块203。各功能模块详细说明如下:第二接收模块201,用于接收编程工具发送的排序号,接收编程工具广播的编程命令,编程命令为用于对器件进行升级的命令;第二处理模块202,用于依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长;第二发送模块203,用于按照应答响应时长,对编程命令
进行错峰应答。
[0131]
在一实施例中,第二接收模块201用于:接收编程工具发送的排序广播命令,排序广播命令包含应答控制标识,应答控制标识用于指示多个器件中的未排序器件进行应答;第二处理模块202用于:判断是否已经接收到编程工具反馈的排序号;第二发送模块203,用于当判定未接收到编程工具反馈的排序号,则采用延时响应方式向编程工具应答包含自身器件id的排序应答数据,其中,器件的延时应答时长,由接收到排序广播命令的排序轮次和自身器件id确定;第二接收模块201用于:接收编程工具反馈的排序号,排序号为编程工具根据接收到的排序应答数据的顺序,对发送所述排序应答数据的应答器件进行排序后得到的排序号。
[0132]
在一实施例中,第二处理模块202用于:当所述器件判定已接收到所述编程工具反馈的排序号,则不响应所述排序广播命令。
[0133]
在一实施例中,第二发送模块203用于:当接收到的排序广播命令为第一轮排序命令,在第一延时时长后,向编程工具应答包含自身器件id的排序应答数据,第一延时时长由自身器件id和预设器件数量上限值所确定;当接收到的排序广播命令为第一轮排序命令后续的其他轮排序命令,在第二延时时长后,向编程工具应答包含自身器件id的排序应答数据,第二延时时长,由自身器件id对应的变形id和预设器件数量上限值所确定,且在不同排序轮次对应的变形id不同。
[0134]
在一实施例中,第二处理模块202用于:通过n*t确定第一延时时长,通过p*t确定第二延时时长;其中,n为器件的器件id对预设器件数量上限值取余得到,p为器件当前轮次对应的变形id对预设器件数量上限值取余得到,t为预设延时周期。
[0135]
在一实施例中,器件对应的变形id,由器件id的最后一个字节左移或右移预设位数后得到。
[0136]
关于编程工具和器件的具体限定,可以参见上文中对于器件升级方法的有关限定,在此不再赘述。上述编程工具和器件中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于编程工具或器件中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0137]
实施例5
[0138]
在一个实施例中,提供了一种编程工具,该编程工具可以是tpms编程工具,其内部结构图可以如图8所示。该编程工具包括通过系统总线连接的处理器、存储器和通信接口。其中,该编程工具的处理器用于提供计算和控制能力。该编程工具的存储器包括非易失性存储介质和/或易失性存储介质、以及内存储器、该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该编程工具的通信接口用于与外部的器件通过网络连接通信。该计算机程序被处理器执行时以实现一种器件升级方法中编程工具侧的步骤或功能。
[0139]
在一个实施例中,提供了一种器件,该器件可以是胎压传感器,其内部结构图可以如图9所示。该器件包括通过系统总线连接的处理器、存储器和通信接口。其中,该器件的处理器用于提供计算和控制能力。该器件的存储器包括非易失性存储介质和/或易失性存储介质、以及内存储器、该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非
易失性存储介质中的操作系统和计算机程序的运行提供环境。该器件的通信接口用于与外部的编程工具通过网络连接通信。该计算机程序被处理器执行时以实现一种器件升级方法中器件侧的步骤或功能。
[0140]
在一个实施例中,提供了一种编程工具,包括通信接口、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:对多个待升级的器件进行排序;调用通信接口将排序得到的排序号发送给相应的器件;调用通信接口广播用于对多个器件进行升级的编程命令;通过通信接口接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
[0141]
在一个实施例中,提供了一种器件,包括通信接口、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:通过通信接口接收编程工具发送的排序号;接收编程工具广播的编程命令,编程命令为用于对器件进行升级的命令;依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长;按照应答响应时长,利用通信接口对编程命令进行错峰应答。
[0142]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0143]
对多个待升级的器件进行排序;调用通信接口将排序得到的排序号发送给相应的器件;调用通信接口广播用于对多个器件进行升级的编程命令;通过通信接口接收多个器件按分配的排序号依次对编程命令进行错峰应答的编程应答数据。
[0144]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0145]
通过通信接口接收编程工具发送的排序号;接收编程工具发送的编程命令,编程命令为用于对器件进行升级的命令;依据排序号,确定对编程命令的应答响应时长,其中,不同的排序号具有不同的应答响应时长;按照应答响应时长,利用通信接口对编程命令进行错峰应答。
[0146]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来命令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
[0147]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
[0148]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实
施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜