AP與modem通信


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/DIAGRPC是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兩邊都有線程在監控,一旦有數據更新,立刻通知監聽的模塊。當然,有些模塊中斷驅動,在中斷上下文里完成通知。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM