Modem(调制解调器)相关知识


调制解调器由发送、接收、控制、接口、操纵面板及电源等部分组成。数据终端设备以二进制串行信号形式提供发送的数据,经接口转换为内部逻辑电平送入发送部分,经调制电路调制成线路要求的信号向线路发送。接收部分接收来自线路的信号,经滤波、反调制、电平转换后还原成数字信号送入数字终端设备。

  电话线可以使通信的双方在相距几千公里的地方相互通话,是由于在每隔一定距离都设有中继放大设备,保证话音清晰。在这些设备上若再配置Modem,则能通电话的地方就可传输数据。一般电话线路的话音带宽在300~3400Hz 范围,用它传送数字信号,其信号频率也必须在该范围。常用的调制方法有三种:频移键控(FSK)、相移键控(PSK) 、相位幅度调制(PAM)。   Modem通常有三种工作方式:挂机方式、通话方式、联机方式。电话线未接通是挂机方式;双方通过电话进行通话是通话方式;Modem已联通,进行数据传输是联机方式。

  数模转换的调制方法也有三种:(1)频移键控(FS K)。用特殊的音频范围来区别发送数据和接收数据。如调频ModemBell-103型发送和接收数据的二进制逻辑被指定的专用频率是:发送,信号逻辑0、频率1070Hz,信号逻辑1、频率1270Hz;接收,信号逻辑0、频率20 25Hz,信号逻辑1、频率2225Hz。(2)相移键控(PSK),高速的Modem常用四相制,八相制,而四相制是用四个不同的相位表示00、01、10、11四个二进制数,如调相ModemBell-212A型。该技术可以使3 00bps的Modem传送600bps的信息,因此在不提高线路调制速率仅提高信号传输速率时很有意义,但控制复杂,成本较高,八相制更复杂。(3)相位幅度调制(PAM),为了尽量提高传输速率,不提高调制速率,采用相位调制和幅度调制结合的方法。它可用16个不同的相位和幅度电平,使1200bps的Modem传送19200bps的数据信号。该种Modem一般用于高速同步通信中。

  调制解调器通电后,通常先进入挂机方式,通过电话拨号拨通线路后进入通话方式,最后通过Modem的"握手" 过程进入联机方式。正常使用时,由使用者通过控制电话机或Modem前面板的按键、内部开关实现三种方式间的转换。

  调制解调器与计算机连接是数据电路通信设备DCEDataCircutterminatingEquipme nt)与数据终端设备DTE(DataTerminalEquipment)之间的接口问题。DCE与DTE之间的接口是计算机网络使用上的一个重要问题。任何一个通信站总要包括DCE与DTE,因此确定一个统一的标准接口,特别是对公用数据网有重要的意义。数据终端设备DTE是产生数字信号的数据源或接收数字信号的数据宿,或者是两者的结合,像计算机终端、打印机、传真机等就是DTE。将数据终端设备DTE与模拟信道连接起来的设备就叫数据电路通信设备DCE,像Modem就是DCE。DTE与DCE之间的连接标准有CCITTV.10/X.26,与EIARS-423-A兼容,是一种半平衡电气特性接口

  普通的Modem通常都是通过RS-232C串行口信号线与计算机连接。RS-232是一种历史悠久的计算机接口标准。(RS本是RecommendStandard的缩写),它于1969年被国际组织认可。RS-232的定义包括电气特性(如电压值)、机械特性(如接头形状)及功能特性(如脚位信号)等。它允许一个发送设备连接到一个接收设备以传送资料;其原始规范的最大传输速度为20Kbps,但事实上,现在的应用早已远超过这个速度范围。RS-23 2可说是相当简单的一种通信标准,若不使用硬件流控,则最少只需利用三根信号线,便可做到全双工的传输作业。RS-2 32的电气特性是属于非平衡传输方式,抗干扰能力较弱,故传输距离较短,约为15米左右而已。

  RS-232C串行口信号分为三类:传送信号、联络信号和地线

