串行通信链路复用协议在嵌入系统上开发
时间:07-06
来源:互联网
点击:
随着移动通信技术的迅速发展,具备无线通信功能的移动终端也迅速发展起来。这些移动终端支持普通的话音、短消息等业务,随着GPRS网络覆盖的迅速扩大,越来越多的手持/车载移动终端也开始支持GPRS上网业务。如何在一个终端设备上整合这些业务,这是许多移动终端设备开发者面对的问题。笔者在开发一款车载移动终端过程中,采用了3GPP的TS 27.010协议,成功地整合了这些业务。
1 TS27.010协议介绍
在常用的GSM/GPRS通信模块中(如Siemens的MC35MC35、WaveCom的Q2400Q2400等),只能通过一个普通9针的异步串口与终端设备TE(Terminal Equipment)进行通信。TE和MS?Mobile Station 需要通过这个串口交换各种类型的数据,例如:语音、传真、数据、SMS、CBS、电话号码本的维护、电池状态、GPRS、USSD等。如何在一个串口上同时支持这么多的业务?例如,在数据通信过程中,怎样发送或接收SMS?为了解决这些问题,3GPP提出了一个协议--TS27.010协议(Terminal Equipment to Mobile Station Multiplexer Protocol)。有了Multiplexer,即使在数据连接过程中,也可以发送SMS。其它业务组合也可以同时进行。例如,数字语音和SMS同时发送。Multiplexer的存在使得一个完整的系统能够根据需要进行划分。
3GPP 的Multiplexer设计非常灵活,并且独立于MS/TE平台,已有的应用程序不需要改动即可工作。在设计Multiplexer时,特别考虑到采用电池供电的设备的需求,所以包含了省电模式控制等很重要的功能,并且Multiplexer本身在运行时也尽量使用最小的功耗和内存。
Multiplexer基于ISO的HDLC标准设计,工作于有多种选项的单模式下。但是Basic Option并不遵从HDLC。在基本选项模式下,Multiplexer没有透明机制,也没有错误恢复功能。但是在高级选项(Advanced Option)模式下,使用HDLC的透明机制,且Multiplexer有一个方便的再同步机制,能够在DC1/DC3(XON/XOFF)流控打开的链路上工作,且包含了错误恢复功能。
3GPP的Multiplexer依赖于一个控制信道。在这个控制信道上,TE和MS交换控制信息,例如参数协商、节电控制信息、流控信息等。Multiplexer是一个可选项,如果支持这个功能,就应使用AT+CMUX命令激活它。 Multiplexer为TE和MS在一个起始/停止模式的、具有分帧功能的串行链路上传输数据流提供了一套机制。图1给出了不同的协议层及其功能示意。Multiplexer层负责将数据按字节流的方式传输,不再进行进一步的组帧;如果数据需要按一定结构传输,就需要增加一个会聚层来完成这些功能。
Multiplexer为TE上的进程和MS上相对应的进程提供了一条虚连接,这样TE和MS上的进程就可以通过这条虚连接通信。例如,TE上的SMS应用程序可以通过一条Multiplexer通道与MS上的SMS处理程序连接起来。 TS27.010规范使用8bit字符的start-stop传输模式,两个Mulitplexer实体间的通信使用了规定的帧格式。TE和MS之间的每个信道称为一条数据链路连接DLC(Data Link Connection),这些DLC被依次独立地建立起来。每个DLC都可以有自己的流控机制。
Multiplexer有三种工作模式:Basic、Advanced without error recovery和Advanced with error recovery。这三种模式特点如下:
•Basic:长度标识代替HDLC的透明机制;使用与HDLC不同的标志字;不能用于具有XON/XOFF流控的链路;从同步丢失状态中恢复需要更长的时间。
•Advanced without error recovery:遵从ISO/IEC13239的异步HDLC过程;可以用于具备XON/XOFF流控的链路上;可以更快地从失同步状态恢复。
•Advanced with error recovery:使用了HDLC的错误恢复过程。
2 Wavecom GSM/GPRS模块Multiplexing协议介绍
笔者选用了Wavecom的Q2403A,这是一款E-GSM/GPRS 900/1800的双频模块。这个模块支持大部分常用的AT命令,但不支持标准的TS27.010协议。为了能够数据/命令复用,Wavecom定义了自己的multiplex协议。
Wavecom的复用协议允许一条串行链路上同时进行两个会话(即虚连接):一个AT命令的会话和一个数据通信的会话。AT+WMUX=1将激活模块的复用模式。在这种模式下,AT命令和数据都被封装成数据包。通过包头,可以区分是数据包还是AT命令包。
2.1 AT命令包格式
AT命令包帧格式如图2所示。第一个字节?0xAA 用于标识这是一个命令包,第二个字节是AT命令长度的低八位。第三个字节由两部分组成:低3位是AT命令长度的高3位;高3位用于标识一个AT命令。AT命令的最大长度可以为2047字节。校验和(checksum)是包中所有字节(包括头和AT命令)之和对256取模。
1 TS27.010协议介绍
在常用的GSM/GPRS通信模块中(如Siemens的MC35MC35、WaveCom的Q2400Q2400等),只能通过一个普通9针的异步串口与终端设备TE(Terminal Equipment)进行通信。TE和MS?Mobile Station 需要通过这个串口交换各种类型的数据,例如:语音、传真、数据、SMS、CBS、电话号码本的维护、电池状态、GPRS、USSD等。如何在一个串口上同时支持这么多的业务?例如,在数据通信过程中,怎样发送或接收SMS?为了解决这些问题,3GPP提出了一个协议--TS27.010协议(Terminal Equipment to Mobile Station Multiplexer Protocol)。有了Multiplexer,即使在数据连接过程中,也可以发送SMS。其它业务组合也可以同时进行。例如,数字语音和SMS同时发送。Multiplexer的存在使得一个完整的系统能够根据需要进行划分。
3GPP 的Multiplexer设计非常灵活,并且独立于MS/TE平台,已有的应用程序不需要改动即可工作。在设计Multiplexer时,特别考虑到采用电池供电的设备的需求,所以包含了省电模式控制等很重要的功能,并且Multiplexer本身在运行时也尽量使用最小的功耗和内存。
Multiplexer基于ISO的HDLC标准设计,工作于有多种选项的单模式下。但是Basic Option并不遵从HDLC。在基本选项模式下,Multiplexer没有透明机制,也没有错误恢复功能。但是在高级选项(Advanced Option)模式下,使用HDLC的透明机制,且Multiplexer有一个方便的再同步机制,能够在DC1/DC3(XON/XOFF)流控打开的链路上工作,且包含了错误恢复功能。
3GPP的Multiplexer依赖于一个控制信道。在这个控制信道上,TE和MS交换控制信息,例如参数协商、节电控制信息、流控信息等。Multiplexer是一个可选项,如果支持这个功能,就应使用AT+CMUX命令激活它。 Multiplexer为TE和MS在一个起始/停止模式的、具有分帧功能的串行链路上传输数据流提供了一套机制。图1给出了不同的协议层及其功能示意。Multiplexer层负责将数据按字节流的方式传输,不再进行进一步的组帧;如果数据需要按一定结构传输,就需要增加一个会聚层来完成这些功能。
Multiplexer为TE上的进程和MS上相对应的进程提供了一条虚连接,这样TE和MS上的进程就可以通过这条虚连接通信。例如,TE上的SMS应用程序可以通过一条Multiplexer通道与MS上的SMS处理程序连接起来。 TS27.010规范使用8bit字符的start-stop传输模式,两个Mulitplexer实体间的通信使用了规定的帧格式。TE和MS之间的每个信道称为一条数据链路连接DLC(Data Link Connection),这些DLC被依次独立地建立起来。每个DLC都可以有自己的流控机制。
Multiplexer有三种工作模式:Basic、Advanced without error recovery和Advanced with error recovery。这三种模式特点如下:
•Basic:长度标识代替HDLC的透明机制;使用与HDLC不同的标志字;不能用于具有XON/XOFF流控的链路;从同步丢失状态中恢复需要更长的时间。
•Advanced without error recovery:遵从ISO/IEC13239的异步HDLC过程;可以用于具备XON/XOFF流控的链路上;可以更快地从失同步状态恢复。
•Advanced with error recovery:使用了HDLC的错误恢复过程。
2 Wavecom GSM/GPRS模块Multiplexing协议介绍
笔者选用了Wavecom的Q2403A,这是一款E-GSM/GPRS 900/1800的双频模块。这个模块支持大部分常用的AT命令,但不支持标准的TS27.010协议。为了能够数据/命令复用,Wavecom定义了自己的multiplex协议。
Wavecom的复用协议允许一条串行链路上同时进行两个会话(即虚连接):一个AT命令的会话和一个数据通信的会话。AT+WMUX=1将激活模块的复用模式。在这种模式下,AT命令和数据都被封装成数据包。通过包头,可以区分是数据包还是AT命令包。
2.1 AT命令包格式
AT命令包帧格式如图2所示。第一个字节?0xAA 用于标识这是一个命令包,第二个字节是AT命令长度的低八位。第三个字节由两部分组成:低3位是AT命令长度的高3位;高3位用于标识一个AT命令。AT命令的最大长度可以为2047字节。校验和(checksum)是包中所有字节(包括头和AT命令)之和对256取模。
Linux 相关文章:
- 在Linux下使用ADSL(01-26)
- 使用 ADSL 动态 IP 建置虚拟主机(01-26)
- 做个ADSL+LINUX软路由器(01-26)
- 在嵌入式Linux实现802.11b无线网关(03-02)
- 如何保证Linux操作系统下的密码安全 (04-28)
- 在Linux系统下优化Oracle具体步骤(05-01)