1.1 概述
手機可以被看作袖珍的盤算機。它有CPU、存儲器(Flash、RAM)、輸進輸出設備(鍵盤、顯示屏、USB和串口)。它還有一個更重要的I/O設備,那就是空中接口。手機通過空中接口協議(例如GSM、CDMA、PHS等)和基站通信,既可以傳輸語音、也可以傳輸數據。
手機的CPU一般不是獨立的芯片,而是基帶處理芯片的一個單元,也稱作CPU核。基帶處理芯片是手機的核心,它不僅包含CPU核、DSP核這些比擬通用的單元,還包含通信協議處理單元。通信協議處理單元和手機協議軟件一起完成空中接口請求的通信功效。
隨著芯片技巧的不斷發展,越來越多的外圍電路可以被集成到基帶處理芯片中,例如BAP,即基帶模仿處理器。這樣手機才可能越做越小、越做越便宜。
1.2 單CPU和雙CPU
許多手機只有一個CPU,也就是基帶處理芯片中的CPU核。在這個CPU上既要跑通信協議,又要實現用戶界面(稱作UI或MMI)。當然DSP會分擔一些盤算量沉重的工作,例如語音編解碼、安全層的各種算法等。
在市場推動下,手機功效在不斷發展。攝像頭、MP3、藍牙這些功效可以依附硬件,對CPU的壓力還不是很大,但Java虛擬機、嵌進式浏覽器等利用軟件就會對CPU資源有較高的請求。
單CPU的重要任務是完成通信協議。通信協議軟件有著很准確的定時請求,假如這個CPU還要兼顧許多利用軟件的話,就難免吃力。於是雙CPU手機應運而生。
顧名思義,雙CPU手機就是有兩個CPU的手機,一個CPU專心把通信協議做好,另一個CPU負責UI、Java虛擬機、嵌進式浏覽器等利用功效。兩個CPU可以做在一個芯片裡面,也可以離開。
市場上的實際情況是,許多手機設計公司(DesignHouse)沒有基帶處理芯片的開發才能,他們購置國外公司的手機模塊,自己在外面再加一塊CPU。模塊跑通信協議,自己加的CPU跑UI和利用軟件,兩者通過串行口通信。許多Design House也會購置國外計劃商的開發板級計劃,自己做PCB、軟件上改改UI和外設驅動。
市場上的智能手機基礎上全是雙CPU計劃,什麼WindowsCE、SmartPhone、WindowsMobile、SymBian、嵌進式Linux全是運行在第二塊CPU上的。這些貿易把持系統無法和無線通信協議軟件集成到一塊CPU上。雙CPU的手機功效比擬多,但它們一般體積大,耗電多,本錢高。現在市場上的大部分別機還是單CPU的。
目前的大部分別機利用,例如Java、BREW、WAP、郵件、攝像頭、閃存、MP3、藍牙,在單CPU計劃裡都能實現。我認為不管3G、4G如何發展,小巧、實用、低本錢的單CPU計劃總會盤踞較大的市場份額。微軟在單CPU計劃的手機市場還沒有立足之地,又怎麼談的上什麼引領方向呢?
本文重要先容單CPU手機,大多數論述也實用於雙CPU計劃的通信CPU。
1.3 3G和4G
3G和4G是指第三代、***無線通信技巧,對手機而言,它們改良的是空中接口的效率,空中接口能以更大的帶寬傳送數據。通過手機無線上網的速度會更快。這和話音業務、手機利用軟件沒有直接的接洽。
當然,手機的嵌進式數據業務由於更高的帶寬,會產生更多的可能性。不過這些可能性的實現還是會受得手機輸進慢、顯示屏小等條件的制約。
2.1 概述
手機軟件和PC機軟件一樣從中斷向量表開端,由於比擬小,看上往更加明白。中斷向量表的第一個跳轉指令當然是跳到復位的處理程序,後面是中斷處理、錯誤處理的跳轉指令。一上電,手機就跳轉到復位的處理程序,開端檢查內存、初始化C運行環境,然後創立第一個任務。這個任務會按次序創立、啟動其它任務。盡大多數手機程序都是多任務的,但也有一些小通達的協議棧是單任務的,沒有把持系統,它們的主程序輪流調用各個軟件模塊的處理程序,模仿多任務環境。
手機軟件可以粗略地分成啟動模塊、把持系統、協議棧、數據業務、本地存儲、驅動程序、用戶界面和其它利用。啟動模塊前面已經說過了,下面簡略先容其它部分。
2.2 把持系統
把持系統在手機軟件只占很小一部分。它的重要功效就是供給多任務調度、通信機制。有的把持系統會供給動態內存分配,定時函數,但這些都不是必需的。例如需要動態內存分配的模塊,可以自己治理一個內存池,這樣更易於隔離模塊和猜測內存需求。
大多數手機的把持系統都是一個很小的內核,例如REX、HiOS等。高通REX的源代碼連C代碼加匯編也不過一千多行,編譯後不過是2、3K的代碼量。而一般手機軟件有幾百到上千個源文件、超過一百萬行的代碼。
2.3 協議棧
協議棧是手機軟件最復雜的部分,它的復雜性在於它和基帶處理芯片的設計密切相干。只有具備芯片設計才能的企業才可能開發協議棧。協議棧會應用基帶處理芯片的所有資源。
2.4 數據業務
數據業務重要有兩種:在前一種,手機相當於一個調制解調器,PC機通過手機上網,網絡協議全在PC機上,手機供給數據鏈路。另一種就是嵌進式數據業務,手機內部包含TCP/IP/PPP等協議,有時還要實現HTTP和嵌進式浏覽器。
2.5 本地存儲
手機都有本地存儲功效,存儲電話本、短消息、用戶設定等。一般手機都有一個基於Flash的文件系統。早期的手機存儲是基於EEPROM的。
2.6 驅動程序
硬件驅動一般指外設驅動,不過有的外設已經被集成到基帶處理芯片中了。驅動程序包含鍵盤、電源治理模塊、LCD、Flash、RTC、串口、USB、SIM卡或UIM卡、射頻驅動等。
2.7用戶界面
用戶界面(UI)又稱作人機界面(MMI),它負責和用戶的交互,在必要的時候調用其它模塊的功效。除了手機的必備功效外,用戶界面也可能包含一些相對獨立的利用程序,例如日程表、游戲等。
2.8其它利用
其它利用包含Java虛擬機、WAP浏覽器、郵件軟件等,是一些比擬大,又相對獨立的利用模塊。
基礎上講完了。大家確定看得挺沒意思吧。這些程序和微軟的longhorn、metedata有什麼關系呢?手機程序盡大部分是用C語言寫的。但對於做利用軟件的程序員請求具備面向對象、設計模式的思維才能,然後用C語言實現出來。
高通的BREW就是用C語言硬生生地模仿C++,弄出許多希奇的宏。一般利用軟件的開發不用這麼呆板,但對各種軟件設計方法的懂得還是必要的。