CMUX协议学习总结
五个月前初刚开始接触CMUX时我在网上查找了很多资料以及文档,当时自认为对这个协议理解的还可以,现在回过头发现之前学的已经都忘的差不多了,借此机会回顾一下。不过CMUX协议的核心就是学习它的帧结构。本文参考了以下文档:
废话少说,来看CMUX吧。
1.什么是CMUX
CMUX是指串口多路复用。串口的多路复用器模式,就是使一个串行接口能够将数据传输到四个不同的客户应用程序。
实际的应用中,一个物理串口某一时间段内只能传输一个上层应用的数据流,如果有多个数据流同时要发送怎么办?除了访问多个UART还有别的方法吗?
CMUX协议的功能就是利用一个底层物理串口,向上层系统提供多个逻辑串口,每个逻辑串口对应着一个数据链路连接(DLC)。这样就可以同时在一条串行接口上存在多个会话,比如语音、FAX、数据、SMS、GPRS、USSD等。当正在进行传真/数据/ GPRS呼叫时,这是特别有利的,例如控制模块或使用SMS服务可以通过附加信道完成,而不会干扰数据流; 不需要访问第二个UART。
多路复用协议提供在单个物理通信通道之上虚拟出多个并行的逻辑通信通道的能力,一般应用于TE(Terminal Equipment)与MS(Mobile Station)之间,TE相当于智能手机的AP端,MS相当于智能手机的MODEM端,下图给出了典型的协议层次关系:
蓝色部分就是MUX多路复用层,它利用底层的物理串口链接收发数据,同时向上层提供若干个逻辑上独立使用的收发通道(上图中提供了四个逻辑通道,不同颜色表示)。每个逻辑通道独立创建,可以拥有软件流控制。在实际使用中,TE端的MUX向MS端的MUX发起通道建立请求,设置通道参数等,是主动的一方;MS端的MUX等待TE端的服务请求,根据自身能力提供相应服务。也就是说,两者的角色是不对称的。
TE终端和MS终端之间的每个通道,称作一个DLC链路,它们是先后相互独