CMUX
1. 简介
CMUX(Connection Multiplexing ),即连接(串口)多路复用,其功能主要在一个真实的物理通道上虚拟多个通道,每个虚拟通道上的连接和数据通讯可独立进行。
CMUX 软件包常用于蜂窝模块串口复用功能(PPP + AT 模式),以及串口硬件资源受限的设备。
CMUX 软件包特点如下:
- 支持通过真实串口虚拟出多个串口;
- 支持所有基于 GSM0707/ 0710 协议的蜂窝模块;
- 支持无缝接入 PPP 功能;
目前 CMUX 的 GSM 功能支持 Luat Air720, SIM7600, SIM800C 模块,后续会接入更多蜂窝模块。
1.1 框架图
-
CMUX 是一种类似于传输层的协议,用户使用时无法感知该层;数据传输依赖一个真实串口传输,cmux 层负责解析数据用以分发到不同的 virtual uart ;从而实现一个真实串口虚拟出多个 UART 的目的
-
CMUX 在应用场景中多用于 UART, 如有必要也可以支持 SPI 方式
2 功能介绍
支持所有基于 GSM0707 / GSM0710 协议的蜂窝模块
-
兼容 PPP_DEVICE 软件包,实现 CMUX+PPP 场景,在一个串口上同时传输 AT 命令与 PPP 数据;解决PPP 通信独占一个物理串口的问题
-
CMUX 的 GSM 功能已经在 Luat Air720, SIM7600, SIM800C 模块测试通过
-
支持通过一个真实串口虚拟出多个串口
-
CMUX 协议限制,理论上一个物理串口最多可以虚拟出 63 个虚拟串口
-
虚拟出的串口使用与真实串口一致,拥有 open,write,read 操作,设置 rx_indicate 接收回调
-
两方的 MCU 接收时要注意 DLCI ( Data Link Connection Identifier ) 数据链路连接接标识,相同的 DLCI 才可以互相正常通信
低资源占用
使用 GSM 支持时,对 PPP_DEVICE 软件包同时开启的情况,做了一些处理,以节省 ROM 资源占用。
因为解析出的数据,挂载在不同虚拟端口的链表上,理论上占用 RAM 的大小只与链表上数据个数与长度相关,1.57 K 是在 CMUX + PPP 环境下测出。
4.相关资料+测试案例
测试案例领取方式:
作者使用了RT-Thread CMUX - latest 、ppp_Device – latest 、AT_Device – 1.6.0这三款软件包实现了 4G模块 CMUX+PPP 拨号上网 ,并完成测试。现在已将测试工程和文档开放,请大家关注公众号,并回复数字 “6” 领取测试工程+文档!
CMUX 软件包地址:https://github.com/RT-Thread-packages/cmuxCMUX
协议介绍:https://github.com/RT-Thread-packages/cmux/blob/master/docs/cmux_basic.md
名词解释
CMUX:多串口协议
DLC:数据链路连接
DM:断开模式
FCS:帧校验序列
UIH:未编号的带校验头的信息
UI:未编号的信息
MSC:modem状态命令
HDLC:高级数据链路控制
1.什么是CMUX
CMUX是指串口多路复用
。串口的多路复用器模式,就是使一个串行接口能够将数据传输到四个不同的客户应用程序。
实际的应用中,一个物理串口某一时间段内只能传输一个上层应用的数据流,如果有多个数据流同时要发送怎么办?除了访问多个UART还有别的方法吗?CMUX协议的功能就是利用一个底层物理串口,向上层系统提供多个逻辑串口,每个逻辑串口对应着一个数据链路连接(DLC)
。这样就可以同时在一条串行接口上存在多个会话,比如语音、FAX、数据、SMS、GPRS、USSD等。
refs:
https://github.com/RT-Thread-packages/cmux
https://blog.csdn.net/weixin_45380951/article/details/116990535
https://blog.csdn.net/jyqxerxes/article/details/78814119
标签:多路复用,串口,CMUX,PPP,虚拟,模块,软件包 From: https://www.cnblogs.com/bluestorm/p/17496278.html