自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

走進手機應(yīng)用軟件開發(fā)

移動開發(fā)
蘋果App Stor的成功向我們表明了手機軟件開發(fā)的大好前景,那么開發(fā)手機軟件需要哪些知識?如何走進手機應(yīng)用軟件的開發(fā)呢?

中國移動的手機應(yīng)用軟件商店Mobile Market今天上線了,這是繼蘋果、Sun、Google、之后又一個推出在線手機應(yīng)用軟件商店的巨頭;據(jù)悉,中國移動的Mobile Market將與軟件開發(fā)者分成70%;蘋果App Stor的成功向我們表明了手機軟件開發(fā)的大好前景,那么開發(fā)手機軟件需要哪些知識?如何走進手機應(yīng)用軟件的開發(fā)呢?

1 手機軟件的運行環(huán)境

1.1 概述

手機可以被看作袖珍的計算機。它有CPU、存儲器(flash、RAM)、輸入輸出設(shè)備(鍵盤、顯示屏、USB和串口)。它還有一個更重要的I/O設(shè)備, 那就是空中接口。手機通過空中接口協(xié)議(例如GSM、CDMA、PHS等)和基站通信,既可以傳輸語音、也可以傳輸數(shù)據(jù)。

手機的CPU一般不是獨立的芯片,而是基帶處理芯片的一個單元,也稱作CPU核。基帶處理芯片是手機的核心,它不僅包含CPU核、DSP核這些比較通用的單元,還包含通信協(xié)議處理單元。通信協(xié)議處理單元和手機協(xié)議軟件一起完成空中接口要求的通信功能。

隨著芯片技術(shù)的不斷發(fā)展,越來越多的外圍電路可以被集成到基帶處理芯片中,例如BAP,即基帶模擬處理器。這樣手機才可能越做越小、越做越便宜。

1.2 單CPU和雙CPU

很多手機只有一個CPU,也就是基帶處理芯片中的CPU核。在這個CPU上既要跑通信協(xié)議,又要實現(xiàn)用戶界面(稱作UI或MMI)。當然DSP會分擔一些計算量繁重的工作,例如語音編解碼、安全層的各種算法等。

在市場推動下,手機功能在不斷發(fā)展。攝像頭、MP3、藍牙這些功能可以依靠硬件,對CPU的壓力還不是很大,但java虛擬機、嵌入式瀏覽器等應(yīng)用軟件就會對CPU資源有較高的要求。

單CPU的首要任務(wù)是完成通信協(xié)議。通信協(xié)議軟件有著很精確的定時要求,如果這個CPU還要兼顧很多應(yīng)用軟件的話,就難免吃力。于是雙CPU手機應(yīng)運而生。

顧名思義,雙CPU手機就是有兩個CPU的手機,一個CPU專心把通信協(xié)議做好,另一個CPU負責(zé)UI、java虛擬機、嵌入式瀏覽器等應(yīng)用功能。兩個CPU可以做在一個芯片里面,也可以分開。

市場上的實際情況是,很多手機設(shè)計公司(Design House)沒有基帶處理芯片的開發(fā)能力,他們購買國外公司的手機模塊,自己在外面再加一塊CPU。模塊跑通信協(xié)議,自己加的CPU跑UI和應(yīng)用軟件,兩者通過串行口通信。很多Design House也會購買國外方案商的開發(fā)板級方案,自己做PCB、軟件上改改UI和外設(shè)驅(qū)動。

市場上的智能手機基本上全是雙CPU方案,什么WindowsMobile、Symbian、Android、Apple OS、嵌入式Linux全是運行在第二塊CPU上的。這些商業(yè)操作系統(tǒng)無法和無線通 信協(xié)議軟件集成到一塊CPU上。雙CPU的手機功能比較多,但它們一般體積大,耗電多,成本高?,F(xiàn)在市場上的大部分手機還是單CPU的。

目前的大部分手機應(yīng)用,例如Java、BREW、WAP、郵件、攝像頭、閃存、MP3、藍牙,在單CPU方案里都能實現(xiàn)。我認為不管3G、4G如何發(fā)展, 小巧、實用、低成本的單CPU方案總會占據(jù)較大的市場份額。微軟在單CPU方案的手機市場還沒有立足之地,又怎么談的上什么***方向呢?

本文主要介紹單CPU手機,大多數(shù)論述也適用于雙CPU方案的通信CPU。

1.3 3G和4G

3G和4G是指第三代、第四代無線通信技術(shù),對手機而言,它們改進的是空中接口的效率,空中接口能以更大的帶寬傳送數(shù)據(jù)。通過手機無線上網(wǎng)的速度會更快。這和話音業(yè)務(wù)、手機應(yīng)用軟件沒有直接的聯(lián)系。

當然,手機的嵌入式數(shù)據(jù)業(yè)務(wù)由于更高的帶寬,會產(chǎn)生更多的可能性。不過這些可能性的實現(xiàn)還是會受到手機輸入慢、顯示屏小等條件的制約。

2 手機軟件的組成

2.1 概述

