本发明涉及电子技术领域,尤其涉及一种提高数据传输效率的方法。
背景技术:
随着嵌入式产品功能变得强大,需要采用多芯片方案才能完成产品要求,多芯片之间的协作通过大量数据(命令)交换完成,每一次数据发送都需要经过启动、发送、结束的步骤。因此,如需发送多个命令命令,则芯片对应的发送端需要频繁的启动和结束,影响数据交换的效率,并且发送时数据量的大小也影响数据交换的效率,这种数据交换的效率对整个系统运行负载能力影响比较大,提高数据交换的效率对于提高系统运行效率、提高系统可靠性和产品性能提升意义重大。
技术实现要素:
本发明为了解决上述技术问题,提供了一种提高数据传输效率的方法,包括以下步骤:
s1、获取待发送命令的数量、长度或类型的信息;
s2、根据获取的信息,按预设的程序对待发送命令进行打包,获得发送包;
所述发送包的格式包括普通格式或高效格式中的一种,所述普通格式包括命令id和n个数据段;所述高效格式包括命令id、n个数据段和有效标识位;所述n为大于2的正整数。
进一步的,所述步骤s1和s2具体为:
sa1、获取待发送命令的数量p';
sa2、当数量p'大于预设值p时,将待发送命令的id通过高效格式的命令id和有效标识位表示,并将p'条待发送命令的数据段赋值到高效格式的数据段中,获得发送包。
进一步的,所述步骤sa2中将待发送命令的id通过高效格式的命令id和有效标识位表示,并将待发送命令的数据段赋值到高效格式的数据段中,具体为:
sa21、选择待发送命令中的一个命令的id赋值到高效格式的命令id中,并以该待发送命令为基准命令,其他待发送命令表示为第id+i条命令,然后将对应的有效标识位xi置为有效位;
sa22、根据命令id以及有效标识位xm依次将待发送命令的数据段赋值到高效格式的数据段中。
进一步的,所述步骤s1和s2具体为:
sb1、获取待发送命令的类型;
sb2、若待发送命令的类型与已发送命令的类型均不相同,则将待发送命令直接作为发送包,否则将待发送命令的id赋值到高效格式的命令id中;
sb3、比较待发送命令的数据段和已发送命令的数据段,找出不同的数据段并将高效格式的对应的有效标识位置为有效位,直到所有数据段比较完毕;在找出待发送命令的不同的数据段后还要将其赋值到高效格式的数据段中。
进一步的,在所述步骤sb2中将待发送命令的id赋值到高效格式的命令id中的之前还包括:
sc1、获取待发送命令的长度q';
sc2、当长度q'小于预设值q时,则将待发送命令直接作为发送包。
进一步的,所述步骤sb3的具体步骤包括:
sb31、将待发送命令的a段数据段与已发送命令的a段数据段比较,当待发送命令的第j段数据段与已发送命令的第j数据段不同时,将对应的有效标识位xj置为有效位,并将待发送命令的第j段数据段赋值到高效格式的数据段中;
sb32、当j的值与a的值相等时,即完成待发送命令的打包,获得发送包。
进一步的,所述高效格式还包括格式标识位,所述格式标识位用于区分高效格式中的数据是压缩格式还是复合格式,所述步骤s1和s2具体为:
sd1、初始化格式标识位、命令id、有效标识位和n个数据段;
sd2、获取待发送命令的数量p',当数量p'大于预设值p时,进入步骤sd3,否则,进入步骤sd6;
sd3、将格式标识位置为复合格式有效位;
sd4、选择待发送命令中的一个命令的id赋值到高效格式的命令id中,并以该待发送命令为基准命令,其他待发送命令表示为第id+i个命令,然后将对应的有效标识位xi置为有效位;
sd5、根据命令id以及有效标识位xm依次将待发送命令的数据段赋值到高效格式的数据段中,进入步骤sd13;
sd6、获取待发送命令的长度q',当长度q'大于预设值q时,进入步骤sd7,否则,进入步骤sd12;
sd7、获取待发送命令的类型,若存在已发送命令的类型与待发送命令的类型相同时,进入步骤sd8,否则,进入步骤sd12;
sd8、将格式标识位置为压缩格式有效位;
sd9、将待发送命令的id赋值到高效格式的命令id中;
sd10、将待发送命令的a段数据段与已发送命令的a段数据段比较,当待发送命令的第j段数据段与已发送命令的第j数据段不同时,将对应的有效标识位xj置为有效位,并将待发送命令的第j段数据段赋值到高效格式的数据段中;
sd11、当j的值与a的值相等时,进入步骤sd13;
sd12、将待发送命令直接作为发送包;
sd13、完成待发送命令的打包,获得发送包。
进一步的,所述普通格式为命令id和n个数据段依次设置,所述高效格式为格式标识位、命令id、有效标识位和n个数据段依次设置。
进一步的,在所述步骤s1之前还包括:
初始化高效格式。
进一步的,所述格式标识位占用2个bit位,分别为b1和b2,所述有效标识位占用m个bit位,所述m为大于2的正整数。
本发明具有以下有益效果:
1、兼容已有通信方式,同时支持单命令压缩方式和复合命令方式传送;
2、对单个通信命令,可采用压缩方式传送,仅仅传送改变参数,提高传送的效率;
3、对多个通信命令,可多个命令组合为一个命令传送,减少通信次数;
4、对需要信息交换的不同种通信,这种方式都可使用。
附图说明
图1为本发明发送包的普通格式的结构示意图;
图2为本发明发送包的高效格式的结构示意图;
图3为本发明实施例1复合格式的发送包;
图4为本发明实施例2压缩格式的发送包;
图5为本发明提高数据传输效率的方法的一实施例的流程示意图;
图6为本发明实施例3复合格式的发送包。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征更易被本领域技术人员理解,从而对本发明的保护范围作出更为清楚的界定。在以下实施例中,提高数据传输效率方法中发送包的格式参照图1和图2所示。所述发送包的格式包括普通格式或高效格式中的一种,所述普通格式包括命令id和n个数据段;所述高效格式包括命令id、n个数据段和有效标识位;所述n为大于2的正整数。
实施例1:
本实施例中的提高数据传输效率方法包括以下步骤:
sa1、获取待发送命令的数量p';
sa2、当数量p'大于预设值p时,选择待发送命令中的一个命令的id赋值到高效格式的命令id中,并以该待发送命令为基准命令,其他待发送命令表示为第id+i条命令,然后将对应的有效标识位xi置为有效位;
sa3、根据命令id以及有效标识位xm依次将待发送命令的数据段赋值到高效格式的数据段中,完成待发送命令的打包,获得发送包。
实施时,可将预设值p设为1,当存在2条待发送命令时,即需要采用复合格式发送数据,以达到提高数据传输效率的目的。假设待发送命令分别为具有两个数据段的第7条命令和具有三个数据段的第10条命令,可以第7条命令为基准命令,则第10条命令表示为第id+3条命令,将有效位设为1,则打包好的发送包可参照图3所示。
实施例2:
本实施例中的提高数据传输效率方法包括以下步骤:
sb1、获取待发送命令的类型;
sb2、若待发送命令的类型与已发送命令的类型均不相同,则将待发送命令直接作为发送包,否则将待发送命令的id赋值到高效格式的命令id中;
sb3、将待发送命令的a段数据段与已发送命令的a段数据段比较,当待发送命令的第j段数据段与已发送命令的第j数据段不同时,将对应的有效标识位xj置为有效位,并将待发送命令的第j段数据段赋值到高效格式的数据段中(也可以在所有数据段比较完成后,再根据命令id以及xm依次将待发送命令的数据段赋值到高效格式的数据段中);
sb4、当j的值与a的值相等时,即完成待发送命令的打包,获得发送包。
假设待发送命令为具有具有三个数据段的第10条命令,而之前已发送过第10条命令,但这次的第10条命令的第二个数据段与之前的不同,则可采用压缩格式发送数据,以达到提高数据传输效率的目的,将有效位设为1,其打包好的发送包可参照图4所示。另外,在本实施例中,在所述步骤sb2中将待发送命令的id赋值到高效格式的命令id中的之前还可以设置判断待发送命令长短的步骤,以便更好的使用压缩格式:
sc1、获取待发送命令的长度q';
sc2、当长度q'小于预设值q时,则将待发送命令直接作为发送包。
实施例3:
参照流程图5,本实施例中的提高数据传输效率方法包括以下步骤:
sd1、初始化格式标识位、命令id、有效标识位和n个数据段;
sd2、获取待发送命令的数量p',当数量p'大于预设值p时,进入步骤sd3,否则,进入步骤sd6;
sd3、将格式标识位置为复合格式有效位;
sd4、选择待发送命令中的一个命令的id赋值到高效格式的命令id中,并以该待发送命令为基准命令,其他待发送命令表示为第id+i个命令,然后将对应的有效标识位xi置为有效位;
sd5、根据命令id以及有效标识位xm依次将待发送命令的数据段赋值到高效格式的数据段中,进入步骤sd13;
sd6、获取待发送命令的长度q',当长度q'大于预设值q时,进入步骤sd7,否则,进入步骤sd12;
sd7、获取待发送命令的类型,若存在已发送命令的类型与待发送命令的类型相同时,进入步骤sd8,否则,进入步骤sd12;
sd8、将格式标识位置为压缩格式有效位;
sd9、将待发送命令的id赋值到高效格式的命令id中;
sd10、将待发送命令的a段数据段与已发送命令的a段数据段比较,当待发送命令的第j段数据段与已发送命令的第j数据段不同时,将对应的有效标识位xj置为有效位,并将待发送命令的第j段数据段赋值到高效格式的数据段中(也可以在全部数据段比较完成后,根据有效标识位的有效位依次将待发送命令的数据段赋值到高效格式的数据段中);
sd11、当j的值与a的值相等时,进入步骤sd13;
sd12、将待发送命令直接作为发送包;
sd13、完成待发送命令的打包,获得发送包。
对于初始化,可将格式标识位、命令id、有效标识位和n个数据段的初始化均设置为0;可分配2个bit位给格式标识位,分别为b1和b2,分配m个bit位给有效标识位,分别为x1、x2,……,xm,所述m为大于2的正整数;用b1=1,b2=0表示发送包为压缩格式发送,此时xj=0代表命令第i数据段保持不变,不传送,xj=1代表命令第i数据段改变,第i数据段传送,传送的数据段按改变数据段顺序排列;b1=1,b2=1表示发送包为复合格式发送,此时xi=0代表此位忽略,不考虑,xi=1代表复合命令包含id+i命令,包含的数据段,按包含命令大小以及相应的数据段按顺序排列。当预设值p设为1时,若存在待发送命令分别为具有两个数据段的第7条命令和具有三个数据段的第10条命令时,b1和b2置1,然后可以第7条命令为基准命令,则第10条命令表示为第id+3条命令,将有效位设为1,则打包好的发送包可参照图6所示。另外,在以上的方法中,对于单命令的压缩来说,类型比较是必须的,长度比较可以没有,并且类型比较和长度比较没有先后之分,同样的命令的数量判断和命令的类型比较、命令的长度比较也是没有先后之分的,只要达到本发明目的即可。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。