。  (1)传送信号:指TXD(发送数据信号线)和RXD(接收数据信号线)。经由TXD传送和RXD接收的信息格式为:一个传送单位(字节)由起始位、数据位、奇偶校验位和停止位组成。

   (2)联络信号:指RTS、CTS、DTR、DSR、DCD和RI六个信号,各自功能为:  RTS(请求传送),是PC向MODEM发出的联络信号。高电平表示PC机请求向MODEM传送数据  CTS(清除发送),是MODEM向PC机发出的联络信号。高电平表示MODEM响应PC发出的RTS信号,且准备向远程MODEM发送数据。

  DTR(数据终端就绪),是PC向MODEM发出的联络信号。高电屏表示PC机处于就绪状态,本地MODEM 和远程MODEM之间可以建立通信信道。若为低电屏,则强迫MODEM终止通信   DSR(数据装置就绪),是MODEM向PC机发出的联络信号。它指出本地MODEM的工作状态,高电平表示 MODEM没有处于测试通话状态,可以和远程MODEM建立通道。  DCD(传送检测),是MODEM向PC发出的状态信号。高电平表示本地DCE接收到远程MODEM发来的载波信号。

  RI(振铃指示),是MODEM向PC发出的状态信号。高电平表示本地MODEM收到远程MODEM发来的振铃信号。

  (3)地线信号(GND),为相连的PC和MODEM提供同一电势参考点。  56K高速Modem是1997年才开始上市的拨号高速调制解调器,它的传输速率之所以能有高于传统电话线路上33.6Kbps的极限速率,是因为它采用了完全不同于33.6K的调制解调技术,其工件原理和使用要求与33.6 K高速Modem相比也有一定的区别。
————————————————
原文链接:https://www.cnblogs.com/mobile-veterans/archive/2012/07/23/2600726.html

              手机启动流程中Modem启动流程部分主要是通过AT命令集与Modem交互来实现对Modem及相关通讯服务的初始化,

      其中为大家熟知的PIN码校验信息初始化、运营商网络初始化、联系人信息初始化、STK初始化等部分都包含其中。

原文链接:https://www.bbsmax.com/A/QV5Zjq75yb/
SIMLock锁卡功能解析
一、锁卡背景介绍

  锁卡即SIMLock,当手机开机启动或者插入SIM卡时,手机modem侧预置在NV项中的配置信息会与SIM卡中的信息做比对,检测是否匹配。若匹配,则SIM卡可以正常使用。若不匹配,则SIM卡相关功能均无法正常使用,例如拨打电话、发送短信及上网等;或者是只能注册2G网,不能注册4G。

  锁卡的目的:一些运营商会要求控制某一类卡的使用,从而保护自己的利益(运营商定制机)

  SIMLock锁和图案锁,数字密码锁,PIN码锁,PUK锁一样,是Keyguard模块中的一种锁。

二、锁卡的需求

  锁卡的需求方式有7种之多,常见的有NP锁,NS锁,CP锁,SP锁等

  从安卓机器来看,目前最常用的是SP锁(MCC/MNC),本文将解析SP锁的加锁流程

 

1、SIM卡热插拔压力测试,多次热拔插,某次插入,不识别SIM卡;

2、不识别卡后,接着拔出卡再插入,可以再次识别。

 

MDlog看到的现象如下:

08:17:10:852最后一次拔出,sim task收到MSG_ID_SIM_PLUG_OUT_IND,接着08:17:12:412有触发insert SIM中断(拔插间隔不足两秒),但是sim task没有收到MSG_ID_SIM_PLUG_IND_IND msg,忽略了此次插入动作的处理。

 

[SOLUTION]

这种现象为SIM热拔插太快,需要如下复测:

1、加大SIM EINT debounce time为100;

2、保持热拔插间隔标准:拔卡后,请至少等待2S,让SIM安全下电,sim state更新过来再插卡;插卡后,请至少等待1S,让AP RILD ready再进行拔卡动作。若拔插太快,sim state出现混乱,就无法正确处理SIM热拔插动作,就会出现某次插入无法识别SIM的问题。

3、复现问题后,请再次拔卡,再插卡,若能再次识别到卡,就说明是拔插太快导致的不识别卡问题。是测试手法的问题,非热插拔功能出现问题,需要按照热拔插间隔标准复测。

https://www.jianshu.com/p/809c721f5594

AT指令

SIM卡检卡硬件电路设计:https://blog.csdn.net/luohuatingyusheng/article/details/96473340

 

 

原文链接:https://blog.csdn.net/qq734122899/article/details/53927913

getSimSerialNumber():获取SIM卡号
getSimOperator():获取供货商代码

getSimOperatorName():获取供货商

getSimCountryIso():获取国籍

getNetworkOperator():获取网络运营商

getNetworkOperatorName():获取网络运营商名称

getNetworkType():获取网络类型

原文链接:https://blog.csdn.net/wcsbhwy/article/details/89956736

Android中有三种PhoneFactory
1.PhoneFactory.java ——–>用于创建GsmCdmaPhone对象
2.ImsPhoneFactory.java ——–>用于创建ImsPhone对象
3.SipPhoneFactory.java ——–>用于创建SipPhone对象

原文链接:https://blog.csdn.net/weixin_33757911/article/details/92342619

一、modem插卡流程

1.Driver检查到SIM卡插入以后,在sim_plug_in_call_back()中会发MSG_ID_SIM_PLUG_IN_IND给MOD_SIM;MOD_SIM在sim_task()中处理这个消息,并发送MSG_ID_SIM_ERROR_IND给L4C以及MM,消息中带的cause是SIM_PLUG_IN。
2.随后就是和正常的SIM卡初始化过程一样,检查PIN码,读取SIM卡的各种文件,然后发送消息MSG_ID_SIM_MM_READY_IND给MM,告诉MM模块SIM卡已经ready了,并提供一些网络注册的信息,然后发送MSG_ID_SIM_MMRR_READY_IND给MOD_SMU,让SMU通知L4C去搜索normal cell,最后发送MSG_ID_SIM_MMI_READY_IND给MOD_SMU,表示SIM卡初始化完成。

转载于:https://my.oschina.net/u/2829875/blog/851833

原文链接:https://blog.csdn.net/zhenwenxian/article/details/7918273

modem和AP之间数据传递

modem和AP之间数据传递可以通过HSIC接口传递数据,也可以通过共享内存的方式传递数据。modem和AP之间协商,定义share memory的区域和要共享的条目item,分配一块内存区域作为两个模块之间共享数据。发起端将要传递的数据放到共享内存的对应位置的单元。接收端读对应的单元的共享内存的数值。

原文链接:https://blog.csdn.net/yaoming168/article/details/89559166

VoLTE是基于IMS的语音业务,它是一种IP数据,就是我们熟知的高清语音通话。

原文链接:https://blog.csdn.net/dailinqing1984/article/details/45722535

AP与modem直接通信由Share Memory负责,这是一块两端可以同时操作的内存区域。由于Modem占主导作用,在Application Processor启动初始化时,从Share Memory区读取已经由Modem predeclared的一些数据。

Share memory根据功能,分为静态+动态部分,每个部分又分为数个小区,每个区的大小不一,与本区实现的功能相关。Modem会把所有区的offset+size信息存放在静态去Heapinfo里。Linux通过读取这个Heapinfo区信息,就知道Share memory的布局了。

简单的说,Linux平台高通驱动主要在如下几个部分应用share memory服务:
1) Process command.
用来传输少量数据。实现两边的通信。比如不同驱动模块上下电,电压配置等。share memory最开始位置就是PROC区。
2)SMSM
实现两边的machine state同步。电源管理部分会用到。
3)RPC/DIAG
RPC是AP和Modem之间通信最常用的通道,有很完整的封装协议,Linux根据两个参数(proc+version)以client的身份可以找到Modem段的server,请求提供相应服务,同时有完备的request/reply机制,完成数据传输。同理,AP也可以作为server提供给Modem服务。

share memory有个channel allocation table,里面存放这64个channel的通道信息。每个通道可以实现数据传输。共享内存驱动(smd)初始化过程中,会建立64个通道的维护。RPC就是基于其中之一的channel.

Share memory两边都有线程在监控,一旦有数据更新,立刻通知监听的模块。当然,有些模块中断驱动,在中断上下文里完成通知。

原文链接:https://blog.csdn.net/Sun19910114/article/details/38683677

终端 MODEM

步骤1 | DTR--> |

步骤2 | TXD--> |

步骤3 | <--DSR |

步骤4 | <--DCD |

步骤5 | <--CTS |

步骤6 | <--RXD |

1、由终端送DTR 信号到MODEM,DTR 信号由RS232 的DTR 脚送出,告诉MODEM 终端已准备好;

2、终端送TXD 信号到MODEM,终端经RS232 的TXD 送出一个一直保持在逻辑1 的信号给MODEM,它并

不是数据,而是一个握手信号,这个信号告诉MODEM,终端要和对方通信。如果MODEM 已准备好,则MODEM

将通过RS232 的RXD 信号线保持逻辑1 告诉终端MODEM 已准备好,可以利用MODEM 进行拨号了。这时终端

和MODEM 之间没有任何数据在传;

3、由MODEM 送DSR 到终端,当拨号完成后,MODEM 发出一个DSR 信号给终端,表示MODEM 已与MODEM

远端的MODEM 作好连接的准备,也就是说MODEM 正在等待远端MODEM 传达室回的信息;

4、MODEM 送到DCD 到终端,当MODEM 和远端的MODEM 完成握手后,MODEM 传回DCD 信号给终端,表示

MODEM 已建立了连接;

5、MODEM 送CTS 到终端,上述过程完成后,终端仍然不能接收和送数据,必须等到MODEM 送出CTS 信

号,表示一切准备就绪;

6、MODEM 传送数据给终端,终端开始接收或发送数据。

*:通讯过程中通过RTS/CTS 进行硬件流控,通过XON/XOFF 进行软件流控。

原文链接:https://blog.csdn.net/sinat_30474567/article/details/51524310

public String readSIMCard() {
TelephonyManager tm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);//取得相关系统服务
StringBuffer sb = new StringBuffer();
switch(tm.getSimState()){ //getSimState()取得sim的状态 有下面6中状态
case TelephonyManager.SIM_STATE_ABSENT :sb.append("无卡");break;
case TelephonyManager.SIM_STATE_UNKNOWN :sb.append("未知状态");break;
case TelephonyManager.SIM_STATE_NETWORK_LOCKED :sb.append("需要NetworkPIN解锁");break;
case TelephonyManager.SIM_STATE_PIN_REQUIRED :sb.append("需要PIN解锁");break;
case TelephonyManager.SIM_STATE_PUK_REQUIRED :sb.append("需要PUK解锁");break;
case TelephonyManager.SIM_STATE_READY :sb.append("良好");break;
}

if(tm.getSimSerialNumber()!=null){
sb.append("@" + tm.getSimSerialNumber().toString());
}else{
sb.append("@无法取得SIM卡号");
}

if(tm.getSimOperator().equals("")){
sb.append("@无法取得供货商代码");
}else{
sb.append("@" + tm.getSimOperator().toString());
}

if(tm.getSimOperatorName().equals("")){
sb.append("@无法取得供货商");
}else{
sb.append("@" + tm.getSimOperatorName().toString());
}

if(tm.getSimCountryIso().equals("")){
sb.append("@无法取得国籍");
}else{
sb.append("@" + tm.getSimCountryIso().toString());
}

if (tm.getNetworkOperator().equals("")) {
sb.append("@无法取得网络运营商");
} else {
sb.append("@" + tm.getNetworkOperator());
}
if (tm.getNetworkOperatorName().equals("")) {
sb.append("@无法取得网络运营商名称");
} else {
sb.append("@" + tm.getNetworkOperatorName());
}
if (tm.getNetworkType() == 0) {
sb.append("@无法取得网络类型");
} else {
sb.append("@" + tm.getNetworkType());
}
return sb.toString();
}

1、大多数的手机都含有两个处理器。操作系统、用户界面和应用程序都在Application Processor(即AP)(应用处理器)上执行,AP一般采用ARM芯片的CPU。运行在Application Processor(AP)的软件包称为AP包,包括操作系统、用户界面和应用程序等;
2、手机射频通讯控制软件,则运行在另一个分开的CPU上,这个CPU称为Baseband Processor(即BP)(基带处理器)。与Baseband Processor(BP)相关的软件包称为BP包, 包括baseband modem的通信控制软件等.
3、NV文件记录一些手机相关的一些信息,如meid等。一般情况下,nv项与通信功能比较密切,例如nv项中会标记手机允许注册的网络,当前注册的网络等。比方说你手机里nv标记着是联通3G网络,而你插入移动卡的时候,就会出现找不到网络新号的问题。当然一般nv项会随着手机卡的插入重新写入,nv项破坏之后会导致手机出现好多问题。

参考:https://wenku.baidu.com/view/7cf4256ab84ae45c3b358cec.html?_wkts_=1705913283001&bdQuery=modem%E5%8D%8F%E8%AE%AE%E6%9C%AF%E8%AF%AD&needWelcomeRecommand=1

 

posted @ 2024-01-22 16:54  konglingbin  阅读(659)  评论(0编辑  收藏  举报