手機軟件和PC機軟件一樣從中斷向量表開始,因為比較小,看上去更加清晰。中斷向量表的***個跳轉(zhuǎn)指令當然是跳到復(fù)位的處理程序,后面是中斷處理、錯誤處 理的跳轉(zhuǎn)指令。一上電,手機就跳轉(zhuǎn)到復(fù)位的處理程序,開始檢查內(nèi)存、初始化C運行環(huán)境,然后創(chuàng)建***個任務(wù)。這個任務(wù)會按順序創(chuàng)建、啟動其它任務(wù)。絕大多 數(shù)手機程序都是多任務(wù)的,但也有一些小靈通的協(xié)議棧是單任務(wù)的,沒有操作系統(tǒng),它們的主程序輪流調(diào)用各個軟件模塊的處理程序,模擬多任務(wù)環(huán)境。

手機軟件可以粗略地分成啟動模塊、操作系統(tǒng)、協(xié)議棧、數(shù)據(jù)業(yè)務(wù)、本地存儲、驅(qū)動程序、用戶界面和其它應(yīng)用。啟動模塊前面已經(jīng)說過了,下面簡單介紹其它部分。

2.2 操作系統(tǒng)

操作系統(tǒng)在手機軟件只占很小一部分。它的主要功能就是提供多任務(wù)調(diào)度、通信機制。有的操作系統(tǒng)會提供動態(tài)內(nèi)存分配,定時函數(shù),但這些都不是必須的。例如需要動態(tài)內(nèi)存分配的模塊,可以自己管理一個內(nèi)存池,這樣更易于隔離模塊和預(yù)測內(nèi)存需求。

大多數(shù)手機的操作系統(tǒng)都是一個很小的內(nèi)核,例如REX、HIOS等。高通REX的源代碼連C代碼加匯編也不過一千多行,編譯后不過是2、3K的代碼量。而一般手機軟件有幾百到上千個源文件、超過一百萬行的代碼。

2.3 協(xié)議棧

協(xié)議棧是手機軟件最復(fù)雜的部分,它的復(fù)雜性在于它和基帶處理芯片的設(shè)計密切相關(guān)。只有具備芯片設(shè)計能力的企業(yè)才可能開發(fā)協(xié)議棧。協(xié)議棧會使用基帶處理芯片的所有資源。

2.4 數(shù)據(jù)業(yè)務(wù)

數(shù)據(jù)業(yè)務(wù)主要有兩種:在前一種,手機相當于一個調(diào)制解調(diào)器,PC機通過手機上網(wǎng),網(wǎng)絡(luò)協(xié)議全在PC機上,手機提供數(shù)據(jù)鏈路。另一種就是嵌入式數(shù)據(jù)業(yè)務(wù),手機內(nèi)部包含TCP/IP/PPP等協(xié)議,有時還要實現(xiàn)HTTP和嵌入式瀏覽器。

2.5 本地存儲

手機都有本地存儲功能,存儲電話本、短消息、用戶設(shè)定等。一般手機都有一個基于flash的文件系統(tǒng)。早期的手機存儲是基于EEPROM的。

2.6 驅(qū)動程序

硬件驅(qū)動一般指外設(shè)驅(qū)動,不過有的外設(shè)已經(jīng)被集成到基帶處理芯片中了。驅(qū)動程序包括鍵盤、電源管理模塊、LCD、flash、RTC、串口、USB、SIM卡或UIM卡、射頻驅(qū)動等。

2.7 用戶界面

用戶界面(UI)又稱作人機界面(MMI),它負責(zé)和用戶的交互,在必要的時候調(diào)用其它模塊的功能。除了手機的必備功能外,用戶界面也可能包含一些相對獨立的應(yīng)用程序,例如日程表、游戲等。

2.8 其它應(yīng)用

其它應(yīng)用包括Java虛擬機、WAP瀏覽器、郵件軟件等,是一些比較大,又相對獨立的應(yīng)用模塊。

基本上講完了。大家肯定看得挺沒意思吧。這些程序和微軟的longhorn、metedata有什么關(guān)系呢?手機程序絕大部分是用C語言寫的。但對于做應(yīng)用軟件的程序員要求具備面向?qū)ο蟆⒃O(shè)計模式的思維能力,然后用C語言實現(xiàn)出來。
高通的BREW就是用C語言硬生生地模仿C++,弄出很多奇怪的宏。一般應(yīng)用軟件的開發(fā)不用這么死板,但對各種軟件設(shè)計方法的了解還是必要的。

3 手機的核心技術(shù)

手機的核心技術(shù)是芯片和協(xié)議棧,兩者是密不可分的。芯片設(shè)計需要協(xié)議棧來驗證,協(xié)議棧必須充分發(fā)揮出芯片的功能。芯片的CPU核、DSP核都可以買到現(xiàn)成的單元,但通信協(xié)議部分就需要自己設(shè)計了。手機比較難做好的是耗電量、惡劣信號環(huán)境的性能等。

4 第三方軟件

4.1 原理

