日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Modem相关知识__2019.12.03

發(fā)布時間:2023/12/18 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Modem相关知识__2019.12.03 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文鏈接:https://www.cnblogs.com/mobile-veterans/archive/2012/07/23/2600726.html

手機啟動流程中Modem啟動流程部分主要是通過AT命令集與Modem交互來實現(xiàn)對Modem及相關通訊服務的初始化,

其中為大家熟知的PIN碼校驗信息初始化、運營商網(wǎng)絡初始化、聯(lián)系人信息初始化、STK初始化等部分都包含其中。

原文鏈接:https://www.bbsmax.com/A/QV5Zjq75yb/

SIMLock鎖卡功能解析

一、鎖卡背景介紹

  鎖卡即SIMLock,當手機開機啟動或者插入SIM卡時,手機modem側預置在NV項中的配置信息會與SIM卡中的信息做比對,檢測是否匹配。若匹配,則SIM卡可以正常使用。若不匹配,則SIM卡相關功能均無法正常使用,例如撥打電話、發(fā)送短信及上網(wǎng)等;或者是只能注冊2G網(wǎng),不能注冊4G。

  鎖卡的目的:一些運營商會要求控制某一類卡的使用,從而保護自己的利益(運營商定制機)

  SIMLock鎖和圖案鎖,數(shù)字密碼鎖,PIN碼鎖,PUK鎖一樣,是Keyguard模塊中的一種鎖。

二、鎖卡的需求

  鎖卡的需求方式有7種之多,常見的有NP鎖,NS鎖,CP鎖,SP鎖等

  從安卓機器來看,目前最常用的是SP鎖(MCC/MNC),本文將解析SP鎖的加鎖流程

?

1、SIM卡熱插拔壓力測試,多次熱拔插,某次插入,不識別SIM卡;

2、不識別卡后,接著拔出卡再插入,可以再次識別。

?

MDlog看到的現(xiàn)象如下:

08:17:10:852最后一次拔出,sim task收到MSG_ID_SIM_PLUG_OUT_IND,接著08:17:12:412有觸發(fā)insert SIM中斷(拔插間隔不足兩秒),但是sim task沒有收到MSG_ID_SIM_PLUG_IND_IND msg,忽略了此次插入動作的處理。

?

[SOLUTION]

這種現(xiàn)象為SIM熱拔插太快,需要如下復測:

1、加大SIM EINT debounce time為100;

2、保持熱拔插間隔標準:拔卡后,請至少等待2S,讓SIM安全下電,sim state更新過來再插卡;插卡后,請至少等待1S,讓AP RILD ready再進行拔卡動作。若拔插太快,sim state出現(xiàn)混亂,就無法正確處理SIM熱拔插動作,就會出現(xiàn)某次插入無法識別SIM的問題。

3、復現(xiàn)問題后,請再次拔卡,再插卡,若能再次識別到卡,就說明是拔插太快導致的不識別卡問題。是測試手法的問題,非熱插拔功能出現(xiàn)問題,需要按照熱拔插間隔標準復測。

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():獲取網(wǎng)絡運營商

getNetworkOperatorName():獲取網(wǎng)絡運營商名稱

getNetworkType():獲取網(wǎng)絡類型

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

Android中有三種PhoneFactory
1.PhoneFactory.java ——–>用于創(chuàng)建GsmCdmaPhone對象
2.ImsPhoneFactory.java ——–>用于創(chuàng)建ImsPhone對象
3.SipPhoneFactory.java ——–>用于創(chuàng)建SipPhone對象

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

一、modem插卡流程

1.Driver檢查到SIM卡插入以后,在sim_plug_in_call_back()中會發(fā)MSG_ID_SIM_PLUG_IN_IND給MOD_SIM;MOD_SIM在sim_task()中處理這個消息,并發(fā)送MSG_ID_SIM_ERROR_IND給L4C以及MM,消息中帶的cause是SIM_PLUG_IN。
2.隨后就是和正常的SIM卡初始化過程一樣,檢查PIN碼,讀取SIM卡的各種文件,然后發(fā)送消息MSG_ID_SIM_MM_READY_IND給MM,告訴MM模塊SIM卡已經(jīng)ready了,并提供一些網(wǎng)絡注冊的信息,然后發(fā)送MSG_ID_SIM_MMRR_READY_IND給MOD_SMU,讓SMU通知L4C去搜索normal cell,最后發(fā)送MSG_ID_SIM_MMI_READY_IND給MOD_SMU,表示SIM卡初始化完成。

轉(zhuǎn)載于:https://my.oschina.net/u/2829875/blog/851833

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

modem和AP之間數(shù)據(jù)傳遞

modem和AP之間數(shù)據(jù)傳遞可以通過HSIC接口傳遞數(shù)據(jù),也可以通過共享內(nèi)存的方式傳遞數(shù)據(jù)。modem和AP之間協(xié)商,定義share memory的區(qū)域和要共享的條目item,分配一塊內(nèi)存區(qū)域作為兩個模塊之間共享數(shù)據(jù)。發(fā)起端將要傳遞的數(shù)據(jù)放到共享內(nèi)存的對應位置的單元。接收端讀對應的單元的共享內(nèi)存的數(shù)值。

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

VoLTE是基于IMS的語音業(yè)務,它是一種IP數(shù)據(jù),就是我們熟知的高清語音通話。

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

AP與modem直接通信由Share Memory負責,這是一塊兩端可以同時操作的內(nèi)存區(qū)域。由于Modem占主導作用,在Application Processor啟動初始化時,從Share Memory區(qū)讀取已經(jīng)由Modem predeclared的一些數(shù)據(jù)。

