GSM0710中文版.doc_第1页
GSM0710中文版.doc_第2页
GSM0710中文版.doc_第3页
GSM0710中文版.doc_第4页
GSM0710中文版.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

杭州波导软件有限公司CMUX协议文档 修订情况记录:版本号修订人修订原因修订日期审核测试签收V0.8徐兵林新建2008-11-4V1.0高金山完成2009-2-11目录CMUX协议文档11. 引言41.1. 编写目的41.2. 编写背景41.3. 参考资料41.4. 名字解释42. CMUX协议框架53. Non Error Recovery Mode83.1. 服务接口定义83.1.1. 服务模型83.1.2. 启动CMUX服务模式93.1.3. 建立DLC服务93.1.4. 数据服务103.1.5. 功耗控制103.1.5.1. Sleep模式113.1.5.2. Wake up模式113.1.6. 释放DLC服务113.1.7. 关闭服务113.1.8. 控制服务113.1.8.1. 07.10协议服务123.1.8.2 虚拟端口服务133.2. 数据帧结构143.2.1. 帧域143.2.1.1. 标志域(Flag Sequence Field)143.2.1.2. 地址域(Address Field)143.2.1.3. 控制域(Control Field)153.2.1.4. 信息域(Information Field)153.2.1.5. 长度指示域(Length Indicator)153.2.1.6. FCS域(Frame Checking Sequence Field)153.2.2. 格式约定163.2.3. 帧有效性163.2.4. 帧中止163.2.5. 数据帧之间的填充163.2.6. 基本Basic163.2.6.1. 约束173.2.7. 高级Advanced173.2.7.1. 控制字节透明173.2.7.2. 开始/停止传输-扩展透明173.2.7.3. 流控(Flow-control)透明183.2.7.4. 帧的结构183.3. 帧类型183.4. 过程和状态193.4.1. 建立DLC链路193.4.2. 释放DLC链路203.4.3. 信息传输203.4.4. 帧变量213.4.5. 超时的考虑213.4.6. 多路控制通道213.4.6.1. 控制消息格式223.4.6.2. 控制消息类型参数223.4.7. 电源控制与唤醒机制293.4.8. 流控293.5. 集成层Convergence Layer293.5.1. 类型1-未结构化的字节流293.5.2. 类型2-带参数的未结构化的字节流303.5.3. 类型3-不可中断的帧数据313.5.4. 类型4-可中断的帧数据313.6. DLCI值323.7. 系统参数333.7.1. 确认时间T1333.7.2. 帧的最大长度N1333.7.3. 最大重发次数N2333.7.4. 窗口大小k333.7.5. 控制通道的响应时间T2333.7.6. 唤醒流程的响应时间T3343.8. 启动和关闭MUX344. Error Recovery Mode341. 引言1.1. 编写目的本文档根据GSM07.10协议同时结合E901 Mobile参考代码,对CMUX多串口协议进行了大致的描述。由于7.10协议可以使用两种传输模式non-error和error模式,本文档只介绍non-error模式。1.2. 编写背景1希望CMUX协议有一个总体框架;2想要了解CMUX多串口协议的通讯设计;1.3. 参考资料1GSM07.10协议2E901 Mobile参考CMUX通讯代码1.4. 名词解释1CMUX多串口协议2ABMAsynchronous Balanced Mode异步平衡模式3ERMError-Recovery Mode错误校验模式4DLCData Link Connection数据链路连接5FCSFrame Check Sequence帧校验序列6SARMSet Asynchronous Balanced Mode设置异步平衡模式7UAUUnnumbered Acknowledgement未编号的确认信息8DMDisconnected Mode断开模式9UIHUnnumbered Information with Header Check未编号的带校验头的信息10UIUnnumbered Information未编号的信息11PSCPower Saving Control省电控制12MSCModem状态命令13HDLCHigh-level data link control高级数据链路控制2. CMUX协议框架多路复用协议提供在单个物理通信通道之上虚拟出多个并行的逻辑通信通道的能力,一般应用于TE(Terminal Equipment)与MS(Mobile Station)之间,TE相当于智能手机的AP端,MS相当于智能手机的MODEM端,下图给出了典型的协议层次关系:蓝色部分就是MUX多路复用层,它利用底层的物理串口链接收发数据,同时向上层提供若干个逻辑上独立使用的收发通道(上图中提供了四个逻辑通道,不同颜色表示)。每个逻辑通道独立创建,可以拥有软件流控制。在实际使用中,TE端的MUX向MS端的MUX发起通道建立请求,设置通道参数等,是主动的一方;MS端的MUX等待TE端的服务请求,根据自身能力提供相应服务。也就是说,两者的角色是不对称的。GSM07.10协议就是一个提供MUX功能的标准协议,也是实际中较广泛使用的协议。在E901项目中,NXP的5209 MODEM软件提供标准的07.10 MUX功能,AP端开发了07.10 MUX的驱动,如上图所示,AP 端的MUX驱动利用了物理串口FFUART(COM1:),同时向系统提供了三个逻辑串口(COM7: COM9:COM8:),其中COM7:是AT命令口TEMS;COM9:是URC口 TEMS;COM8:是数据端口TE Responder 1Responder - Initiator 0Response Initiator - Responder 0Responder - Initiator 1如主机建立的MUX,主机发命令包时,Address为0x7,猫响应Address也是0x7。3.2.1.3. 控制域(Control Field)表2:控制域的编码Frame Type12345678备注SABM (Set Asynchronous Balanced Mode)1111P/F100UA (Unnumbered Acknowledgement)1100P/F110DM (Disconnected Mode)1111P/F000DISC (Disconnect)1100P/F010UIH(Unnumbered Information with Header check)1111P/F111UI (Unnumbered Information)1100P/F000可选P/F是Poll/Final位,表示测试/返回。后续会介绍。比如建立DLC的时候,主机发SABM帧, 并把P置1,如果成功,对方返回UA帧,并把F置1,否则返回DM帧,并把P置1。3.2.1.4. 信息域(Information Field)信息域,它是实际数据域。UI帧或UIH帧,才有该域。3.2.1.5. 长度指示域(Length Indicator)只有在基本模式下,该域才存在。可以是1个字节,也可以是2个字节长度;Bit No.12345678SignalE/AL1L2L3L4L5L6L7图3:长度域的首字节Bit No.12345678SignalL8L9L10L11L12L13L14L15图4:长度域的第二个字节EA位表示该域是否只有本字节。为1表示本字节就是长度域,为0表示后续还有一个字节。3.2.1.6. 校验域(Frame Checking Sequence Field)帧的校验序列。它是两个CRC校验码,异或后,再取反的结果。这两个CRC校验码,都是8位的,生成的多项式为x8 + x2 + x + 1。一个是xk*(x7+x6+x5+x4+x3+x2+x1+1),其中k是校验数据的BIT位的数目,一个是x8*(校验数据),校验数据,就是该帧的实际数据。由于比较复杂,可以参考CRC校验原理。在包为UIH帧时,实际数据域,不参与校验,只校验Address,Control和Length这几个域。3.2.2. 格式约定 所有传输的字符以“一个起始位,八个数据位,无奇偶校验位和一个停止位”进行传输。所有的域,先传输域的第1位。对于字节而言,也就是低位先传。地址,命令,响应和序列数,都先传低位。FCS序列,先传高次方的项的系数。注意:这些约定意味着常常需要转换BIT位顺序。3.2.3. 帧有效性检验数据传输是否正确,可以根据下面的条件判断:1)is not properly bounded by two flags不正确的边界条件位;2)在两个边界条件位(flags)之间,至少有三个字节。3)FCS的CRC校验错误;4)地址域大于一个字节。无效帧,通常会在不通知发送方的情况下被丢弃。Multiplexer的MS或TE端接收到无效帧后,所要做的处理,由它的实现者去考虑。然而,接收到FCS校验域错误的帧的提示信息,对音频/视频的DLC或许很有用。3.2.4. 帧中止不支持帧的中止。3.2.5. 数据帧之间的填充除了省电模式唤醒的过程,在数据帧与数据帧之间,需要填充一些stop标识。这种填充了标识字符的情况下,接收方应该能正确处理。如果接收端,收到了多于3个连续的标识,它在第一时间开始传输连续的标识(参见省电部分)。3.2.6. 基本Basic FlagAddressControlLength IndicatorInformationFCSFlag1B1B1B1B/2B长度不确定1B1B图5:basic模式的帧的结构在基本模式下的flag为下面的格式:=0xF9Bit12345678Data10011111图6:basic模式的标识域3.2.6.1. 约束1)结束flag也可能是下一帧的开始标志。2)在高级的模式中flag不一样。3)不支持DC1/XON和DC3/XOFF的控制字符。3.2.7. 高级Advanced如果MUX会话开始,就使用了高级模式,那么,它就可以用于各种数据帧了。这种机制基于控制字节透明(a control octet transparency)。它基于每帧的开(Opening)和闭(Closing)的Flag标志的出现是唯一的。这些标志不可能出现在数据帧的信息域。如果在TE-MS链路上,出现了同步的丢失,这种机制允许快速的同步恢复。3.2.7.1. 控制字节透明下面的透明机制应用于每个数据帧,从地址域到FCS域(含)。ESC控制字节,是一个透明标识符,它标识了应用了下面透明流程的数据帧的一个字节。ESC控制字节编码如下:传输器(transmitter)将检查从开标识到闭标识的一个数据帧,包括地址域,控制域,FCS域。FCS域是这样计算的:- 当出现了标识或ESC控制字节时,补足该字节的第6位,并且- 在传输的前一个字节与本字节中间,插入一个ESC控制字节(Insert a control escape octet immediately preceding the octet resulting from the above prior to transmission)。接收器(receiver)将检查两个标识字节之间的数据帧,收到一个ESC控制字节,并且预先进行FCS计算:- 丢弃ESC控制字节,并且- 通过补足它的第6位,恢复紧接着的字节。其他字节值也可通过传输器,包含在透明流程中。因此,包含哪些东西,取决于前述的系统和应用程序的约定。3.2.7.2. 开始/停止传输-扩展透明传输器(transmitter)对追加到标志域和ESC控制字节上的其他字节应用上述的透明流程。目前,仅有的其他字节是流控(flow-control)字符。流程参见3.2.6.3。3.2.7.3. 流控(Flow-control)透明流控(Flow-control)透明选项,为ISO/IEC646(例如1000100x和1100100x分别表示x可以是0或者1)DC1/XON和DC3/XOFF控制字符,提供了透明的流程。这就确保了字节流不包含像流控字符(不管奇偶校验)那样,能被中间设备打断的数值。3.2.7.4. 帧的结构帧的结构如图7所示。注意,这种结构不包括同步(例如,开始和停止位)或者透明目的所增加的信息。传输的顺序从左往右。透明机制被激活的情况下,帧的结构如下所示: FlagAddressControlInformationFCSFlag1B1B1B长度不确定1B1B图7:advanced模式的帧结构在高级模式下的flag为下面的格式:=0x7EBit12345678Data01111110图8:advanced模式的标识域注意:结束flag也可能是下一帧的开始标志。3.3. 帧类型 1) Set Asynchronous Balanced Mode (SABM) command 2) Unnumbered Acknowledgement (UA) response3) Disconnected Mode (DM) response4) Disconnect (DISC) command5) Unnumbered information with header check (UIH) command and response6) Unnumbered Information (UI) command and response3.3.1. SABM commandSABM命令帧用来把指定的一端设置成异步平衡模式(ABM),这种模式下,所有的控制域的长度都是一个字节。另外一端接收到SABM命令帧后,第一时间发送一个UA回应帧,作为确认。接收到该命令,DLC发送和接收的状态,都将被置0。3.3.2. UA responseUA回应帧,是对SABM和DISC这两个命令帧的确认。3.3.3. DM response它用于报告一端(station)逻辑上从数据链路上断开的状态。链路断开后,将收不到任何命令,直到收到SABM重新建立通道为止。如果在链路断开状态,收到DISC命令,就应该发一个DM作为响应。3.3.4. DISC commandDISC命令用于终止通道。一端用它通知另外一端,它正在挂起操作并且将进入逻辑断开模式。在处理这个命令以前,接收一端,用UA命令去回应,作为对收到DISC命令的确认。用DLCI 0通道传送的DISC命令,跟MUX的关闭命令(见3.4.6.3)具有相同的意思。关于关闭流程的更多信息,参加3.8.2。3.3.5. UIH command/responseUIH命令帧/响应帧,用来传递不带有能影响任何一端的V(S)和V(R)变量的信息。被传输的信息的完整性与传输到正确的DLCI相比,不太重要时,可以用UIH。UIH的帧,FCS只对地址域,控制域和长度域,进行计算。UIH命令帧/响应帧的接收,不是顺序的编号(被数据链路流程检验)。因此,假如数据链路在受保护的该命令部分的传输过程中发生了异常,UIH数据帧可能丢失;假如对该命令的回复过程中出现了异常,UI数据帧可能会重复。UIH命令帧/响应帧,没有指明回应帧。3.3.6. UI command/responseUI命令帧/响应帧,用来传递不带有能影响任何一端的V(S)和V(R)变量的信息。UI命令帧/响应帧的接收,不是顺序的编号(被数据链路流程检验)。因此,假如数据链路在受保护的该命令部分的传输过程中发生了异常,UI数据帧可能丢失;假如对该命令的回复过程中出现了异常,UI数据帧可能会重复。UI命令帧/响应帧,没有指明回应帧。对UI数据帧来说,FCS对所有域(地址域,控制域,长度域,信息域)进行计算。是否支持UI数据帧,是可选的。3.4. 过程和状态TEMSAT+CMUX=OKSABM(1)UA(1)SABM(2)UA(2)SABM(3)UA(3)SABM(0)UA(0)UIH(1,“ATrn”)UIH(1,“OKrn”)UIH(0,CLD)UIH(0,CLD-ACK)3.4.1. 建立DLC链路多数情况,DLC链路是由TE建立的,然而,协议上是对等的,MS也可以建立它,但本文不叙述这种情况。建立过程如下:首先发起方发送P位为1的SABM命令,地址域是通道的编号。响应方发F位为1的UA作为回应。如果响应方没准备好,或者不愿意建立,那么,它就回一个F位为1的DM帧。一旦DLC建立成功,就意味着进入了连接状态,可以传输数据了。如果T1时间以内,收不到UA或DM的响应,就重发SABM。这个动作可以一直重复,直到得到响应,或者上层应用采取了其他措施。如果没有协商过程,DLC的参数就是默认的。3.4.2. 释放DLC链路双方都可以发送P位为1的DISC命令,来释放DLC链路。另外一方回应F位为1的UA帧。如果释放成功,DLC就进入断开状态。如果收到DISC命令时,发现已经是断开状态了,就发一个DM作为回应。如果T1时间内,没有收到UA或者DM的响应,就重发DISC命令。这个动作可以一直重复,直到得到响应,或者上层应用采取了其他措施。3.4.3. 信息传输3.4.3.1. 信息数据信息使用UI或UIH进行传输。UIH一定要支持,UI是可选的。当知道数据被正确的接收非常重要时,就采用UI,例如IP业务包。传输出错无所谓时,使用UIH。由于及时性的关系,不能采用差错恢复的机制时,可以使用UI或UIH,比如音频数据。双方都要把P位置0。C/R位,参见上面的描述。信息的最大长度,受系统的参数所限制。3.4.3.2. 优先级每个数据流,都有对应的优先级。总共有0-63级别的优先级,数字越小,表示优先级越高。TE位每个DLC指定一个优先级,并且,用控制通道,通知MS。如果一条消息缺省优先级,DLC将根据3.6中的DLCI分配表指定它的优先级。传输器(transmitter)控制哪些帧要传输,以及对它们按何种结构进行封装,并且不描述这些工作是如何完成的。假如比现在正在传输的数据的优先级更高的数据正在等待,传输器有如下几个可以采用的选项:a) 先传输完当前帧。b) 中止对当前帧的打包,传输当前的FCS和终止标识Flag(只对advanced),并且开始传输更高优先级的数据。带有更高优先级数据的DLC,不会阻止任何低优先级的DLC。高优先级和低优先级的帧的交叉,是必要的,因为这能避免低优先级通道被永远堵塞。3.4.4. 帧变量P位置1,表示通道的一端向另外一端请求一个或者一组回应(response)。F位置1,表示通道一端指明发一个响应帧,对另外一端的P命令进行回应。在命令帧和响应帧里,P/F位,最好用一个函数进行设置。3.4.4.1. P位函数P位置1,向另外一端请求F位置1的响应帧。在一个特别的DLCI,在给定的时间和给定的方向,只有一个P位置1的帧。接收到一个P位置0的SABM或者DISC命令帧,接收到的帧,将被丢弃。如果接收到未被请求的DM响应,这个帧要做与P/F设置无关的处理。通道的一端在发送另外一个P位置1的帧之前,它会从另外一端收到一个F位置1的回应帧。如果在系统定义的时间段以内,没有收到回应帧,重发一个P位置1的帧,用于错误恢复的目的,是允许的。3.4.4.2. F位函数F位置1的回应帧,一端回应另外一端的P位置1的命令帧时,使用它。要求在第一时间回应。一端可以随时异步发送F位置0的回应帧。但如果接收到的是F位置0的UA回应帧,接受的帧,将被丢弃。如果接收到未被请求的DM响应,这个帧要做与P/F设置无关的处理。假如一端接收到一个P位置1的命令帧,F位置1的回应帧的传输,将优先于其他命令。但模式设置命令(SABM或者DISC)是个例外。3.4.5. 超时的考虑为了检测无回应或者回应丢失的情况,每端都应该提供一个响应超时的函数(T1)。超时后,应该启动错误恢复的流程。为了解决争夺的情况,超时函数的时长,在两端最好不要相等。一端传输过一帧,等待回应时,超时函数就应该启动。收到回应,则停止计时。如果响应超时函数超时了,重发P位置1的命令帧,超时函数重新开始计时。3.4.6. 多路控制通道在TE和MS通信开始时,使用3.8.1的流程,建立了DLCI 0通道作为控制通道。它用来在两个MUX(multiplexer)之间传递信息。它用ERM模式或者non-ERM模式的流程,这个在用+CMUX命令的时候,就决定了的。如果ERM的流程是可用的,就用它们。3.4.6.1. 消息格式TypeLengthValue1Value2Value n所有在多个MUX之间被传递的信息,都使用上述的type,length,value的格式。上述的每个单元格至少占用1个字节,type和length有扩展位,所以,它们有可能多于1个字节。type域的第一个字节的bit位格式如下:Bit No.12345678ValueEACRT1T2T3T4T5T6考虑EA=1时,长度域的扩展字节的bit位格式如下:Bit No12345678ValueEAT7T8T9T10T11T12T13EA位就是扩展位,其值为1表示当前就是本域的最后一个字节。C/R位指示该信息是命令帧,还是回应帧。T位表示类型编码。每个命令都有自己独特的编码方法。26=64,这就是说一个字节的type域,能表式63种不同的信息类型。单字节的信息类型,在本文档中已经定义。length的第一个字节的bit位格式如下:Bit No.12345678ValueEAL1L2L3L4L5L6L7后续字节,也是类似的格式。EA的意义跟上面的相同。L1是最低位,L7是最高位。27=128,也就是一条信息最大可以有127个字节的value值。在不超过最大长度的情况下,一帧可以包含多条信息。但一条信息不能分割封装在多帧中。3.4.6.2. 操作流程消息都是成对存在的,一个命令消息和一个相应的回应消息。假如C/R位置为1,消息是命令,假如它置0,消息是回应。一个回应消息,跟引发它的命令一样,拥有同样的T位。假如在T2的时间内,一个命令没有产生一个回应,命令将被重新发送N2次。假如N2次的发送,都没有收到回应,MUX(multiplexer)的控制通道被认为有错,并且发出一个警报。错误情况的解决方法,相应的执行。3.4.6.3. 消息类型和处理(Action) 3.4.6.3.1. 参数协商PN(Parameter Negotiation)这个流程是可选的。如果这个命令不支持,DLC都使用默认值。在一个DLC用3.4.1的机制建立之前,TE和MS必须对本DLC使用的参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论