协议栈的结构及模块培训.docx
《协议栈的结构及模块培训.docx》由会员分享,可在线阅读,更多相关《协议栈的结构及模块培训.docx(18页珍藏版)》请在冰点文库上搜索。
![协议栈的结构及模块培训.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/2c486a7a-1cce-40b1-a884-9bba3dea5a79/2c486a7a-1cce-40b1-a884-9bba3dea5a791.gif)
协议栈的结构及模块培训
协议栈的结构及模块培训
目录
1.协议栈的总体架构2
1概述2
1.协议实现2
2.协议运行过程简述3
2、GSM部分的体系结构图:
6
3、GPRS部分的体系结构图:
7
2.协议栈的模块功能7
1.API模块8
2.CC模块8
3.SM模块8
4.SS模块8
5.SMS模块8
6.CB模块8
7.SNDCP模块8
8.MM模块9
9.LLC模块9
10.RR模块10
11.LAPDm模块10
12.RLU模块10
13.RLD模块11
14.L1模块11
15.SIM模块11
16.RLP模块11
3.协议栈的TRACE实现11
ChangeHistory
Date
Chapter
Type
Contents
Owner
2006.01.16
All
New
Liujianguo
Note:
Typeincludes:
New,Add,Modify,Delete
1.协议栈的总体架构
1概述
1.协议实现
StackCom协议栈是基于3GPP规范release1999,实现了GSM/GPRS的基本功能。
StackCom协议栈是基于StackCom的嵌入式实时操作系统(SXR)开发的。
该操作系统实现了内存及队列管理,信箱管理,信号量管理,定时器管理,任务表管理,JOB管理等功能。
StackCom协议栈主要使用了操作系统的内存及队列管理,信箱管理,定时器管理,任务管理,JOB管理。
StackCom协议栈的实现主要是通过消息传送驱动任务调度及帧中断驱动JOB调度来实现,还采用了部分函数调用。
L2、L3的功能实现基本是依靠任务调度。
L1使用了任务及JOB,在接收上层控制时,是通过任务实现的,而处理帧内容(8时序),响应帧中断,是通过JOB调度实现的。
任务调度通过消息驱动来实现,在Stackcom中,消息由消息ID、消息长度和消息体(messagebody)组成。
其中消息ID和消息长度构成了消息头(messageheader)。
消息在各个任务间传递方式有两种:
信箱(mailbox)和队列(queue)。
在stackcom中定义了两种信箱,主信箱(mainmailbox)和保存信箱(savemailbox)。
主信箱,用于任务间通讯。
任务在发送消息后,如果接收消息的模块优先级高于发送消息模块的优先级,则转入接收消息的任务,对该消息进行处理,同时把发送消息的任务挂起。
当task在某些状态下无法处理接收到的消息,但该消息可以随后处理时,task把该消息保存到保存信箱中,在适当的时候进行处理。
消息通过队列传递存在于L1,L2之间,用于L2发送block到无线接口,使用队列的目的是避免无谓的激活L1,因为L1只有到特定的时间才发送保存的block。
帧中断根据启动的JOB及JOB优先级调用不同JOB处理相关的信息。
2.协议运行过程简述
协议在开始运行后首先从操作系统预留的空间(起始地址为_HEAP_START,长度为SXS_HEAP_SIZE)创建堆。
创建堆分为两类,内部SRAM,和外部SRAM。
然后初始化信箱,任务,JOB,分配可用信箱ID(即创建信箱),然后初始化定时器,队列,串口,I/O。
创建Idletask,根据用户task配置表创建各个用户task。
创建任务包括给各个任务分配栈,优先级(Idle任务优先级最低)。
设置trace位图,设置各个task中能够输出trace信息的级别;然后在在外部RAM堆(heap)中根据用户需要创建cluster,创建出大小不同的块。
最后启动适合的任务。
流程建图1:
图1
对于JOB,协议在运行期间根据需要可以创建,挂起或者删除JOB。
在创建JOB时包括给各个JOB分配栈,优先级(Idle任务优先级最低),JOBID,JOB响应处理函数,JOB退出函数等。
协议栈一共包括API,SMS,SS,CC,MM(MMC,MMP),CB,SIM,RR(MAC),LAPDm,SM,SNDCP,LLC,RLU,RLD,RLP,L116个模块,由17个任务完成,其中一个为IDLE任务。
16个模块是由21个状态机实现。
其中SMS由4个状态机实现。
MM由两个状态机实现,包括MMC,MMP分别实现GSM与GPRS功能。
SMS与MM的关系见图2:
图2
RR由三个状态机实现。
RRI_P主要负责PLMN选择功能,RRI_C负责小区选择及重选、系统消息的接收及测量报告的发送功能。
RR_RRD主要负责在专用模式下的无线资源的管理。
3.体系结构图
下面为协议栈的体系结构图,表明了各个模块之间的交互及控制和数据的流向.
2、GSM部分的体系结构图:
图3
3、GPRS部分的体系结构图:
图4
JOB一共包括CchJob,CbchJob,BcchJob,RachJob,SDcchJob,TchJob,PowerJob,NearJob,PCchJob,PBcchJob,PdchJob,PTCchJob,PSJob,TBFSetUpJob,MonitoringJob,HoAccessJob,TBFReleaseJob,17个Job是根据逻辑信道及有关功能进行划分的。
2.协议栈的模块功能
协议栈中,每个模块都实现了各自的功能。
下面分述如下:
1.API模块
为上层应用提供与协议栈的接口。
2.CC模块
这个模块负责电路切换呼叫控制,主要包括:
普通呼叫建立,包括主叫与被叫。
紧急呼叫建立
呼叫保持及呼叫终止(挂断)
呼叫中修改(Bearer)
DTMF控制
呼叫相关的附加业务
3.SM模块
SM(sessionmanagement)会话管理,是指GPRSMS连接到外部数据网络的处理过程,支持用户终端的PDP上下文处理。
功能主要包括:
PDP上下文的激活、解除和修改。
4.SS模块
该模块主要功能是处理独立于呼叫的附加业务和非结构性的附加业务数据流程。
附加业务包括呼叫转移,用户参与转移,三方通话等。
5.SMS模块
该模块处理短消息。
包括电路交换或者包交换信道下点对点的发送短消息的链路建立及短消息传送的处理流程、接收短消息的处理流程。
6.CB模块
主要根据时间表非连续性的接收小区广播消息。
7.SNDCP模块
SNDCP(SubnetworkDependentConvergenceProtocol),子网汇集协议。
MS或者SGSN中继的分组数据协议(PDP)使用SNDCP提供的业务。
此外,一个控制实体也可以是一个SNDCP用户,例如AT命令解释器。
SNDCP使用逻辑控制链路(LLC)层和会话管理(SM)子层提供的业务。
SNDCP的主要功能包括:
1、若干PDP的合路;
2、N-PDU的缓存
3、端对端的应答LLC业务的建立及释放;
4、XID参数协商
5、用户数据的压缩和解压缩;
6、协议控制信息的压缩和解压缩;
将网络协议数据单元(N-PDU)分解成逻辑链路控制协议数据单元(LL-PDU),同时,也将LL-PDU组装成N-PDU。
8.MM模块
该模块主要实现GSM/GPRS移动性管理,安全管理功能,例如通知网络它的当前位置和提供用户机密性身份。
MM子层的进一步功能是为上层接续管理子层的不同实体提供连接管理服务。
TMSI再分配流程
鉴权流程
ID标识流程
异常终止流程
IMSI分离流程
普通注册更新流程
周期更新流程
IMSI附加流程
MM连接管理流程
GPRSTMSI再分配流程
GPRS鉴权和计算流程
GPRSID标识流程
GPRSMM信息流程
GPRSIMSI分离流程
GPRSIMSI附加和结合GPRS附加流程
GPRSIMSI分离和结合GPRS分离流程
普通路由区域更新和结合路由更新流程、周期路由区域更新流程、服务请求
9.LLC模块
LLC主要为GMM,SMS,SNDCP提供一条可靠的加密链路。
主要功能包括:
应答模式的建立、重建立和释放;
传输上层的应答数据和非应答数据;
错误检测和恢复;
加密;
10.RR模块
该模块主要是对GSM/GPRS物理信道的分配、管理及保持。
也包括了GPRS的MAC。
主要功能有:
小区选择和重选;
PLMN选择和重选;
获取BCCH和PBCCH上的系统信息;
转发系统信息给相应的模块;
建立和释放dedicated链路;
传输和路由GSM高层信令消息;
加密控制;
Handover;
建立和释放包信道,TBF;
传输RLC数据Block;
传输RLC/MAC控制Block;
网络控制的cellchange
小区更新
测量和测量报告
设置物理层参数
TLLI管理
11.LAPDm模块
LAPDm为3层传送来自GSMPLMN空口上的消息。
主要提供下列功能:
非应答数据的传输;
多帧操作的建立和释放;
多帧操作建立冲突的解决
应答数据的传输;
多帧操作时异常的报告和恢复;
多帧操作的挂起和恢复;
L3数据的分段和重组;
多帧操作的终止
12.RLU模块
在LLC层和MAC层间向下传输LLCPDU;
把LLCPDU分段成RLCblock;
把RLC/MAC控制消息分段成RLC/MAC控制block;
把RLC/MAC控制block重组成RLC/MAC控制消息;
BEC流程;
RLC数据block的选择性重传
13.RLD模块
在LLC层和MAC层间向下传输LLCPDU;
把RLCblock重组成LLCPDU;
14.L1模块
L1在处于RR的控制下,进行与小区的同步,在逻辑信道上接收及传送数据及信息。
主要功能有:
FCH/SCH检测;
在(P)BCCH、(P)CCCH、(P)PCH、SDCCH、TCH(/H)、FACCH(/H)、SACCH(/H)、PDCH和PTCCH上接收数据;
在(P)BCCH、(P)CCCH、(P)PCH、SDCCH、TCH(/H)、FACCH(/H)、SACCH(/H)、PDCH和PTCCH上发送数据;
Handover管理;
测量;
接收增益控制;
功率控制;
时间和频率控制;
15.SIM模块
该模块主要负责与SIM的操作,包括有关数据的读写操作,安全验证等。
16.RLP模块
RLP是无线链路协议(radiolinkprotocol),处理GSM有关数据的业务。
3.协议栈的TRACE实现
Trace输出根据用户设定输出级别选择性进行输出。
用户设置trace位图,设置各个task中能够输出trace信息的级别。
每个任务及相应函数会根据内容设定不同的输出级别。
举个例子:
假设在MM位置注册请求处理函数中,有信息需要输出,设置的输出级别为2。
在用户设置的trace位图中,用户没有开放个级别,即在MM的trace位图变量中,相应的第二个bit没有置位。
用户可以设置模块相应trace位图为全部级别开放,然后在Trace工具上对相应的级别进行选择。
每个模块的trace位图变量为一个32位的变量。
trace位图bit构成见下图5
图5
ID:
用户ID,标识模块
LEVEL:
定义trace输出级别,用4个bit表示,一共16个级别,16个级别中,级别1~5为系统占用级别,6~16为各模块自定义级别
TIDU:
不打印trace信息标志,如果该位置位,不论输出级别和STDOUT域是否被置位均不打印trace信息。
ABORT:
Abort标志,如果该位置位,表示发生异常,需要退出。
RAISE:
捕获异常标志,表示有异常产生。
TDB:
数据库标志,未使用。
SMAP:
6bit,未使用。
STDOUT:
当该位置位时,输出trace信息。
只要输出级别被置位或者STDOUT被置位,则输出trace信息。
ARG:
存在参数标志,未使用。
NB_ARG:
参数个数,未使用。
输出开关使用的是LEVEL域,及TSTDOUT位。
下面为一个开机到注册成功的流程图:
图6
下面为对应的TRACE输出信息,这些信息显示了需要的内容,没有得到显示的是TRACE级别没开或者没有改模块参与处理。
SYS00:
==============================================
SYS00:
StartingStartStack(Band)14:
26:
37
SYS00:
==============================================
TSP00:
Fn8379T16T27T315
API01:
<--
API01:
-->
_RR01:
<--
TSP00:
Fn8380T16T28T316
_RR01:
<--
L1S01:
ExitNearJob
TSP00:
Fn0T10T20T30
L1S01:
StartMonitoringscheduler.
L1S01:
Startnearcellscheduler.
L1S01:
ExitNearJob
L1S01:
Startnearcellscheduler.
TSP00:
Fn1T10T21T31
L1S01:
Startinitialpowermeasurementhandler,2365Measures
API01:
-->
_MM01:
<--
_MM05:
mmc_Fsm[mmc_NULL,STK_START_REQ]==>mmc_NULL
_MM05:
API01:
<--
API01:
-->
TSP00:
Fn409T10T219T31
API01:
<--
API01:
-->
API01:
<--
API01:
-->
_RR01:
<--
TSP00:
Fn410T10T220T32
API01:
-->
_MM01:
<--
_MM06:
SIMavailable
_MM06:
ReadSimfile0x20
_MM03:
-->
TSP00:
Fn412T10T222T34
_RR01:
<--
TSP00:
Fn415T10T225T37
_RR01:
<--
_MM06:
C013BD6064F00010381300
TSP00:
Fn418T10T22T310