很多安卓開發的文章中都提到了AP、BP、CP概念,一直搞不太懂,直到網上搜到了一篇介紹的文章:
BP(Baseband Processer),基帶晶片,用來處理手機的射頻功能(訊號調製、編碼、射頻位移等),這些都是跟時間高度相關的,所以必須用一個專門的處理器來完成,並且是實時的作業系統。同時,使用BP的好處是:無論作業系統和應用軟體如何變化,都不會影響到基本的通訊功能。
只有BP的手機,我們稱之為 Feature Phone。
CP(CoProcesser),協處理晶片,一般用來增強手機的多媒體處理功能,BP+CP的手機,就是增強了多媒體處理能力的 Feature phone。
從上面的描述可以看出,feature phone就是不斷完善應用的 行動通訊臺
AP(Application Processer),應用處理器,作業系統,應用程式等都在AP 上執行,跟我們的PC是一樣的,如果我們的PC要上網,會連線一個 modem,對於手機來講,AP+BP就類似一個增加了modem上網功能的PC,這也就是 smart phone,智慧機。
所以智慧手機處理通訊部分的硬體BP部分,我們又稱之為 modem。
AP和BP部分的通訊(Inter-processer communication),稱為IPC,IPC的實現方式可以是透過傳遞AT-Command,也可以是利用共享記憶體來實現資料交換,安卓系統是透過傳遞AT命令來實現,主要是透過RIL(Radio Interface Layer)來實現。
下面說一下安卓作業系統在AP、BP這塊的架構,先來看兩個圖:
上圖是安卓系統的架構圖,Application層是第三方的應用;Application FrameWork層支撐應用程式的開發,重點理解Hardward Abstraction Layer,對於其作用有三點:
1. 為各種硬體制定標準的驅動器介面;
2. 由於Android的核心是開源的,服從GPL許可。而有些硬體器件廠商不願意開源他們的驅動器程式,有了HAL這個隔離帶,就可以解決開源的核心與不開源的硬體驅動器之間的矛盾。
3. Android對於硬體驅動器有一定要求。
這三點說明涉及手機制造產業鏈上的三個參與者,
1. 如果有標準的驅動器介面,最大的受益者是手機生產廠商。只要硬體外設生產商按照標準介面提供相應的硬體驅動程式,手機生產商就可以自由選擇各種配件,大大簡化了手機的整合的難度和時間。
2. 不必開源的驅動器程式,受益者是硬體器件生產廠商,而且不給手機生產廠商製造困擾。
3. 比較難以理解的是Android對硬體驅動器會有哪些要求,Android為什麼要提出這些要求。為了理解這個問題,不妨分析一個例項,看看Android HAL是如何處理Telephony的。
我們關心的HAL,在圖中以Libraries(User Space)命名,Telephony HAL的內部結構以綠色標註,包含兩個構件,Radio Daemon和Vendor RIL。
1. Radio Daemon,它是由Android提供的,不隨BP硬體的生產廠家和型號而改變。在Android啟動時,Radio Daemon就被啟用,並一直處於執行狀態,直到Android關閉。
2. Vendor RIL(Radio Interface Layer)。Vendor RIL由BP部分生產廠家提供,不同品牌的BP,以及不同型號的BP,繫結不同的Vendor RIL。Vendor RIL的存在形式是一個函式庫檔案,檔案命名必須服從約定的規範,libril-<companyname>-<RIL version>.so,方便Radio Daemon查詢可用的Vendor RIL。
在實時執行時,應用軟體呼叫Telephony Stack,而Telephony Stack指示Radio Daemon去發現當前可用的Vendor RIL,並動態載入相應的.so函式庫。也就是說,讓Radio Daemon去實現熱拔插(Plug-and-Play)的功能。Vendor RIL函式庫負責AP與BP之間的IPC。至此,從應用軟體,到Telephony Stack,到HAL中的Radio Daemon和Vendor RIL,到BP部分的硬體和驅動器,全線貫通。全線貫通後,應用軟體就可以處理撥打電話,傳送簡訊等等通訊業務了。
總結一下,智慧手機的BP部分提供基礎的通話,資料通訊,和SIM卡功能。而AP部分圍繞這些基礎功能,提供豐富的服務,例如通話記錄,簡訊的編輯回覆和轉發等等。這些服務,囊括在Telephony Stack函式庫中。
為了方便第三方軟體的安裝和執行,Android提供了Application Framework,它以Java Object的形式,封裝了Telephony Stack函式庫的功能,GUI功能,和其它外設硬體裝置的功能。Application Framework不僅降低了第三方應用軟體的開發難度,而且降低了第三方應用軟體出錯的可能性,另外還降低了萬一第三方應用軟體出錯,所造成的對整個系統的破壞。
為了方便整合來源廣泛的硬體裝置,Android提供了Hardware Abstraction Layer。與檔案系統中VFS與Storage Device的協作方式類似,一方面,HAL提煉出不同硬體廠商都必須提供的共同的功能,把它們囊括進通用的模組,例如Radio Daemon,通用的模組與硬體的品牌和型號無關。另一方面,HAL要求硬體廠商提供符合Android規範的IPC函式庫,例如Vendor RIL,以便建立起通用的模組與不同品牌和型號的硬體裝置之間的通訊渠道。
再附一張比較新的,比較全的示意圖:
一個很靠譜的帖子共享:http://blog.csdn.net/yangwen123/article/details/8914291