“第三方軟件”這個詞的含義比較寬泛。本文用它來指代不是硬編碼在手機里,而是可以通過數(shù)據(jù)線或網(wǎng)絡(luò)下載到手機上,可以裝載、運行,也可以刪除的軟件。

前面講到的軟件都是完整程序的各個部分。這些部分會被放到一起編譯,產(chǎn)生一個二進制文件,通過JTAG口(升級時可以用串口)下載到手機的flash中。手機一上電,就會從指定地址開始運行。這個地址的內(nèi)容就是跳轉(zhuǎn)到復(fù)位處理程序的跳轉(zhuǎn)指令。哈哈,又講回頭了。

第三方軟件是指手機可以通過數(shù)據(jù)線或者網(wǎng)絡(luò)下載一些可執(zhí)行文件到文件系統(tǒng)中。然后有一個裝載器可以執(zhí)行這些文件。這樣第三方就可以開發(fā)一些應(yīng)用程序,下載到手機中來擴充手機功能。

這些可執(zhí)行文件現(xiàn)在主要有兩種格式:java程序和BREW程序。java程序需要java虛擬機裝載運行。BREW程序是一個很奇怪的東西,它實際就是用與編譯手機程序相同的編譯器編譯出來的目標代碼。這些目標代碼必須是可以重新定位的,即不能包含全局和靜態(tài)變量。

裝載器將程序?qū)?zhí)行權(quán)傳給給BREW程序,一種聽上去更安全的說法是調(diào)用BREW程序的入口函數(shù)。這個入口函數(shù)的位置在文件中是固定的。裝載器在調(diào)用 BREW程序的入口函數(shù)時會傳入一個地址。通過這個地址,BREW程序能夠順藤摸瓜,找到系統(tǒng)提供的各種API的地址,它通過這些API訪問手機的顯示、 通信等功能。

java程序基本上是平臺無關(guān)的,針對各種平臺設(shè)計的java虛擬機隔離了平臺的大部分特性,除了廠家特意提供的一些OEM功能。BREW程序顯然是平臺相關(guān),換一個CPU,就不認識原來的目標碼了。

4.2 其它

除了java、BREW外,Windows CE、SmartPhone、WindowsMobile、Symbian、嵌入式Linux這些商業(yè)操作系統(tǒng)當然可以提供各種創(chuàng)建第三方程序的方法。在 這些環(huán)境寫程序和在PC平臺寫程序很相近,基本上體會不到嵌入式編程的特點,只是屏幕小一些,輸入麻煩一些。

這些第三方軟件不是必需的。手機在3G的市場中只占了一個較小的部分,網(wǎng)絡(luò)是大頭。而第三方軟件相對于手機來說,所占的份額就更小了。

5 結(jié)束語

需要說明:關(guān)于以后的市場究竟以單CPU手機為主,還是以雙CPU手機為主的問題,我傾向于單CPU手機,但這只是我個人觀點。實際市場會怎么發(fā)展,殊難預(yù)料。

對于一個芯片兩個CPU核的方案,從軟件角度看我是很贊成的。將應(yīng)用軟件和協(xié)議軟件分開,協(xié)議軟件可以更加穩(wěn)定,應(yīng)用軟件可以自由發(fā)展,使用大量在PC環(huán)境已經(jīng)成熟的技術(shù)。

 

【編輯推薦】

  1. 中移動手機軟件商店今日開通 征集四類在線應(yīng)用
  2. 微軟正式開放Windows Mobile軟件商店
  3. 谷歌將推出Android Market 效仿蘋果App Store
  4. Sun發(fā)布App Store,甲骨文透露交易內(nèi)幕
  5. Google公布Android開發(fā)路線圖
責(zé)任編輯:佚名 來源: upsdn
相關(guān)推薦

2009-05-05 09:11:31

應(yīng)用軟件商店iPhoneGoogle

2012-09-13 09:54:24

微軟Visual Stud應(yīng)用軟件

2012-09-13 09:54:24

微軟Visual Stud應(yīng)用軟件

2011-12-20 09:03:05

2009-08-21 08:55:58

App Store

2011-07-21 15:23:28

應(yīng)用商店APP Store蘋果

2016-07-29 15:10:38

解放號眾包

2012-05-13 13:01:56

安卓

2020-07-01 07:00:00

軟件開發(fā)低代碼無代碼

2010-04-01 09:10:55

iPhone應(yīng)用

2009-11-07 19:15:51

嵌入式軟件開發(fā)

2009-03-13 09:26:40

微軟軟件開發(fā)商

2013-01-05 09:54:52

谷歌Windows 8云計算

2022-05-07 23:54:59

windows操作系統(tǒng)應(yīng)用軟件

2009-12-22 15:05:07

Linux應(yīng)用軟件

2009-11-12 09:17:07

手機軟件開發(fā)

2010-06-17 17:22:46

UML軟件開發(fā)

2010-06-18 10:27:41

UML軟件開發(fā)

2009-07-29 16:28:25

ASP.NET應(yīng)用軟件

2011-09-05 17:07:45

MTK手機軟件
點贊
收藏

51CTO技術(shù)棧公眾號