CN114828298B - 一种协议栈与物理层之间的通信系统与方法 - Google Patents
一种协议栈与物理层之间的通信系统与方法 Download PDFInfo
- Publication number
- CN114828298B CN114828298B CN202210422281.4A CN202210422281A CN114828298B CN 114828298 B CN114828298 B CN 114828298B CN 202210422281 A CN202210422281 A CN 202210422281A CN 114828298 B CN114828298 B CN 114828298B
- Authority
- CN
- China
- Prior art keywords
- data
- physical layer
- protocol stack
- task
- buffer
- 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.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims abstract description 131
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000003860 storage Methods 0.000 claims abstract description 67
- 230000001960 triggered effect Effects 0.000 claims abstract description 5
- 239000000872 buffer Substances 0.000 claims description 104
- 230000015654 memory Effects 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 18
- 230000003993 interaction Effects 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 230000011664 signaling Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000010295 mobile communication Methods 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W80/00—Wireless network protocols or protocol adaptations to wireless operation
- H04W80/02—Data link layer protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/323—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the physical layer [OSI layer 1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/324—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
一种协议栈与物理层之间的通信方法,所述方法包括:S1、发送端将通信任务对应数据存入发送端对应的数据区中,并将通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的发任务队列;S2、发送端触发发送端发任务队列,将发任务队列中通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的消息区并触发中断通知接收端;S3、接收端立即响应中断,读取发送端对应的消息区中存储的当前通信任务的存储位置和数据长度并存入接收端对应的收任务队列中,退出中断;S4、接收端触发收任务队列,通过收任务队列获取通信任务对应数据的存储位置和数据长度以访问对应的发送端数据区并获得通信任务对应数据。
Description
技术领域
本发明涉及无线移动通信技术领域,具体来说,涉及一种协议栈与物理层之间的通信系统与方法,更具体地,涉及无线移动通信技术领域中的高层协议栈与物理层之间进行控制信息与数据信息交互的一种协议栈与物理层之间的通信系统与方法。
背景技术
无线移动通信系统的整体包括核心网、接入网和终端部分,其中,核心网与接入网之间需要进行用户平面和控制平面的接口连接,接入网与终端部分之间通过无线空中接口协议进行连接。无线空中接口协议整体架构分为三层,网络层、数据链路层和物理层,其中,网络层包括NAS(非接入)层和RRC(无线资源控制)层,数据链路层包括PDCP(分组数据汇聚)层、RLC(无线链路控制)层和MAC(媒体接入)层,物理层包括物理层和L1C(物理层控制)层。通常高层协议栈从MAC层分离,MAC层负责不同逻辑信道数据的复用和逻辑信道与传输信道之间的映射,承担着信令与数据消息的处理和资源调度,即协议栈通过MAC层实现消息传递和接收;物理层则负责编码、调制、速率匹配等物理层过程,为MAC层提供传输信道。通常厂家在产品化过程中,除按照标准内容实现以外,为充分发挥物理层的作用,都会根据所使用的平台自定义设计L1C层实现对物理层状态的控制、射频资源的分配以及实现对协议栈的消息传递和接收。在现有技术中协议栈和物理层之间的信息交互中,协议栈通过MAC层实现对物理层的消息传递和接收,物理层通过L1C层实现对协议栈的消息传递和接收,MAC层和L1C层采用共享内存存储数据,并通过中断的方式进行交互,在中断服务程序中搬移全部数据或进行消息的解析处理,这种方式虽然能够保证协议栈和物理层之间的及时通信,但由于中断处理的时间过长,在信令或数据交互频繁时,会由于数据处理不及时导致信令丢失以及数据被覆盖的问题。
综上所述,现有无线移动通信中协议栈与物理层之间的通信主要存在以下缺点:
1、协议栈和物理层之间的通信时机存在随机性,现有技术中在中断中直接通信,当协议栈和物理层交互频繁时可能会因为处理不及时导致交互信息和数据丢失,无法保证数据的完整性。
2、多核或多进程的协议栈与物理层通信可能存在读写冲突。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种协议栈与物理层之间的通信系统与方法。
根据本发明的第一方面,提供一种协议栈与物理层之间的通信系统,所述系统包括协议栈消息区、协议栈数据区、协议栈发任务队列、协议栈收任务队列、物理层消息区、物理层数据区,物理层发任务队列、物理层收任务队列,其中:所述协议栈消息区用于存储由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度;所述协议栈数据区用于存储由协议栈向物理层发起的通信任务对应的数据;所述协议栈发任务队列用于缓存待写入协议栈消息区的内容,其中包括由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度;所述协议栈收任务队列用于缓存从物理层消息区读取的内容,其中包括由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;所述物理层消息区用于存储由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;所述物理层数据区用于存储由物理层向协议栈发起的通信任务对应的数据;所述物理层发任务队列用于缓存待写入物理层消息区的内容,其中包括由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;所述物理层收任务队列用于缓存从协议栈消息区读取的内容,其中包括由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度。
在本发明的一些实施例中,所述协议栈消息区和协议栈数据区被配置在协议栈管理的共享内存空间中,所述物理层消息区和物理层数据区被配置在物理层管理的共享内存空间中。
优选的,所述协议栈发任务队列和协议栈收任务队列均可同时缓存多个通信任务对应的数据在协议栈数据区中的存储位置和数据长度,所述物理层发任务队列和协议栈收任务队列均可同时缓存多个通信任务对应的数据在协议栈数据区中的存储位置和数据长度。
优选的,所述协议栈数据区和物理层数据区均被配置为包含多个缓存器的数据区,其中,每个缓存器的内存空间起始字节被配置为锁,以用于指示对应缓存器的使用状态,所述使用状态为空闲或占用。
优选的,所述协议栈与物理层的数据区中每个缓存器的内存空间大小大于或等于协议栈与物理层之间通信的最大交互信令的大小。
在本发明的一些实施例中,所述协议栈数据区的缓存器和物理层数据区的缓存器均被配置为首尾相连的环形结构。
优选的,所述由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置是协议栈数据区中存储该任务对应数据的缓存器的起始地址;所述由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置是物理层数据区中存储该任务对应数据的缓存器的起始地址。
根据本发明的第二方面,提供一种基于本发明第一方面所述系统的协议栈与物理层之间的通信方法,用于以协议栈和物理层中的一方作为发送端、另一方作为接收端从发送端向接收端发起通信任务,所述方法包括:S1、发送端将通信任务对应数据存入发送端对应的数据区中,并将通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的发任务队列;S2、发送端触发发送端发任务队列,将发任务队列中通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的消息区并触发中断通知接收端;S3、接收端响应中断,读取发送端对应的消息区中存储的当前通信任务的存储位置和数据长度并存入接收端对应的收任务队列中,退出中断;S4、接收端触发收任务队列,通过收任务队列获取通信任务对应数据的存储位置和数据长度以访问对应的发送端数据区并获得通信任务对应数据。
优选的,在所述步骤S1中,发送端将通信任务对应数据存入发送端对应的数据区中的空闲缓存器,对应的存储位置为存储该通信任务对应数据的缓存器起始地址。
优选的,在所述步骤S1中,通过查询发送端对应的数据区中的缓存器锁的状态找到空闲的缓存器以将通信任务对应数据写入。
优选的,在所述步骤S1中,发送端使用发任务队列缓存当前通信任务的存储位置和数据长度,发任务队列可以同时缓存多个发送任务。
优选的,在所述步骤S3中,接收端使用收任务队列缓存当前通信任务对应的存储位置和数据长度,收任务队列可以同时缓存多个任务。
优选的,在所述步骤S4中,接收端通过通信任务对应数据的缓存器起始地址访问发送端数据区中的缓存器,并查询缓存器的锁的状态获得缓存器使用状态,若缓存器为空闲则报错并将任务丢弃,若缓存器为占用则从缓存器中读取数据进行处理,完成数据处理后将缓存器的锁更新以指示缓存器空闲。
与现有技术相比,本发明的优点在于:
1、在协议栈与物理层在分别管理独立不重叠的共享内存的基础上,使协议栈和物理层各自维护收发队列,采用队列的方式对收发任务进行管理,在中断中只进行队列操作,减少中断处理的时间,避免因交互频繁、数据处理不及时或中断冲突导致的任务丢失问题。
2、在协议栈和物理层的共享内存中划分数据区和消息区,将数据区划分为多个大小相同的缓存器,通过静态分配构成环形结构的多个缓存器循环存储数据,使得交互数据在缓存器中拥有足够的空间,且使用较少的空间即可同时存储多组数据。
3、为数据区的缓存器增加锁用于指示缓存器的使用状态,避免多核或多进程对相同缓存器进行访问时产生的读写冲突问题,保证数据的可靠性。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1的(A)为根据本发明实施例的协议栈与物理层之间的通信系统的共享内存空间结构示意图;
图1的(B)为根据本发明实施例的协议栈与物理层之间的通信系统的共享内存中数据区的缓存器结构示意图;
图2为根据本发明实施例的协议栈与物理层之间的通信方法的流程示意图;
图3为根据本发明实施例的协议栈与物理层之间进行通信时发送端访问共享内存空间的流程示意图;
图4为根据本发明实施例的协议栈与物理层之间进行通信时接收端访问共享内存空间的流程示意图;
图5为根据本发明实施例的协议栈向物理层发起通信时的流程示意图;
图6为根据本发明实施例的物理层向协议栈发起通信时的流程示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
首先介绍一下本发明的技术思想与思路。如背景技术中提到的,在现有无线移动通信系统中的协议栈和物理层之间的通信中,协议栈与物理层使用共享内存空间存储数据,采用中断的方式进行直接通信,在中断中完成整个通信任务的数据传输。但采用这种方式仅考虑到了正常的通信情况,当协议栈和物理层的通信频繁的时候,容易因为数据处理不及时导致交互信息和通信数据丢失,同时多核或多进程间的通信也存在读写冲突等问题。为了解决上述问题,发明人通过研究发现,可以在协议栈与物理层分别管理独立不重叠的共享内存空间的基础上,将内存空间划分为协议栈数据区与消息区,物理层数据区与消息区,并将协议栈的数据区和物理层的数据区划分为多个大小相等的缓存器,使其形成首尾相连的环形结构,用于存储数据,并在每个缓存器中加入锁的功能用于指示缓存器当前是否被占用,同时协议栈和物理层各自均分别维护一条发任务队列和一条收任务队列,使得在协议栈或物理层的一方发起通信时,先将通信任务的数据存入对应数据区的缓存器中,再将存储数据的缓存器的起始地址与数据长度存入对应消息区中,在中断中只进行将消息区中存储的信息压入接收方的收任务队列中的操作,大大减少在中断中处理数据的时间,待空闲时再根据任务队列中的信息从对应数据区的缓存器中读取数据进行处理,避免因任务交互频繁或数据处理不及时导致的任务丢失问题以及读写冲突问题。
需要说明的是,本发明中协议栈和物理层分别为两个独立的进程实体,该方案适用于单处理器平台,也同样适用于同构/异构多核处理器平台。单核处理器下,协议栈和物理层可分别运行于两个不同的进程中;同构/异构多核处理器下,协议栈和物理层可分别运行于两个不同的处理核中,例如:协议层运行于ARM核,物理层运行于DSP核;或者协议栈和物理层均运行于ARM核。
为了更好的理解本发明,下面结合附图通过具体实施例来详细说明本发明。
图1的(A)为根据本发明实施例的协议栈与物理层之间的通信系统结构示意图。如附图1的(A)所示,协议栈消息区和协议栈数据区被配置在协议栈管理的共享内存空间中,例如MAC共享内存,包括MAC消息区和MAC数据区;物理层消息区和物理层数据区被配置在物理层管理的共享内存空间中,例如L1C共享内存,包括PHY消息区和PHY数据区。
根据本发明的一个实施例,本发明提供了一种协议栈与物理层之间的通信系统,用于完成协议栈和物理层之间的通信任务,协议栈或物理层分别对自己所管理的内存空间负责写入消息或数据,同时协议栈或物理层可以分别互相访问对方管理的内存空间,读取消息或数据,其中,所述系统包括协议栈消息区、协议栈数据区、协议栈发任务队列、协议栈收任务队列、物理层消息区、物理层数据区,物理层发任务队列、物理层收任务队列,下面对协议栈和物理层各自包括的部分分别进行说明。
在协议栈包括的部分中,协议栈消息区用于存储由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度;协议栈数据区用于存储由协议栈向物理层发起的通信任务对应的数据;协议栈发任务队列用于缓存待写入协议栈消息区的内容,其中包括由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度;协议栈收任务队列用于缓存从物理层消息区读取的内容,其中包括由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度。
在物理层包括的部分中,物理层消息区用于存储由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;物理层数据区用于存储由物理层向协议栈发起的通信任务对应的数据;物理层发任务队列用于缓存待写入物理层消息区的内容,其中包括由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;物理层收任务队列用于缓存待从物理层消息区读取的内容,其中包括由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度。
优选的,协议栈和物理层各自的收任务队列和发任务队列均可同时缓存多个通信任务对应的数据在协议栈数据区中的存储位置和数据长度。
优选的,所述由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置是协议栈数据区中存储该任务对应数据的缓存器的起始地址;所述由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置是物理层数据区中存储该任务对应数据的缓存器的起始地址。
协议栈数据区和物理层数据区均通过静态划分为多个大小相等的数据缓存器,每个数据缓存器均包含数据存储区(BUFFER)和锁(LOCK),其中,数据存储区用来存放协议栈和物理层通信时的实际交互数据,锁由每个缓存器的内存空间的起始字节构成,以用于指示对应缓存器的使用状态,包括空闲(EMPTY)或占用(FULL)。如附图1的(B)所示,N个数据缓存器首尾相连形成环形结构,用来循环存储数据,例如Lock 1、BUFFER 1,Lock 2、BUFFER2,Lock 3、BUFFER 3,...、Lock n、BUFFER n,在使用缓存器存储数据时依次按照BUFFER 1->BUFFER 2,BUFFER 2->BUFFER 3,……,BUFFER n->BUFFER 1的结构顺序。需要说明的是,协议栈与物理层的数据区中每个缓存器的内存空间大小不小于协议栈与物理层之间通信的最大交互信令的大小。
根据本发明的一个实施例,如附图2所示,本发明提供一种基于上述协议栈与物理层之间的通信系统的协议栈与物理层之间的通信方法,以协议栈或物理层中的一方作为发送端、另一方作为接收端由发送端向接收端发起通信的方法,其包括S1、S2、S3和S4四个步骤,下面对每个步骤进行说明。
在步骤S1中,发送端将通信任务对应数据存入发送端对应的数据区中,并将通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的发任务队列。
通常协议栈通过例如MAC层实现对物理层的消息传递和接收,物理层通过例如L1C层实现对协议栈的消息传递和接收。当协议栈或物理层的其中一方向另一方发起通信时,通过发送端所在的API(应用程序接口)模块将通信任务的数据进行组包,并写入发送端所在的数据区中,通过查询发送端对应的数据区中的缓存器锁的状态找到空闲的缓存器以将通信任务对应数据写入。优选的,该过程包括:查询一个缓存器的LOCK,如果为EMPTY则直接将数据写入BUFFER中,并将LOCK更新为FULL,否则报错,继续读取下一个缓存器的LOCK,重复此过程直到完成数据写入。完成在数据区的写入操作后,发送端再将写入通信任务数据的数据区中的缓存器的起始地址和写入数据的长度写入发送端发任务队列中。
在步骤S2中,发送端触发发送端发任务队列,将发任务队列中通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的消息区并触发中断通知接收端。
根据本发明的一个实施例,发送端队列可以挂起等待时机或立即触发发送端发任务队列,将发任务队列中存储的包含存储通信任务数据的数据区缓存器的起始地址和数据长度(二者简称为消息)写入发送端的消息区中,并由发送端触发中断通知接收端。优选的,发任务队列可以同时缓存多个发送任务所对应的消息(起始地址和数据长度)。
在步骤S3中,接收端立即响应中断,读取发送端对应的消息区中存储的当前通信任务的存储位置和数据长度并存入接收端对应的收任务队列中,退出中断。
根据本发明的一个实施例,当协议栈或物理层的其中一方接收另一方发起的通信时,接收端在接收到发送端触发的中断通知时,立即响应中断,读取发送端消息区中存储的消息(即发送端数据区中存储通信任务数据的缓存器起始地址和数据长度),并将其存入接收端收任务队列中,然后退出中断。优选的,收任务队列可以同时缓存读取的多个通信任务所对应的消息(起始地址和数据长度)。
在步骤S4中,接收端触发收任务队列,通过收任务队列获取通信任务对应数据的存储位置和数据长度以访问对应的发送端数据区并获得通信任务对应数据。
根据本发明的一个实施例,接收端队列可以挂起等待时机或立即触发接收端收任务队列,获取收任务队列中的消息,通过消息找到发送端对应的数据区中的缓存器,并将通信任务的数据进行处理,例如复制。优选的,该过程包括:在通过消息找到对应缓存器时,对缓存区LOCK进行判断,若为FULL说明该缓存区中存储有数据,此时再进行数据的处理,等到处理完成后再将LOCK更新为EMPTY,若为EMPTY则报错,说明通信出错,中止当前通信任务。采用这种方式使得协议栈或物理层在中断中进行针对收发任务队列的操作,大大减少了中断处理的时间,减少了通信交互中数据丢失的可能以及产生冲突的可能。
需要说明的是,上述方法中发送端将通信任务数据写入发送端数据区的操作以及接收端从发送端数据区中读出数据的操作所涉及到的数据转移过程,既可以通过硬件实现也可以通过软件实现,通过硬件可以使用例如DMA,根据发送端消息区提供的数据位置信息和数据长度,匹配DMA硬件寄存器的源地址、目的地址、数据长度;通过软件则直接使用例如软件指令,匹配发送端消息区提供的数据位置信息和数据长度。
为了使本发明的目的及方案更加清楚,下面结合附图,对协议栈或物理层作为发送端进行通信的过程分别进行详细说明。
发送端访问内存空间的具体过程如附图3所示,包括:步骤201,发送端查询一个缓存器的LOCK;步骤202,发送端判断LOCK的状态,如果为EMPTY则转到步骤203,否则报错并回到步骤201,继续读取下一个缓存器的LOCK,直到找到一个缓存器的LOCK的状态为EMPTY;步骤203,发送端将LOCK更新为FULL;步骤204,发送端将数据写入BUFFER中;步骤205,发送端将写入通信任务数据的数据区中的缓存器的起始地址(addr)和写入数据的长度(len)写入发送端发任务队列中;步骤206,发送端发任务队列被挂起以等待时机或立即触发,将发任务队列中存储的包含存储通信任务数据的数据区缓存器的起始地址和数据长度写入发送端的消息区中,并由发送端触发中断通知接收端。
接收端访问内存空间的具体过程如附图4所示,包括:步骤301,接收端收到发送端的中断后立即响应中断,读取发送端消息区中存放的存储通信任务数据区缓存器的起始地址(addr)和数据长度(len)存入接收端收任务队列中;步骤302,接收端收队列挂起等待时机或立即触发,获取收任务队列存储的缓存器的起始地址;步骤303,接收端通过缓存器起始地址找到发送端数据区中对应的缓存器,读取该缓存器的LOCK;步骤304,判断LOCK的状态,若为FULL则转到步骤306,否则转到步骤305;步骤305,接收端报错并终止当前任务;步骤306,接收端对缓存器BUFFER中存储的数据进行处理;步骤307,将缓存器的LOCK更新为EMPTY。
下面以协议栈中的例如MAC层、物理层中的例如L1C层举例说明协议栈与物理层之间的通信具体实施过程。
以协议栈作为发送端,物理层作为接收端,协议栈向物理层发起通信的具体实施步骤如附图5所示,包括:步骤S11,由协议栈发起向物理层的通信任务,MAC将任务交给MAC/L1C API;步骤S12,MAC/L1C API将需要准备发送的数据进行组包;步骤S13,MAC/L1C API将组包完成的数据写入到MAC共享内存的数据区,该步骤包括:首先读取MAC数据区中待写入缓存器的LOCK,若LOCK为EMPTY,则将LOCK更新为FULL,并将数据移动到上述缓存器中的数据存储区BUFFER中;若LOCK为FULL则报错,读取下一个缓存器中的LOCK,直至找到其LOCK为EMPTY的一个缓存器为止,将该缓存器LOCK更新为FULL,并向该缓存器中的数据存储区BUFFER中写入数据;步骤S14,MAC/L1C API将上述当前所使用的缓存器起始地址和数据长度缓存入MAC发任务队列中;步骤S15,MAC发任务队列挂起等待时机,或立即触发MAC/L1CAPI读取出MAC发队列中的内容,包括上述指定缓存器的起始地址和数据长度;步骤S16,MAC/L1C API将上述指定缓存器的起始地址和数据长度写入到MAC共享内存中的消息区;步骤S17,MAC/L1C API向物理层发起中断请求;步骤S18,L1C收到中断后,立即响应中断,调用L1C收任务队列;步骤S19,在中断服务程序中,L1C把从MAC消息区中读取到的起始地址和数据长度一起压入到L1C收任务队列中,并退出中断服务程序;步骤S1A,L1C收任务队列挂起等待时机,或立即触发L1C/MAC API读取出L1C收队列中的内容,包括上述缓存器的起始地址和数据长度;步骤S1B,L1C/MAC API根据起始地址和数据长度,从MAC数据区中找到上述指定的缓存器,拷贝或处理数据内容,该步骤包括:先读取MAC数据区中指定缓存器的LOCK,若LOCK为FULL,则正常进行拷贝或处理;若LOCK为EMPTY,则报错并终止当前任务。
以物理层作为发送端,协议栈作为接收端,物理层向协议栈发起通信的具体实施步骤如附图6所示,包括:步骤S21,由物理层发起向协议栈的通信任务,L1C将任务交给L1C/MAC API;步骤S22,L1C/MAC API将需要准备发送的数据进行组包;步骤S23,L1C/MAC API将组包完成的数据写入到L1C共享内存的数据区,该步骤包括:首先读取L1C数据区中待写入缓存器的LOCK,若LOCK为EMPTY,则将LOCK更新为FULL,并将数据移动到上述缓存器中的数据存储区BUFFER中;若LOCK为FULL则报错,读取下一个缓存器中的LOCK,直至找到其LOCK为EMPTY的一个缓存器为止,将该缓存器LOCK更新为FULL,向该缓存器中的数据存储区BUFFER中写入数据;步骤S24,L1C/MAC API将上述当前所使用的缓存器起始地址和数据长度缓存入L1C发任务队列中;步骤S25,发任务队列挂起等待时机,或立即触发L1C/MAC API读取出L1C发队列中的内容,包括上述指定缓存器的起始地址和数据长度;步骤S26,L1C/MAC API将上述指定缓存器的起始地址和数据长度写入到L1C共享内存中的消息区;步骤S27,L1C/MAC API向协议栈发起中断请求;步骤S28,MAC收到中断后,立即响应中断,调用MAC收任务队列;步骤S29,在中断服务程序中,MAC把从L1C消息区中读取到的起始地址和数据长度一起压入到MAC收任务队列中,并退出中断服务程序;步骤S2A,MAC收队列挂起等待时机,或立即触发MAC/L1CAPI读取出MAC收队列中的内容,包括上述缓存器的起始地址和数据长度;步骤S2B,MAC/L1C API根据起始地址和数据长度,从L1C数据区找到上述指定缓存器中,拷贝或处理数据内容,该步骤包括:先读取L1C数据区中指定缓存器的LOCK,若LOCK为FULL,则正常进行拷贝或处理;若LOCK为EMPTY,则报错并终止当前任务。
与现有技术相比,本发明取得了以下技术效果:
1、在协议栈与物理层在分别管理独立不重叠的共享内存的基础上,使协议栈和物理层各自维护收发队列,采用队列的方式对收发任务进行管理,在中断中只进行队列操作,减少中断处理的时间,避免因交互频繁、数据处理不及时或中断冲突导致的任务丢失问题。
2、在协议栈和物理层的共享内存中划分数据区和消息区,将数据区划分为多个大小相同的缓存器,通过静态分配构成环形结构的多个缓存器循环存储数据,使得交互数据在缓存器中拥有足够的空间,且使用较少的空间即可同时存储多组数据。
3、为数据区的缓存器增加锁用于指示缓存器的使用状态,避免多核或多进程对相同缓存器进行访问时产生的读写冲突问题,保证数据的可靠性。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种协议栈与物理层之间的通信系统,其特征在于,所述系统包括协议栈消息区、协议栈数据区、协议栈发任务队列、协议栈收任务队列、物理层消息区、物理层数据区,物理层发任务队列、物理层收任务队列,其中:
所述协议栈消息区用于存储由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度;
所述协议栈数据区用于存储由协议栈向物理层发起的通信任务对应的数据;
所述协议栈发任务队列用于缓存待写入协议栈消息区的内容,其中包括由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度;
所述协议栈收任务队列用于缓存从物理层消息区读取的内容,其中包括由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;
所述物理层消息区用于存储由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;
所述物理层数据区用于存储由物理层向协议栈发起的通信任务对应的数据;
所述物理层发任务队列用于缓存待写入物理层消息区的内容,其中包括由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置和数据长度;
所述物理层收任务队列用于缓存从协议栈消息区读取的内容,其中包括由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置和数据长度;
所述系统被配置为按照如下方式进行通信:以协议栈和物理层中的一方作为发送端、另一方作为接收端从发送端向接收端发起通信任务;发送端触发发送端发任务队列,将发任务队列中通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的消息区并触发中断通知接收端;接收端响应中断,读取发送端对应的消息区中存储的当前通信任务的存储位置和数据长度并存入接收端对应的收任务队列中,退出中断。
2.根据权利要求1所述的系统,其特征在于,所述协议栈消息区和协议栈数据区被配置在协议栈管理的共享内存空间中。
3.根据权利要求1所述的系统,其特征在于,所述物理层消息区和物理层数据区被配置在物理层管理的共享内存空间中。
4.根据权利要求1所述的系统,其特征在于,所述协议栈发任务队列和协议栈收任务队列均可同时缓存多个通信任务对应的数据在协议栈数据区中的存储位置和数据长度。
5.根据权利要求1所述的系统,其特征在于,所述物理层发任务队列和物理层收任务队列均可同时缓存多个通信任务对应的数据在物理层数据区中的存储位置和数据长度。
6.根据权利要求1-5之一所述的系统,其特征在于,所述协议栈数据区和物理层数据区均被配置为包含多个缓存器的数据区,其中,每个缓存器的内存空间起始字节被配置为锁,以用于指示对应缓存器的使用状态,所述使用状态为空闲或占用。
7.根据权利要求6所述的系统,其特征在于,所述协议栈与物理层的数据区中每个缓存器的内存空间大小大于或等于协议栈与物理层之间通信的最大交互信令的大小。
8.根据权利要求7所述的系统,其特征在于,所述协议栈数据区的缓存器被配置为首尾相连的环形结构。
9.根据权利要求8所述的系统,其特征在于,所述物理层数据区的缓存器被配置为首尾相连的环形结构。
10.根据权利要求9所述的系统,其特征在于,
所述由协议栈向物理层发起的通信任务对应的数据在协议栈数据区中的存储位置是协议栈数据区中存储该任务对应数据的缓存器的起始地址;
所述由物理层向协议栈发起的通信任务对应的数据在物理层数据区中的存储位置是物理层数据区中存储该任务对应数据的缓存器的起始地址。
11.一种基于权利要求1-10任一所述系统的协议栈与物理层之间的通信方法,用于以协议栈和物理层中的一方作为发送端、另一方作为接收端从发送端向接收端发起通信任务,其特征在于,所述方法包括:
步骤S1、发送端将通信任务对应数据存入发送端对应的数据区中,并将通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的发任务队列;
步骤S2、发送端触发发送端发任务队列,将发任务队列中通信任务对应数据在发送端对应的数据区中的存储位置和数据长度写入发送端对应的消息区并触发中断通知接收端;
步骤S3、接收端响应中断,读取发送端对应的消息区中存储的当前通信任务的存储位置和数据长度并存入接收端对应的收任务队列中,退出中断;
步骤S4、接收端触发收任务队列,通过收任务队列获取通信任务对应数据的存储位置和数据长度以访问对应的发送端数据区并获得通信任务对应数据。
12.根据权利要求11所述的方法,其特征在于,所述步骤S1中,发送端将通信任务对应数据存入发送端对应的数据区中的空闲缓存器,对应的存储位置为存储该通信任务对应数据的缓存器起始地址。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:通过查询发送端对应的数据区中的缓存器锁的状态找到空闲的缓存器以将通信任务对应数据写入。
14.根据权利要求11所述的方法,其特征在于,在所述步骤S4中,接收端通过通信任务对应数据的缓存器起始地址访问发送端数据区中的缓存器,并查询缓存器的锁的状态获得缓存器使用状态,若缓存器为空闲则报错并将任务丢弃,若缓存器为占用则从缓存器中读取数据进行处理,完成数据处理后将缓存器的锁更新以指示缓存器空闲。
15.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现权利要求11-14中任一所述方法的步骤。
16.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求11-14中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210422281.4A CN114828298B (zh) | 2022-04-21 | 2022-04-21 | 一种协议栈与物理层之间的通信系统与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210422281.4A CN114828298B (zh) | 2022-04-21 | 2022-04-21 | 一种协议栈与物理层之间的通信系统与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114828298A CN114828298A (zh) | 2022-07-29 |
CN114828298B true CN114828298B (zh) | 2024-05-10 |
Family
ID=82506038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210422281.4A Active CN114828298B (zh) | 2022-04-21 | 2022-04-21 | 一种协议栈与物理层之间的通信系统与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114828298B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060061523A (ko) * | 2004-12-02 | 2006-06-08 | 한국전자통신연구원 | 휴대 인터넷 시스템의 단말 장치와 단말 장치에서의 상향데이터 전송 방법 |
CN102006674A (zh) * | 2010-11-25 | 2011-04-06 | 中兴通讯股份有限公司 | 消息处理方法及装置 |
CN102547848A (zh) * | 2011-01-04 | 2012-07-04 | 华为技术有限公司 | 一种处理业务数据流的方法和装置 |
CN112698959A (zh) * | 2019-10-23 | 2021-04-23 | 普天信息技术有限公司 | 一种多核通信方法和装置 |
-
2022
- 2022-04-21 CN CN202210422281.4A patent/CN114828298B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060061523A (ko) * | 2004-12-02 | 2006-06-08 | 한국전자통신연구원 | 휴대 인터넷 시스템의 단말 장치와 단말 장치에서의 상향데이터 전송 방법 |
US7944824B2 (en) * | 2004-12-02 | 2011-05-17 | Samsung Electronics Co., Ltd. | Terminal of portable internet system and method of transmitting uplink data in terminal |
CN102006674A (zh) * | 2010-11-25 | 2011-04-06 | 中兴通讯股份有限公司 | 消息处理方法及装置 |
CN102547848A (zh) * | 2011-01-04 | 2012-07-04 | 华为技术有限公司 | 一种处理业务数据流的方法和装置 |
CN112698959A (zh) * | 2019-10-23 | 2021-04-23 | 普天信息技术有限公司 | 一种多核通信方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114828298A (zh) | 2022-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112422615B (zh) | 一种通信的方法及装置 | |
US20210011785A1 (en) | Methods and apparatus for correcting out-of-order data transactions between processors | |
US20040015979A1 (en) | System and method for efficiently exchanging data among processes | |
WO2019024727A1 (zh) | 消息处理方法以及基站 | |
CN111404931B (zh) | 一种基于持久性内存的远程数据传输方法 | |
US10929332B2 (en) | USB transmission device and transmission method | |
WO2024088268A1 (zh) | Rdma事件管理方法、设备及存储介质 | |
CN113535425A (zh) | 一种数据发送方法、装置、电子设备及存储介质 | |
EP2845110B1 (en) | Reflective memory bridge for external computing nodes | |
US10318362B2 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium | |
CN114828298B (zh) | 一种协议栈与物理层之间的通信系统与方法 | |
CN111831596B (zh) | 一种rtos串口网络传输方法及装置 | |
US6535942B1 (en) | Method for reducing processor interrupt load | |
US20190004963A1 (en) | Dual pointer for memory mapped interface communication | |
KR20070076092A (ko) | 멀티모드 단말기 및 데이터 패킷 전달 방법 | |
WO2014043309A1 (en) | Method of random access message retrieval from first-in-first-out transport mechanism | |
JPWO2003014947A1 (ja) | ホスト装置、電子装置及び伝送システムの制御方法 | |
CN116932454B (zh) | 数据传输方法、装置、电子设备及计算机可读存储介质 | |
JP6885635B1 (ja) | 情報処理装置、情報処理方法及び情報処理装置用プログラム | |
TWI411922B (zh) | 通用串列匯流排主機控制器和通用串列匯流排主機控制方法 | |
US10762011B2 (en) | Reflective memory bridge for external computing nodes | |
KR101562249B1 (ko) | 인피니밴드 환경에서의 데이터 처리 방법 및 이를 지원하는 단말 장치 | |
CN116225742A (zh) | 一种消息分发方法、设备以及存储介质 | |
CN117331689A (zh) | 数据处理方法、网卡及计算设备 | |
CN117453582A (zh) | 数据传输方法、设备及存储介质 |
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 |