Share memory根據(jù)功能,分為靜態(tài)+動態(tài)部分,每個部分又分為數(shù)個小區(qū),每個區(qū)的大小不一,與本區(qū)實現(xiàn)的功能相關。Modem會把所有區(qū)的offset+size信息存放在靜態(tài)去Heapinfo里。Linux通過讀取這個Heapinfo區(qū)信息,就知道Share memory的布局了。

簡單的說,Linux平臺高通驅(qū)動主要在如下幾個部分應用share memory服務:
1) Process command.
用來傳輸少量數(shù)據(jù)。實現(xiàn)兩邊的通信。比如不同驅(qū)動模塊上下電,電壓配置等。share memory最開始位置就是PROC區(qū)。
2)SMSM
實現(xiàn)兩邊的machine state同步。電源管理部分會用到。
3)RPC/DIAG
RPC是AP和Modem之間通信最常用的通道,有很完整的封裝協(xié)議,Linux根據(jù)兩個參數(shù)(proc+version)以client的身份可以找到Modem段的server,請求提供相應服務,同時有完備的request/reply機制,完成數(shù)據(jù)傳輸。同理,AP也可以作為server提供給Modem服務。

share memory有個channel allocation table,里面存放這64個channel的通道信息。每個通道可以實現(xiàn)數(shù)據(jù)傳輸。共享內(nèi)存驅(qū)動(smd)初始化過程中,會建立64個通道的維護。RPC就是基于其中之一的channel.

Share memory兩邊都有線程在監(jiān)控,一旦有數(shù)據(jù)更新,立刻通知監(jiān)聽的模塊。當然,有些模塊中斷驅(qū)動,在中斷上下文里完成通知。

原文鏈接: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,終端經(jīng)RS232 的TXD 送出一個一直保持在邏輯1 的信號給MODEM,它并

不是數(shù)據(jù),而是一個握手信號,這個信號告訴MODEM,終端要和對方通信。如果MODEM 已準備好,則MODEM

將通過RS232 的RXD 信號線保持邏輯1 告訴終端MODEM 已準備好,可以利用MODEM 進行撥號了。這時終端

和MODEM 之間沒有任何數(shù)據(jù)在傳;

3、由MODEM 送DSR 到終端,當撥號完成后,MODEM 發(fā)出一個DSR 信號給終端,表示MODEM 已與MODEM

遠端的MODEM 作好連接的準備,也就是說MODEM 正在等待遠端MODEM 傳達室回的信息;

4、MODEM 送到DCD 到終端,當MODEM 和遠端的MODEM 完成握手后,MODEM 傳回DCD 信號給終端,表示

MODEM 已建立了連接;

5、MODEM 送CTS 到終端,上述過程完成后,終端仍然不能接收和送數(shù)據(jù),必須等到MODEM 送出CTS 信

號,表示一切準備就緒;

6、MODEM 傳送數(shù)據(jù)給終端,終端開始接收或發(fā)送數(shù)據(jù)。

*:通訊過程中通過RTS/CTS 進行硬件流控,通過XON/XOFF 進行軟件流控。

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

public?String?readSIMCard()?{
????????????TelephonyManager?tm?=?(TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);//取得相關系統(tǒng)服務
????????StringBuffer?sb?=?new?StringBuffer();
????????switch(tm.getSimState()){?//getSimState()取得sim的狀態(tài)??有下面6中狀態(tài)
????????????????case?TelephonyManager.SIM_STATE_ABSENT?:sb.append("無卡");break;?
????????????????case?TelephonyManager.SIM_STATE_UNKNOWN?:sb.append("未知狀態(tài)");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("@無法取得網(wǎng)絡運營商");
????????}?else?{
????????????????sb.append("@"?+?tm.getNetworkOperator());
????????}
????????if?(tm.getNetworkOperatorName().equals(""))?{
????????????????sb.append("@無法取得網(wǎng)絡運營商名稱");
????????}?else?{
????????????????sb.append("@"?+?tm.getNetworkOperatorName());
????????}
????????if?(tm.getNetworkType()?==?0)?{
????????????????sb.append("@無法取得網(wǎng)絡類型");
????????}?else?{
????????????????sb.append("@"?+?tm.getNetworkType());
????????}
????????return?sb.toString();
????}

1、大多數(shù)的手機都含有兩個處理器。操作系統(tǒng)、用戶界面和應用程序都在Application Processor(即AP)(應用處理器)上執(zhí)行,AP一般采用ARM芯片的CPU。運行在Application Processor(AP)的軟件包稱為AP包,包括操作系統(tǒng)、用戶界面和應用程序等;
2、手機射頻通訊控制軟件,則運行在另一個分開的CPU上,這個CPU稱為Baseband Processor(即BP)(基帶處理器)。與Baseband Processor(BP)相關的軟件包稱為BP包, 包括baseband modem的通信控制軟件等.
3、NV文件記錄一些手機相關的一些信息,如meid等。一般情況下,nv項與通信功能比較密切,例如nv項中會標記手機允許注冊的網(wǎng)絡,當前注冊的網(wǎng)絡等。比方說你手機里nv標記著是聯(lián)通3G網(wǎng)絡,而你插入移動卡的時候,就會出現(xiàn)找不到網(wǎng)絡新號的問題。當然一般nv項會隨著手機卡的插入重新寫入,nv項破壞之后會導致手機出現(xiàn)好多問題。

總結

以上是生活随笔為你收集整理的Modem相关知识__2019.12.03的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。