一种提高发送数据安全性的方法和异构系统与流程

wunan 75 0
一种提高发送数据安全性的方法和异构系统与流程

[0001]
本发明涉及异构系统数据通信领域,具体涉及一种提高发送数据安全性的方法和异构系统。


背景技术:

[0002]
目前,在一些智能机器人上,比如采用激光或视觉方案的扫地机器人,至少由两个主控芯片组成,一个是单片机如stm32的级别,一个是ap如cortex-a7的级别。前者用于控制电机与采集数据,一般跑rtos等实时操作系统,后者用于复杂算法计算,一般跑linux/android等大系统。为了实现机器人的功能,需要两个主控芯片协调合作,而这必然涉及芯片与芯片之间的数据通信问题。一般来说,两颗芯片之间采用通用异步串行收发接口uart或串行外设接口spi进行通信。而这些通信是不可靠的,没法保证对方安全收到数据。


技术实现要素:

[0003]
为解决上述问题,本发明提供了一种提高发送数据安全性的方法和异构系统,可以确保接收方在丢包场景下也能安全地接收到数据。本发明的具体技术方案如下:一种提高发送数据安全性的方法,芯片a和芯片b之间互相发送数据包,所述方法具体如下:芯片a接收芯片b的数据包或心跳包;如果芯片a接收到的是数据包,则芯片a读取数据包中的确认id并与芯片a最近一次发送给芯片b的数据包id进行比较,若两者相同,则表明芯片b成功接收到芯片a最近一次发送的数据包,那么芯片a更新其确认id并添加到芯片a下一次发送给芯片b的数据包中;若两者不相同,则表明芯片b没有接收到芯片a最近一次发送的数据包,那么芯片a更新其确认id并添加到芯片a最近一次发送过的数据包中,然后发送给芯片b;如果芯片a接收到的是心跳包,则芯片a读取心跳包中的确认id并与芯片a最近一次发送给芯片b的数据包id进行比较,若两者相同,则表明芯片b成功接收到芯片a最近一次发送的数据包;若两者不相同,则表明芯片b没有接收到芯片a最近一次发送的数据包,那么芯片a重新发送最近一次发送的数据包给芯片b。本发明所述的方法,通过数据包id和确认id之间的比较和心跳包不断传输数据包id和确认id的功能,确保了能及时发现丢包现象并重新发送,提高了数据发送的安全性。
[0004]
进一步地,所述芯片a和芯片b根据发送指令来发送所述数据包。
[0005]
进一步地,所述芯片a会按预设的时间间隔接收和发送心跳包;所述接收的心跳包中的数据包id和确认id分别为芯片b最近一次发送过的数据包的id和接收过的数据包的id,所述发送的心跳包中的数据包id和确认id分别为芯片a最近一次发送过的数据包的id和接收过的数据包的id;所述心跳包可以让芯片a和芯片b保持通信,并通过对方发送的确认id判断数据包是否丢失。心跳包的设计可以使得数据包id和确认id不断地在芯片之间进行传输,避免了一方没有传输数据包时,另一方无法判断是否丢包的问题,同时,也可以用于确定系统是否能够正常通信。
[0006]
进一步地,所述确认id的更新方法为,使用接收到的数据包id替换原本的确认id,
用于表明已接收到的数据包。用接收到的数据包id更新确认id并发送给对方,可以让对方知道自己的数据包已被成功接收。
[0007]
一种异构系统,所述异构系统包括芯片a和芯片b。芯片a和芯片b采用前述的一种提高发送数据安全性的方法进行通信,通过数据包id和确认id之间的比较和心跳包不断传输数据包id和确认id的功能,确保了芯片a和芯片b能及时发现丢包现象并重新发送,提高了数据发送的安全性。
[0008]
进一步地,所述芯片a与芯片b各自具有一套相同的信息收发系统,用于芯片a和芯片b判断发送的数据包是否丢失,所述信息收发系统包括数据包和心跳包。相同的信息收发系统确保了芯片a和芯片b能够以同样的方法判断是否发生丢包。
[0009]
进一步地,所述数据包至少包括待处理数据、数据包id和确认id中的任一种。
[0010]
进一步地,所述心跳包至少包括数据包id和确认id中的任一种。
[0011]
本发明的有益效果在于:本发明公开的一种提高发送数据安全性的方法和异构系统,维护了一套信息收发系统,让芯片可以通过确认id判断是否发生丢包,从而提高发送数据的安全性。
附图说明
[0012]
图1为本发明一种实施例所述提高发送数据安全性的方法流程图。
[0013]
图2为本发明一种实施例所述提高发送数据安全性的异构系统示意图。
具体实施方式
[0014]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。应当理解,下面所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
[0015]
如图1所示,一种提高发送数据安全性的方法,芯片a和芯片b之间互相发送数据包,所述方法具体如下:芯片a接收芯片b的数据包或心跳包;如果芯片a接收到的是数据包,则芯片a读取数据包中的确认id并与芯片a最近一次发送给芯片b的数据包id进行比较,若两者相同,则表明芯片b成功接收到芯片a最近一次发送的数据包,那么芯片a更新其确认id并添加到芯片a下一次发送给芯片b的数据包中;若两者不相同,则表明芯片b没有接收到芯片a最近一次发送的数据包,那么芯片a更新其确认id并添加到芯片a最近一次发送过的数据包中,然后发送给芯片b;如果芯片a接收到的是心跳包,则芯片a读取心跳包中的确认id并与芯片a最近一次发送给芯片b的数据包id进行比较,若两者相同,则表明芯片b成功接收到芯片a最近一次发送的数据包;若两者不相同,则表明芯片b没有接收到芯片a最近一次发送的数据包,那么芯片a重新发送最近一次发送的数据包给芯片b。本实施例所述的方法,通过数据包id和确认id之间的比较和心跳包不断传输数据包id和确认id的功能,确保了能及时发现丢包现象并重新发送,提高了数据发送的安全性。
[0016]
作为其中一种实施例,所述芯片a和芯片b根据发送指令来发送所述数据包。
[0017]
作为其中一种实施例,所述芯片a会按预设的时间间隔接收和发送心跳包;所述接收的心跳包中的数据包id和确认id分别为芯片b最近一次发送过的数据包的id和接收过的数据包的id,所述发送的心跳包中的数据包id和确认id分别为芯片a最近一次发送过的数据包的id和接收过的数据包的id;所述心跳包可以让芯片a和芯片b保持通信,并通过对方
发送的确认id判断数据包是否丢失。本实施例所述的心跳包的设计可以使得数据包id和确认id不断地在芯片之间进行传输,避免了一方没有传输数据包时,另一方无法判断是否丢包的问题,同时,也可以用于确定系统是否能够正常通信。
[0018]
作为其中一种实施例,所述确认id的更新方法为,使用接收到的数据包id替换原本的确认id,用于表明已接收到的数据包。本实施例所述的方法,用接收到的数据包id更新确认id并发送给对方,可以让对方知道自己的数据包已被成功接收。
[0019]
如图2所示,一种异构系统,所述异构系统包括芯片a和芯片b。芯片a和芯片b采用前述的一种提高发送数据安全性的方法进行通信,本实施例所述的方法,通过数据包id和确认id之间的比较和心跳包不断传输数据包id和确认id的功能,确保了芯片a和芯片b能及时发现丢包现象并重新发送,提高了数据发送的安全性。
[0020]
作为其中一种实施例,所述芯片a与芯片b各自具有一套相同的信息收发系统,用于芯片a和芯片b判断发送的数据包是否丢失,所述信息收发系统包括数据包和心跳包。本实施例所述的相同的信息收发系统确保了芯片a和芯片b能够以同样的方法判断是否发生丢包。
[0021]
作为其中一种实施例,所述数据包至少包括待处理数据、数据包id和确认id中的任一种。
[0022]
作为其中一种实施例,所述心跳包至少包括数据包id和确认id中的任一种。
[0023]
下面结合附图2对本发明的内容做进一步的描述。
[0024]
图2展示了一个包含芯片a和芯片b的异构系统,芯片a和芯片b在互相传输数据。一般,芯片之间使用的是uart或spi传输,但是如果直接传输数据,可能会丢包,而且很难被发现。所以,本发明在需要传输的数据包中加入了一个msg_id(数据包id)和ack_id(确认id),通过两个id之间的比较来判断是否发生丢包。所述数据包是一个结构体,根据需要还可以添加其他参数,比如数据长度和数据校验参数等。需要说明的是,芯片a和芯片b各自维护一套相同的信息收发系统,其中发挥主要作用的是msg_id和ack_id,每个系统的msg_id分别计算,即芯片a与芯片b都会有msg_id=1的包,但代表的是不同的包。本发明还设计了心跳包,该心跳包中也含有msg_id和ack_id,所述心跳包是一个结构体,根据需要还可以添加其他参数,比如内存使用和工作进度等。心跳包按照一定的时间间隔在两颗芯片之间不断传输,比如40ms传输一次。而且,心跳包的传输与芯片之间因任务需要而产生的数据传输是互不干扰的,它是后台的一个定时任务。心跳包的存在可以满足msg_id和ack_id不断传输的需求,避免其中一颗芯片不传输数据或者丢包时,另一颗芯片因接收不到ack_id而无从判断其最近一次发送的数据包是否丢包的情况,同时,还能确定系统的通信是否正常。
[0025]
假设芯片a接收到传输数据的命令,因芯片a发送数据包时没有接收到任何数据,所以向芯片b传输的数据包中的msg_id=1,ack_id=0。这个数据包没有丢失,芯片b在成功接收后,读取芯片a的msg_id并赋值给自己的ack_id,即当前芯片b的ack_id=1,然后芯片b将此ack_id写入下一次要发给芯片a的数据包中。同时,心跳包中的ack_id也会得到更新。
[0026]
芯片b同样接收到传输数据的命令,此时向芯片a传输一个msg_id=1,ack_id=1的数据包,这个数据包也没有丢失。于是,芯片a读取数据包中的ack_id与其最近一次发送给芯片b的msg_id进行比较,发现两者相同,表明芯片b安全接收到了芯片a发送的msg_id=1的数据包。然后,芯片a给自己的ack_id赋值并写入下一次要发给芯片b的数据包中。
[0027]
芯片a给芯片b发送数据包,此时msg_id=2,ack_id=1。但是这个数据包丢失,芯片b没有接收到,那么芯片b就没法根据芯片a返回的ack_id判断其发送给芯片a的msg_id=1的数据包是否丢失。这时,一直运行在后台的心跳包发挥了作用:它将当前芯片b的msg_id和ack_id发送给了芯片a。芯片a经过比较,发现其最近一次发送过msg_id=2的数据包,但是接收的芯片b的ack_id=1,两者不相等,表明msg_id=2的数据包丢失。于是芯片a重新发送该包给芯片b,确保芯片b能够安全地收到数据。
[0028]
对于发送过的数据包,芯片a和芯片b都会去确认对方是否成功接收到,这可以通过数据包的传输来完成,也可以通过心跳包的传输来完成,一旦发现丢包,就会重新发送一次,提高了发送数据的安全性。
[0029]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

   
下载地址赞助后可见
支付19.9元查看

标签: #电子通信装置的制造及其应用技术