CN112714492A - 一种uwb数据包处理方法、系统、电子设备及其存储介质 - Google Patents
一种uwb数据包处理方法、系统、电子设备及其存储介质 Download PDFInfo
- Publication number
- CN112714492A CN112714492A CN202011519678.2A CN202011519678A CN112714492A CN 112714492 A CN112714492 A CN 112714492A CN 202011519678 A CN202011519678 A CN 202011519678A CN 112714492 A CN112714492 A CN 112714492A
- Authority
- CN
- China
- Prior art keywords
- uwb
- data packet
- uwb data
- lock
- address information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W64/00—Locating users or terminals or network equipment for network management purposes, e.g. mobility management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W56/00—Synchronisation arrangements
- H04W56/001—Synchronization between nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明涉及互联网技术领域,尤其涉及一种UWB数据包处理方法、系统、电子设备及其存储介质。其中,一种UWB数据包处理方法,包括:初始化无锁栈;创建信号量;注册最高优先级的实时信号回调模块和低优先级处理线程;接收UWB数据包;控制所述实时信号回调模块将UWB数据包读取至内存缓冲区中,并将UWB数据包的地址信息依次推进所述无锁栈中,且控制所述实时信号回调模块释放所述信号量;当UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将UWB数据包的地址信息推出所述无锁栈,并根据UWB收数据包的地址信息取出对应的所述UWB数据包;对所述UWB数据包进行处理。本发明达到快速处理数据包和减少丢包率的目的。
Description
技术领域
本发明涉及互联网技术领域,更具体地,涉及一种UWB数据包处理方法、系统、电子设备及其存储介质。
背景技术
在超宽带(Ultra Wide Band,UWB)定位中,通常使用主基站(主Anchor)周期性向从基站(从Anchor)发送时钟校验包(Clock Correct Package,CCP)来保证主从基站之间的时钟同步,从Anchor接收来自主Anchor的CCP后,结合收到来自定位标签的数据包,进行相对时钟同步计算,确定标签的相对到达时间值,并通过标签的相对到达时间计算标签相对于主从基站的位置,从而确定了从Anchor自身的位置。
由此可见,时钟同步不准确会影响定位的精确度,在UWB定位算法中,从Anchor的时钟同步准确性与该从Anchor最近接收到同一主Anchor发送的两个CCP之间的时间间隔有关系,如果存在从Anchor没有及时处理CCP导致丢包的问题,从Anchor接收到相邻两个CCP的时间间隔就会加长,从而造成时钟同步不准确。
因此,在UWB anchor软件系统中为了达到定位精确的目的,必须快速、实时地处理掉UWB的空口缓冲区中的数据包,以便于腾出空口缓冲区来处理下个数据包。现有技术在使用有锁队列将空口缓冲区接收的数据包存储至缓冲区时引入了互斥锁,互斥锁能够保证多线程之间互不影响,但是由于互斥锁的存在,会影响多线程的并发能力,而且还会导致系统调度器的过度消耗,实时性能下降。
另外,UWB anchor软件系统接收的UWB数据包,除了CCP外,还包括Blink、通信测试请求、TWR、标签认证、硬件配置包等多种类型的数据包,当系统接收到UWB数据包时,需要根据UWB数据包的类型查找对应的处理函数进行处理,因此快速分析数据包找到数据包处理函数入口,也是anchor软件性能的一个重要指标。现有技术中,anchor软件通常按顺序查找达到O(N)的时间复杂度来遍历查找数据包对应的处理函数,但是,这种方法需要很长的处理时间。
发明内容
本发明旨在克服上述现有技术的至少一种缺陷,提供一种UWB数据包处理方法,用于达到快速处理数据包和减少丢包率的目的。
本发明采取的技术方案是,一种UWB数据包处理方法,包括:
初始化无锁栈;
创建信号量;
注册最高优先级的实时信号回调模块和低优先级处理线程;
接收UWB数据包;
控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,且控制所述实时信号回调模块释放所述信号量;
当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB收数据包的地址信息取出对应的所述UWB数据包;
对所述UWB数据包进行处理。
本发明一种UWB数据包处理方法,利用一种创新性的方法处理UWB数据包,以达到快速处理数据包和减少丢包率的目的,其方法包括以下步骤:初始化一个无锁栈,用于存储接收到的UWB数据包的地址信息;创建信号量,也即是初始化一个信号量机制;注册最高优先级的实时信号回调模块和低优先级处理线程,实时信号回调模块在整个处理过程中的优先级始终是最高的,处理线程的优先级低于实时信号回调模块的优先级,最高优先级的实时信号回调模块可以抢占低优先级的处理线程;接收UWB数据包;控制实时信号回调模块将接收到的UWB数据包读取至内存缓冲区中,并且控制实时信号回调模块将UWB数据包对应的地址信息依次推进无锁栈,此时无锁栈处于被利用状态,处理线程处于等待状态;当UWB数据包的地址信息完成被推进无锁栈的过程后,此时无锁栈处于可利用状态,控制实时信号回调模块释放信号量以通知处理线程当前无锁栈的状态,控制处理线程按照后进先出的原则将UWB数据包的地址信息推出无锁栈,并根据UWB数据包的地址信息从无锁栈中取出对应的UWB数据包;最后,对取出来的UWB数据包进行处理。本发明采用上述UWB数据包处理方法,使用的无锁栈技术,相比于现有技术采用的有锁队列,增加了栈的后进先出特性使得实时信号回调模块和处理线程在数据拥堵时能够优先处理掉最新的数据包,使得时钟同步过程中获得和当前时间较近的时间戳,从而使得UWB定位数据更加准确;并且由于无锁栈的内存栅栏实现的原子操作特性可以保证线程的同步逻辑正确,无锁栈使实时信号回调模块和处理线程可无锁重入,免除了锁的等待时间消耗,数据包的丢包率也大大减少;并且本发明在UWB数据包的地址信息被推进无锁栈后,通过接收线程释放信号量来通知处理线程当前无锁栈的状态,以便于处理线程的后续操作,使用信号量不会造成进程切换的等待,提高了接收线程的实时性;本发明还设定实时信号回调模块为最高优先级,最高优先级的实时信号回调模块能够随时抢占其它低优先级的线程,保证了实时信号回调模块优先,实现即时地处理UWB数据包。
进一步地,所述控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,具体包括:
控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推进所述无锁栈的栈顶。
进一步地,当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包,具体包括:
当一个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
当多个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
本发明一种UWB数据包处理方法,采用无锁栈技术的后进先出特性实现UWB数据包的存取,其中,栈是一种数据结构,只能在一端进行插入和删除的特殊线性表,无锁栈按照后进先出的原则存取数据,具体实现过程为:控制所述实时信号回调模块将UWB数据包读取至内存缓冲区中,并按照UWB数据包接收顺序将UWB数据包的地址信息依次推进无锁栈的栈顶;需要读取数据时从栈顶弹出数据,当一个UWB数据包的地址信息被推进无锁栈后,控制处理线程接收信号量,将UWB数据包的地址信息按照UWB数据包的接收顺序依次推出无锁栈的栈顶,也就是说当接收一个UWB数据包的情况下,无锁栈中只有一个UWB数据包的地址信息,控制处理线程按照UWB数据包的接收顺序将UWB数据包的地址信息推出无锁栈栈顶,并根据UWB数据包的地址信息取出对应的UWB数据包;当多个UWB数据包的地址信息被推进无锁栈后,控制处理线程接收信号量,将UWB数据包的地址信息按照UWB数据包的接收反向顺序依次推出无锁栈的栈顶,也就是说当接收多个UWB数据包的情况下,无锁栈中存储有多个UWB数据包的地址信息,控制处理线程按照UWB数据包的接收反向顺序依次将UWB数据包的地址信息推出无锁栈的栈顶,并根据UWB数据包的地址信息取出对应的所述UWB数据包。本发明一种UWB数据包处理方法,通过无锁栈将UWB数据包的地址信息按照后进先出的原则进行存取,并根据所述UWB数据包的地址信息依次存取对应的UWB数据包,能够实现存取速度加快,在数据拥堵时,快速处理新鲜的UWB数据包,使得时钟同步过程中总会获得一个和当前时间较近的时间戳,保证时钟同步的准确性。
进一步地,所述对所述UWB数据包进行处理,具体包括:
初始化红黑树;
根据所述UWB数据包的类型在所述红黑树中查找对应的处理函数入口;
调用所述处理函数对所述UWB数据包执行处理。
本发明一种UWB数据包处理方法,能够快速分析UWB数据包完成UWB数据包的处理,其中,具体处理过程为:初始化一个红黑树,红黑树是一种自平衡二叉查找树,它可以在时间复杂度O(log n)的时间内做查找;当UWB数据包的地址信息被推出无锁栈后,此时根据UWB数据包的地址信息取出UWB数据包,红黑树根据UWB数据包的类型查找对应的处理函数入口;并且在查找到对应的处理函数入口后调用处理函数对UWB数据包进行处理。本发明一种UWB数据包处理方法,采用红黑树作为不同类型的UWB数据包处理函数入口的查找数据结构,具有较高的查找性能,减少了数据包的处理时间,极大提高了运行速度。
进一步地,接收UWB数据包后还将所述UWB数据包存储至UWB发射芯片的缓冲区。
本发明一种UWB数据包处理方法,在接收UWB数据包的处理过程中,接收到的UWB数据包先存储在UWB发射芯片的缓冲区,再控制接收线程从UWB发射芯片的缓冲区读取UWB数据包至内存缓冲区中,此时便腾出了UWB发射芯片的缓冲区,实现UWB发射芯片缓冲区能够持续不断地开始下次数据包的接收。
本发明还采取另一种技术方案是,一种UWB数据包处理系统,包括
第一初始化模块,用于初始化无锁栈;
创建模块,用于创建信号量;
注册模块,用于注册最高优先级的实时信号回调模块和低优先级处理线程;
接收模块,用于接收UWB数据包;
推进模块,用于控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,且控制所述实时信号回调模块释放所述信号量;
推出模块,用于当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
处理模块,用于对所述UWB数据包进行处理。
本发明一种UWB数据包处理系统,其系统通过多个模块实现快速处理数据包和减少丢包率的目的,首先通过第一初始化模块初始化一个无锁栈,用于存储接收到的UWB数据包的地址信息;并通过创建模块创建信号量;注册模块注册最广告优先级的实时信号回调模块和低优先级处理线程,实时信号回调模块在整个处理过程中的优先级始终是最高的,处理线程的优先级低于实时信号回调模块的优先级,最高优先级的实时信号回调模块可以抢占低优先级的处理线程;其次,接收模块接收UWB数据包;再利用推进模块来控制实时信号回调模块将接收到的UWB数据包读取至内存缓冲区中,并且控制实时信号回调模块将UWB数据包对应的地址信息依次推进无锁栈,此时无锁栈处于被利用状态,处理线程处于等待状态;当UWB数据包的地址信息完成被推进无锁栈的过程后,此时无锁栈处于可利用状态,控制实时信号回调模块释放信号量以通知处理线程当前无锁栈的状态,控制处理线程按照后进先出的原则将UWB数据包的地址信息推出无锁栈,并根据UWB数据包的地址信息从无锁栈中取出对应的UWB数据包;最后,处理模块对取出来的UWB数据包进行处理。本发明一种UWB数据包处理系统,使用的无锁栈技术相比于现有技术中采用的有锁队列,增加了栈的后进先出特性使得实时信号回调模块和处理线程在数据拥堵时能够优先处理掉最新的数据包,使得时钟同步过程中获得和当前时间较近的时间戳,从而使得UWB定位数据更加准确,并且由于无锁栈的的内存栅栏实现的原子操作特性可以保证线程的同步逻辑正确,无锁栈使实时信号回调模块和处理线程可无锁重入,免除了锁的等待时间消耗,数据包的丢包率也大大减少;并且本发明在UWB数据包的地址信息被推进无锁栈后,通过接收线程释放信号量来通知处理线程当前无锁栈的状态,以便于处理线程的后续操作,使用信号量不会造成进程切换的等待,提高了接收线程的实时性;本发明还设定实时信号回调模块为最高优先级,最高优先级的实时信号回调模块能够随时抢占其它低优先级的线程,保证了实时信号回调模块优先,实现即时地处理UWB数据包。
进一步地,所述处理模块包括:
第二初始化单元,用于初始化红黑树;
查找函数单元,用于根据所述UWB数据包的类型在所述红黑树中查找对应的处理函数入口;
处理函数单元,调用所述处理函数对所述UWB数据包执行处理。
本发明一种UWB数据包处理系统,处理模块能够快速分析UWB数据包完成UWB数据包的处理,其中,处理模块具体包括:通过第二初始单元初始化一个红黑树,红黑树是一种自平衡二叉查找树,它可以在时间复杂度O(log n)的时间内做查找;再通过函数查找单元,当UWB数据包的地址信息被推出无锁栈后,此时根据UWB数据包的地址信息取出UWB数据包,红黑树根据UWB数据包的类型查找对应的处理函数入口;并且处理函数单元在查找到对应的处理函数入口后调用处理函数对UWB数据包进行处理。本发明一种UWB数据包处理系统,采用红黑树作为不同类型的UWB数据包处理函数入口的查找数据结构,具有较高的查找性能,减少了数据包的处理时间,极大提高了运行速度。
进一步地,所述推出模块,具体包括:
第一推出单元,用于当一个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
第二推出单元,用于当多个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
本发明还采取另一种技术方案是,一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;
处理器,执行所述存储器中存储的指令以实现所述的UWB数据包处理方法。
本发明还采取另一种技术方案是,一种计算机可读存储介质,所述计算机可读存储介质上存储有UWB数据包处理程序,所述UWB数据包处理程序可被一个或者多个处理器执行,以实现所述的UWB数据包处理方法。
与现有技术相比,本发明的有益效果为:本发明一种UWB数据包处理方法、系统、电子设备及其存储介质,使用的无锁栈技术,相比于现有技术采用的有锁队列,增加了栈的后进先出特性使得实时信号回调模块和处理线程在数据拥堵时能够优先处理掉最新的数据包,使得时钟同步过程中获得和当前时间较近的时间戳,从而使得UWB定位数据更加准确;并且由于无锁栈的内存栅栏实现的原子操作特性可以保证线程的同步逻辑正确,无锁栈使实时信号回调模块和处理线程可无锁重入,免除了锁的等待时间消耗,数据包的丢包率也大大减少;并且本发明在UWB数据包的地址信息被推进无锁栈后,通过接收线程释放信号量来通知处理线程当前无锁栈的状态,以便于处理线程的后续操作,使用信号量不会造成进程切换的等待,提高了接收线程的实时性;本发明还设定实时信号回调模块为最高优先级,最高优先级的实时信号回调模块能够随时抢占其它低优先级的线程,保证了实时信号回调模块优先,实现即时地处理UWB数据包;本发明采用红黑树作为不同类型的UWB数据包处理函数入口的查找数据结构,具有较高的查找性能,减少了数据包的处理时间,极大提高了运行速度。
附图说明
图1为本发明一种UWB数据包处理方法的流程示意图。
图2为本发明一种UWB数据包处理系统的结构示意图。
具体实施方式
本发明附图仅用于示例性说明,不能理解为对本发明的限制。为了更好说明以下实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
实施例
如图1所示为本实施例一种UWB数据包处理方法的流程示意图,其方法步骤包括:
S101、初始化无锁栈;
具体地,在所述步骤S101中,初始化一个无锁栈用于存储接收到的UWB数据包的地址信息。
S102、创建信号量;
信号量可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源,信号量也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制,本发明实施例使用信号量可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。
S103、注册最高优先级的实时信号回调模块和低优先级的处理线程,其中,所述最高优先级的实时信号回调模块高于处理线程的优先级,且高于其它线程的优先级;
在所述步骤S103中,注册实时信号回调模块和处理线程对UWB数据包的传输过程进行处理,其中设定所述实时信号回调模块的优先级高于所述处理线程的优先级,最高优先级实时信号回调模块在数据处理过程中可以抢占低优先级的处理线程,当有新的UWB数据包需要处理,无论处理线程是否占用无锁栈,最高优先级的实时信号回调模块允许优先处理UWB数据包的接收和存储。
具体地,本实施例中的实时信号回调模块可以包括硬件中断回调、或者软件中断回调、或者硬件中断回调和软件中断回调相结合,在本实施例中实时信号回调模块可采用硬件中断回调和软件中断回调相结合的方法,注册一个最高优先级的实时信号回调理解为两个操作:注册一个最高的硬件中断回调(ISR);并在硬件中断回调后,注册一个最高优先级的底半线程优先级(half-buttom)。以arm-linux为例,硬件上可以设置不同中断的mask设置中断优先级,硬件中断后,ISR处理完一些快速的操作后,会启动发出一个软中断,一些相对慢的操作(如:读包)是软中断调用的底半操作完成的。这时的底半操作线程就可以采用最高优先级的线程。
S104、接收UWB数据包;
具体的,接收UWB数据包后还将所述UWB数据包存储至UWB发射芯片的缓冲区;
S105、控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,且控制所述实时信号回调模块释放所述信号量;
具体的,步骤S105包括:控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推进所述无锁栈的栈顶,且控制所述实时信号回调模块释放所述信号量。
在所述步骤S104和所述步骤S105中,接收UWB数据包的处理过程为:依次接收UWB数据包并将所述UWB数据包存储至UWB发射芯片的缓冲区,控制实时信号回调模块(本实施例中可采用底半操作线程中最高优先级的线程)将所述UWB发射芯片的缓冲区中的所述UWB数据包读取至内存缓冲区中,并且同步将所述UWB数据包的地址信息按照接收顺序依次推进所述无锁栈的栈顶,此时的UWB发射芯片的缓冲区腾出后,立马开始下次UWB数据包的接收,保证了UWB发射芯片能够快速处理UWB数据包,减少丢包的问题;而且只将UWB数据包的地址信息推进无锁栈而无需将整个UWB数据包推进无锁栈,极大地减少处理量,提升实时性的同时拥有一个非常快速的运行速度。
S106、当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB收数据包的地址信息取出对应的所述UWB数据包;
具体的,步骤S106包括:
当一个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
当多个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
本发明实施例通过创建信号量来协调线程处理UWB数据包的出栈和入栈操作,具体过程为:当数据不发生拥堵的情况下,每接收一个UWB数据包,控制实时信号回调模块将UWB数据包的地址信息推进无锁栈栈顶的过程中,此时无锁栈处于被利用状态,处理线程处于等待状态;当控制实时信号回调模块将UWB数据包的地址信息推进无锁栈的运行完成后,实时信号回调模块会释放信号量,以此通知处理线程当前无锁栈处于可利用状态,处理线程接收信号量后,将UWB数据包的地址信息按照所述UWB数据包的接收顺序推出无锁栈的栈顶,并根据UWB数据包的地址信息取出对应的UWB数据包;当数据发生拥堵的情况下,UWB发射芯片依次接收UWB数据包,实时信号回调模块依次将UWB数据包读取到内存缓冲区,且将UWB数据包的地址信息依次推进无锁栈的栈顶,当数据拥堵时,无锁栈内存储有多个UWB数据包的地址信息,此时处理线程接收所述信号量后,将UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,也就是当处理线程接收信号量后,首先处理栈顶的UWB数据包地址信息,使得时钟同步过程中获得和当前时间较近的时间戳,从而使得UWB定位数据更加准确。在UWB数据包的地址信息被推进无锁栈后,通过释放信号量来通知处理线程当前无锁栈的状态以便于处理线程的后续操作,无需进行进程切换的等待,提高了接收线程的实时性;而且利用无锁栈的先进后出特性确保在UWB数据包拥堵过程中可以取得最新鲜的时间戳,保证了UWB定位的准确性。
由于无锁栈是入栈操作基于内存栅栏实现的原子操作,所以即使在入栈的过程中再发生实时信号回调模块处理UWB数据包的情况,也不用担心数据的多线程同步的问题;在传统队列缓冲区数据操作中,需要使用互斥锁对队列进行互斥操作,在使用互斥锁的过程中,高优先级的接收线程为了等待队列的已经被低优先级处理线程获取的互斥锁造成的优先级翻转问题,通过使用无锁操作也可以得到很好的解决,而且,信号量的释放操作是在最高优先级的实时信号回调模块中,所以实时信号回调模块在释放信号量后,如果实时信号回调模块需要处理新的数据包,最高优先级实时信号回调模块允许优先处理,不会被低优先级处理线程抢占,免除了锁的等待时间消耗,接收数据包的回调操作有了很大的实时性的提高。
S107、对所述UWB数据包进行处理。
在步骤S107中,所述对所述UWB数据包进行处理,具体包括以下步骤:
S1071、初始化红黑树;
S1072、根据所述UWB数据包的类型在所述红黑树中查找对应的处理函数入口;
S1073、调用所述处理函数对所述UWB数据包执行处理。
在接收到的UWB数据包中,包括CCP、Blink、通信测试请求、TWR、标签认证、硬件配置包等多种类型的数据包,因此在完成接收处理UWB数据包的操作后,还需要根据UWB数据包的类型查找对应的处理函数,从而完成对UWB数据包的处理过程。
本发明实施例采用红黑树作为不同类型的UWB数据包处理函数入口的查找数据结构,红黑树是一种自平衡二叉查找树,红黑树在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,能够获得较高的查找能力,红黑树比较复杂,其在最坏情况下的运行时间也非常良好,红黑树能够在时间复杂度O(log n)内做查找,插入和删除,查找效率极高,其中,时间复杂度是一个代表算法输入值的字符串的长度的函数,时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数,使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数,记作T(n)=O(f(n)),它称为算法的渐进时间复杂度,简称时间复杂度。
在步骤S107中,本实施例通过红黑树对UWB数据包进行处理的过程为:初始化一个红黑树,并且红黑树能够根据所述UWB数据包的类型快速查找对应的处理函数入口,调用对应的处理函数快速完成对UWB数据包的执行处理。本实施例采用的红黑树能够在时间复杂度为O(log n)的时间内查找数据包的处理函数入口,解决现有技术采用按顺序查找UWB数据包处理函数入口的方式,其时间复杂度为O(n)的处理时间较慢的问题。
以上UWB数据包的处理过程发生在低优先级的处理线程中,处理线程可以被最高优先级的实时信号回调模块抢占,但是,无论最高优先级实时信号回调模块以何种顺序打断处理线程,无锁栈的出栈和入栈操作都可以保证线程的同步逻辑正确,且接收线程优先。
以上实施例一种UWB数据包处理方法,可以在Anchor软件中实现快速、实时处理掉接收的UWB数据包,并且在Anchor软件中通过红黑树查找UWB数据包对应的函数处理入口进一步提高Anchor软件的实时处理速度,其中,Anchor软件是一款应用在UWB定位中的数据软件,能够对UWB数据包进行接收和处理。
在另外一种可选的实施方式中,如图2所示为本发明实施例一种UWB数据包处理系统的结构示意图,包括:
第一初始化模块201,用于初始化无锁栈;
利用第一初始化模块201,用于初始化一个无锁栈,并且同步将UWB数据包的地址信息推进无锁栈中,只将UWB数据包的地址信息推进无锁栈而无需将整个UWB数据包推进无锁栈,极大地减少处理量,使得处理代码提升实时性的同时拥有一个非常快速的运行速度。
创建模块202,用于创建信号量;
注册模块203,用于注册最高优先级的实时信号回调模块和低优先级的处理线程,其中,所述最高优先级的实时信号回调模块高于处理线程的优先级,且高于其它线程的优先级;
注册模块203用于注册实时信号回调模块和处理线程对UWB数据包的传输过程进行处理,其中设定所述实时信号回调模块的优先级高于所述处理线程的优先级,最高优先级实时信号回调模块在数据处理过程中可以抢占低优先级的处理线程,当有新的UWB数据包需要处理,无论处理线程是否占用无锁栈,最高优先级的实时信号回调模块允许优先处理UWB数据包的接收和存储。
接收模块204,用于接收UWB数据包;
具体的,接收模块204还将所述UWB数据包存储至UWB发射芯片的缓冲区;
推进模块205,用于控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,且控制所述实时信号回调模块释放所述信号量;
具体的,推进模块205具体包括:用于控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推进所述无锁栈的栈顶,且控制所述实时信号回调模块释放所述信号量。
通过接收模块204和推进模块205对接收UWB数据包的处理过程为:接收模块204接收UWB数据包并将所述UWB数据包存储至UWB发射芯片的缓冲区,推进模块205控制实时信号回调模块(本实施例中可采用底半操作线程中最高优先级的线程)将所述UWB发射芯片的缓冲区中的UWB数据包读取至内存缓冲区,并将所述UWB数据包的地址信息按照接收顺序依次推进所述无锁栈的栈顶,此时的UWB发射芯片的缓冲区腾出后,立马开始下次数据包的接收,保证了UWB发射芯片够快速处理UWB数据包,减少丢包的问题;而且只将UWB数据包的地址信息推进无锁栈而无需将整个UWB数据包推进无锁栈,极大地减少处理量,提升实时性的同时拥有一个非常快速的运行速度。
推出模块206,用于当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
具体的,推出模块206具体包括:
第一推出单元,用于当一个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
第二推出单元,用于当多个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
本发明实施例通过创建信号量来协调线程处理UWB数据包的出栈和入栈操作,具体过程为:当数据不发生拥堵的情况下,每接收一个UWB数据包,控制实时信号回调模块将UWB数据包的地址信息推进无锁栈栈顶的过程中,此时无锁栈处于被利用状态,处理线程处于等待状态;当控制实时信号回调模块将UWB数据包的地址信息推进无锁栈的运行完成后,实时信号回调模块会释放信号量,以此通知处理线程当前无锁栈处于可利用状态,处理线程接收信号量后,将UWB数据包的地址信息按照所述UWB数据包的接收顺序推出无锁栈的栈顶,并根据UWB数据包的地址信息取出对应的UWB数据包;当数据发生拥堵的情况下,UWB发射芯片依次接收UWB数据包,实时信号回调模块依次将UWB数据包读取到内存缓冲区,且将UWB数据包的地址信息依次推进无锁栈的栈顶,当数据拥堵时,无锁栈内存储有多个UWB数据包的地址信息,此时处理线程接收所述信号量后,将UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,也就是当处理线程接收信号量后,首先处理栈顶的UWB数据包地址信息,使得时钟同步过程中获得和当前时间较近的时间戳,从而使得UWB定位数据更加准确。在UWB数据包的地址信息被推进无锁栈后,通过释放信号量来通知处理线程当前无锁栈的状态以便于处理线程的后续操作,无需进行进程切换的等待,提高了接收线程的实时性;而且利用无锁栈的先进后出特性确保在UWB数据包拥堵过程中可以取得最新鲜的时间戳,保证了UWB定位的准确性。
由于无锁栈是入栈操作基于内存栅栏实现的原子操作,所以即使在入栈的过程中再发生实时信号回调模块处理UWB数据包的情况,也不用担心数据的多线程同步的问题;在传统队列缓冲区数据操作中,需要使用互斥锁对队列进行互斥操作,在使用互斥锁的过程中,高优先级的接收线程为了等待队列的已经被低优先级处理线程获取的互斥锁造成的优先级翻转问题,通过使用无锁操作也可以得到很好的解决,而且,信号量的释放操作是在最高优先级的实时信号回调模块中,所以实时信号回调模块在释放信号量后,如果实时信号回调模块需要处理新的数据包,最高优先级实时信号回调模块允许优先处理,不会被低优先级处理线程抢占,免除了锁的等待时间消耗,接收数据包的回调操作有了很大的实时性的提高。
处理模块207,用于对所述UWB数据包进行处理。具体包括:
第二初始化单元,用于初始化红黑树;
函数查找单元,用于根据所述UWB数据包的类型在所述红黑树中查找对应的处理函数入口;
调用处理单元,用于调用所述处理函数对所述UWB数据包执行处理。
通过处理模块207实现对UWB数据包进行处理的过程为:通过第二初始化单元初始化一个红黑树,并且通过函数查找单元根据所述UWB数据包的类型在红黑树中快速查找对应的处理函数入口,调用处理单元调用对应的处理函数快速完成对UWB数据包的执行处理。本实施例处理模块206通过红黑树能够在时间复杂度为O(log n)的时间内查找数据包的处理函数入口,解决现有技术采用按顺序查找数据包处理函数入口的方式,其时间复杂度为O(n)的处理时间较慢的问题。
在另外一种可选的实施方式中,一种电子设备,包括:
存储器,存储至少一个指令;
处理器,执行所述存储器中存储的指令以实现所述的UWB数据包处理方法。
在另外一种可选的实施方式中,一种计算机可读存储介质,所述计算机可读存储介质上存储有UWB数据包处理程序,所述UWB数据包处理程序可被一个或者多个处理器执行,以实现所述的UWB数据包处理方法。
采用上述实施例,经实践操作验证,使用上述实施例后的接收处理UWB数据包的接收回调操作对比原先使用有锁队列的操作,平均处理时间从1.5ms提升到0.7ms每数据包的处理时间,处理时间接近快了一倍,因为回调函数可无锁重入,在峰值流量测试时,UWB数据包的丢包率也大大减少了;并且使用红黑树作为处理函数入口的查找数据结构,分发处理数据包平均时间从0.8ms提升到0.5ms。
由此可见,以上所述本发明实施例的有益效果为:本发明实施例一种UWB数据包处理方法、系统、电子设备及其存储介质,使用的无锁栈技术,相比于现有技术采用的有锁队列,增加了栈的后进先出特性使得实时信号回调模块和处理线程在数据拥堵时能够优先处理掉最新的数据包,使得时钟同步过程中获得和当前时间较近的时间戳,从而使得UWB定位数据更加准确;并且由于无锁栈的内存栅栏实现的原子操作特性可以保证线程的同步逻辑正确,无锁栈使实时信号回调模块和处理线程可无锁重入,免除了锁的等待时间消耗,数据包的丢包率也大大减少;并且本发明在UWB数据包的地址信息被推进无锁栈后,通过接收线程释放信号量来通知处理线程当前无锁栈的状态,以便于处理线程的后续操作,使用信号量不会造成进程切换的等待,提高了接收线程的实时性;本发明还设定实时信号回调模块为最高优先级,最高优先级的实时信号回调模块能够随时抢占其它低优先级的线程,保证了实时信号回调模块优先,实现即时地处理UWB数据包;本发明采用红黑树作为不同类型的UWB数据包处理函数入口的查找数据结构,具有较高的查找性能,减少了数据包的处理时间,极大提高了运行速度。
显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种UWB数据包处理方法,其特征在于,包括:
初始化无锁栈;
创建信号量;
注册最高优先级的实时信号回调模块和低优先级处理线程;
接收UWB数据包;
控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,且控制所述实时信号回调模块释放所述信号量;
当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
对所述UWB数据包进行处理。
2.根据权利要求1所述的一种UWB数据包处理方法,其特征在于,所述控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,具体包括:
控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推进所述无锁栈的栈顶。
3.根据权利要求1所述的一种UWB数据包处理方法,其特征在于,当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包,具体包括:
当一个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
当多个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
4.根据权利要求1所述的一种UWB数据包处理方法,其特征在于,所述对所述UWB数据包进行处理,具体包括:
初始化红黑树;
根据所述UWB数据包的类型在所述红黑树中查找对应的处理函数入口;
调用所述处理函数对所述UWB数据包执行处理。
5.根据权利要求1所述的一种UWB数据包处理方法,其特征在于,接收UWB数据包后还将所述UWB数据包存储至UWB发射芯片的缓冲区。
6.一种UWB数据包处理系统,其特征在于,包括:
第一初始化模块,用于初始化无锁栈,
创建模块,用于创建信号量;
注册模块,用于注册最高优先级的实时信号回调模块和低优先级处理线程;
接收模块,用于接收UWB数据包;
推进模块,用于控制所述实时信号回调模块将所述UWB数据包读取至内存缓冲区中,并将所述UWB数据包的地址信息依次推进所述无锁栈中,且控制所述实时信号回调模块释放所述信号量;
推出模块,用于当所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程按照后进先出的原则将所述UWB数据包的地址信息推出所述无锁栈,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包;
处理模块,用于对所述UWB数据包进行处理。
7.根据权利要求6所述的一种UWB数据包处理系统,其特征在于,所述处理模块包括:
第二初始化单元,用于初始化红黑树;
查找函数单元,用于根据所述UWB数据包的类型在所述红黑树中查找对应的处理函数入口;
处理函数单元,调用所述处理函数对所述UWB数据包执行处理。
8.根据权利要求6所述的一种UWB数据包处理系统,其特征在于,所述推出模块,具体包括:
第一推出单元,用于当一个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
第二推出单元,用于当多个所述UWB数据包的地址信息被推进所述无锁栈后,控制所述处理线程接收所述信号量,将所述UWB数据包的地址信息按照所述UWB数据包的接收反向顺序依次推出所述无锁栈的栈顶,并根据所述UWB数据包的地址信息取出对应的所述UWB数据包。
9.一种电子设备,其特征在于,所述电子设备包括:
存储器,存储至少一个指令;
处理器,执行所述存储器中存储的指令以实现如权利要求1-6中任一项所述的UWB数据包处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有UWB数据包处理程序,所述UWB数据包处理程序可被一个或者多个处理器执行,以实现如权利要求1-6中任一项所述的UWB数据包处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011519678.2A CN112714492B (zh) | 2020-12-21 | 2020-12-21 | 一种uwb数据包处理方法、系统、电子设备及其存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011519678.2A CN112714492B (zh) | 2020-12-21 | 2020-12-21 | 一种uwb数据包处理方法、系统、电子设备及其存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112714492A true CN112714492A (zh) | 2021-04-27 |
CN112714492B CN112714492B (zh) | 2022-11-01 |
Family
ID=75544728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011519678.2A Active CN112714492B (zh) | 2020-12-21 | 2020-12-21 | 一种uwb数据包处理方法、系统、电子设备及其存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112714492B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629714A (zh) * | 2022-03-29 | 2022-06-14 | 济南大学 | 蜜罐和沙箱相互增强的恶意程序行为处理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060274815A1 (en) * | 2005-06-07 | 2006-12-07 | Freescale Semiconductor Inc. | System and method for selecting a strongest signal across clock domains in an ultra wideband receiver |
US20170126273A1 (en) * | 2015-10-29 | 2017-05-04 | Industrial Bank Of Korea | Location measuring method and system for acceptable a plurality of uwb tags |
CN109634762A (zh) * | 2018-12-19 | 2019-04-16 | 北京达佳互联信息技术有限公司 | 一种数据回收方法、装置、电子设备及存储介质 |
CN111416825A (zh) * | 2020-03-24 | 2020-07-14 | 河南信大网御科技有限公司 | 线程间无锁日志管理方法和系统、终端、存储介质 |
-
2020
- 2020-12-21 CN CN202011519678.2A patent/CN112714492B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060274815A1 (en) * | 2005-06-07 | 2006-12-07 | Freescale Semiconductor Inc. | System and method for selecting a strongest signal across clock domains in an ultra wideband receiver |
US20170126273A1 (en) * | 2015-10-29 | 2017-05-04 | Industrial Bank Of Korea | Location measuring method and system for acceptable a plurality of uwb tags |
CN109634762A (zh) * | 2018-12-19 | 2019-04-16 | 北京达佳互联信息技术有限公司 | 一种数据回收方法、装置、电子设备及存储介质 |
CN111416825A (zh) * | 2020-03-24 | 2020-07-14 | 河南信大网御科技有限公司 | 线程间无锁日志管理方法和系统、终端、存储介质 |
Non-Patent Citations (2)
Title |
---|
JEROME ROUSSELOT: "WideMac: a low power and routing friendly MAC protocol for Ultra Wideband sensor networks", 《IEEE》 * |
罗勃等: "无线时钟同步算法在UWB定位技术中的研究与应用", 《现代电子技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629714A (zh) * | 2022-03-29 | 2022-06-14 | 济南大学 | 蜜罐和沙箱相互增强的恶意程序行为处理方法及系统 |
CN114629714B (zh) * | 2022-03-29 | 2023-08-04 | 济南大学 | 蜜罐和沙箱相互增强的恶意程序行为处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112714492B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6430593B1 (en) | Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system | |
US6128672A (en) | Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device | |
EP1271315B1 (en) | Run queue management | |
US6360243B1 (en) | Method, device and article of manufacture for implementing a real-time task scheduling accelerator | |
US7246353B2 (en) | Method and system for managing the execution of threads and the processing of data | |
US6662203B1 (en) | Batch-wise handling of signals in a processing system | |
US7210146B2 (en) | Sleep queue management | |
US6934950B1 (en) | Thread dispatcher for multi-threaded communication library | |
US20020065953A1 (en) | Priority in a portable thread environment | |
US6961934B2 (en) | Portable thread environment | |
US10331500B2 (en) | Managing fairness for lock and unlock operations using operation prioritization | |
US20020046231A1 (en) | Distributed applications in a portable thread environment | |
US7590990B2 (en) | Computer system | |
CN107203428B (zh) | 一种基于Xen的VCPU多核实时调度算法 | |
US6907606B1 (en) | Method for implementing event transfer system of real time operating system | |
US20050066149A1 (en) | Method and system for multithreaded processing using errands | |
CN112714492B (zh) | 一种uwb数据包处理方法、系统、电子设备及其存储介质 | |
CN113157467A (zh) | 一种多进程数据输出方法 | |
CN114116015B (zh) | 用于管理硬件命令队列的方法及系统 | |
US10949367B2 (en) | Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof | |
CN115858123A (zh) | 一种多线程任务调度处理方法 | |
US11971830B2 (en) | Efficient queue access for user-space packet processing | |
WO1999046679A1 (en) | Apparatus, method and article of manufacture for use with a priority based real-time operating system | |
JP2594557B2 (ja) | マルチタスク処理装置 | |
JPH03241442A (ja) | ストアバッファ制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |