Modem相关知识__2019.12.03
原文链接: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项破坏之后会导致手机出现好多问题。
Modem相关知识__2019.12.03相关推荐
- 【PIC单片机】-- IIC相关知识
文章目录 文章目录 00 写在前面 01 IIC相关知识 02 时序 03 寄存器 04 外设模块EEPROM 05 结尾 00 写在前面 该系列的文章,源自于担任过PIC单片机课程的助教,主要向学弟 ...
- 复习Java第二个项目仿QQ聊天系统 03(两种通信类、登录以及注册功能完善) Java面试题并发编程相关知识生活【记录一个咸鱼大学生三个月的奋进生活】025
记录一个咸鱼大学生三个月的奋进生活025 复习Java(仿QQ聊天系统03两种通信类.登录以及注册功能完善) TcpSocket类(与服务器进行通信) Server类(服务器类) TcpMessage ...
- 网络打印两个基本端口(LPD和9100)的相关知识
打印设备和主机的连接方式(printer interface)形态多样,从历史悠久的串口并口到现在流行的网络打印和USB连接,另类的红外连接和蓝牙技术,还有超炫的火线连接(IEEE 1394). 我这 ...
- Redis数据库相关知识总结
Redis数据库相关知识总结 1.NoSQL概述 1.1 为什么用NoSQL 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般不大,用单个数据库完全可以轻松应付! 在那个时候,更多的都是 ...
- 51单片机最小系统的相关知识
51单片机最小系统的相关知识 单片机最小系统,或者称为 最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机.晶振电路.复位电路.下面给出一个5 ...
- Linux相关知识的第十一回合
Linux相关知识的第十一回合 显示统计占用系统内存最多的进程,并排序 [hooper@magedu-demo ~] $ ps aux --sort=-%mem |head -6 USER PID % ...
- 转载:关于错排的相关知识
转载:关于错排的相关知识 杭电2048相关知识充电 转自:错排公式 分类: 数论 关于程序2012-06-08 19:07 335人阅读 评论(0) 收藏 举报 n2 错排问题 错排问题 就是一种递推 ...
- 主板是计算机所有部分连接的基础,计算机基础相关知识答案.doc
计算机基础相关知识答案 计算机基础相关知识 一.填空题: 1.计算机的硬件主要由(控制器).(运算器).(存储器).(输入输出设备)以及电源等硬件组成. 2.计算机硬件系统可以分为两大部分,即(主机 ...
- Redis面试题相关知识整理
Redis面试题相关知识整理 1.Redis的应用场景 2.Redis的特点 3.Redis对各种数据类型的操作 4.Redis的持久化机制 5.Redis的缓存穿透/缓存击穿/缓存雪崩问题 6.Re ...
- 单片机小白学步系列(十) 单片机程序下载相关知识
注:本篇在写<单片机入门指南系列>之前就已经写过,现在发现这篇比较合理的位置,应该是放在<单片机入门指南系列(六) 单片机最小系统--麻雀虽小,五脏俱全>之后的,但是由于之前考 ...
最新文章
- apache下IE6对js的bug处理
- 前端跨域请求get_前端实现跨域访问
- 自动推荐图表、智能分析,这个新出的分析工具有点酷!
- android 调用系统方法,android 调用系统功窗口方法
- Hadoop1.2.0开发笔记(九)
- 老男孩python全栈s21day21作业(面向对象)
- 天狼星网络验证源码/官方正版/内附搭建教程
- Spring Security系列(一)——登录认证基本配置
- 2、sudo时候出现no valid sudoers sources found, quitting
- python多态_python多态和规范
- QR法求解特征值特征向量
- linux nand 驱动,Linux NAND FLASH驱动分析(一)
- arcgis快速生成图框_arcgis制作图框及专题地图制作
- html颜色趋势,预测2015年网页设计配色趋势(4)
- 持续交付的发展与持续交付中的测试
- 游戏AI车辆(Auto Mobile City)项目开发日志(2021.10.18)
- clock latency 总结
- JAVA毕设项目实验室耗材管理系统(java+VUE+Mybatis+Maven+Mysql)
- android之IM即时通信原理
- STM32CubeMX生成工程顺序
热门文章
- 搜狗站长html标签验证,悦然建站分享:搜狗站长平台使用教程之添加网站
- 内向的人和陌生人聊天,如何做到有话可说
- 格子玻尔兹曼机(Lattice Boltzmann Method)系列5:LBM多相流实例之Shan-Chen模型
- html添加鼠标右键菜单,Fabric.js - 添加鼠标右键点击事件响应(附:右键菜单)...
- 计算机日期的格式怎么写,在excel表格中怎么把日期格式改成文本格式(excle表格中改变日期格式)...
- 组策略怎么禁用计算机管理,如何打开管理员禁用的组策略?
- after meet KeyNi liu
- 52_LSTM及简介,RNN单元的内部结构,LSTM单元的内部结构,原理,遗忘门,输入门,输出门,LSTM变体GRU,LSTM变体FC-LSTM,Pytorch LSTM API介绍,案例(学习笔记)
- 整理的一些java基础知识点,欢迎补充指正
- diamond源码解析