<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 將ARM版Android用于非智能手機(jī)應(yīng)用

          將ARM版Android用于非智能手機(jī)應(yīng)用

          作者: 時(shí)間:2012-05-09 來源:網(wǎng)絡(luò) 收藏

            操作系統(tǒng)此前主要被和平板等移動(dòng)設(shè)備,現(xiàn)在它將進(jìn)入更多市場(chǎng)。處理器開發(fā)者傾向于利用的靈活性、性能和多功能性。基于開源Linux內(nèi)核的系統(tǒng)依然保留了開源軟件的很多特性,即便在Google收購Android以后,它也只是蛻變?yōu)榛旌夏J?mdash;—鑒于開源和商業(yè)之間的操作系統(tǒng)。Android1的優(yōu)勢(shì)在于沒有授權(quán)費(fèi)而且可以免于開源社區(qū)的索取。Android已經(jīng)預(yù)配了強(qiáng)大的功能,Google定義了該操作系統(tǒng)的中間件、多媒體框架以及關(guān)鍵系統(tǒng)固件,這和需要開發(fā)者自行集成功能至開源內(nèi)核的其它Linux系統(tǒng)不一樣。

          本文引用地址:http://www.ex-cimer.com/article/149107.htm

            截至2011年10月,Android數(shù)量已經(jīng)突破40萬個(gè),體現(xiàn)出它的強(qiáng)勁增長(zhǎng)。Android版本的快速更新以及未來路線圖展現(xiàn)出該系統(tǒng)的持久性。最新發(fā)布的Android 4.0(又名Ice Cream Sandwich)將該系統(tǒng)的和平板版本合二為一。

            Android的新邊疆

            Android已經(jīng)在手機(jī)領(lǐng)域取得大量市場(chǎng)份額,并開始向類似市場(chǎng)進(jìn)軍。這些市場(chǎng)包括平板、瘦客戶端個(gè)人電腦、無線視頻會(huì)議系統(tǒng)以及采用GoogleTV的電視機(jī)。

            智能手機(jī)順滑的觸屏界面非常流行,以至于開始滲入日常家用、商用產(chǎn)品。得益于其靈活性,Android也已經(jīng)進(jìn)入耐用型PDA個(gè)人數(shù)字助理、智能家電、醫(yī)療診斷用戶界面甚至工業(yè)系統(tǒng)。

            從功能性的角度,上文提及的大部分都有共性。所有這些都重視多媒體內(nèi)容,并且主打健壯、以圖形為中心的流暢觸控用戶界面以及通信組建——都是Android的強(qiáng)項(xiàng)!

            這些新產(chǎn)品的設(shè)計(jì)師在考慮將現(xiàn)有與Android環(huán)境整合時(shí)應(yīng)該注意Linux和Android的區(qū)別。這兩個(gè)系統(tǒng)有很多相近的功能,比如多媒體處理、文件系統(tǒng)響應(yīng)、cocs、驅(qū)動(dòng)補(bǔ)丁以及其它軟件模塊。但它們并不相同,即便Android構(gòu)筑于Linux內(nèi)核之上。設(shè)計(jì)師在從Linux向Android遷移的階段需要重新編碼。

          內(nèi)核優(yōu)化

            Android操作系統(tǒng)完全為處理器內(nèi)核優(yōu)化,特別是ARM Cortex-A系列內(nèi)核,包括ARM Cortex-A8。該處理器擁有上網(wǎng)本級(jí)別的功能以及低功耗特性,非常適合移動(dòng)嵌入式系統(tǒng)。ARM Cortex-A8設(shè)備通過被稱為NEON的ARM高級(jí)SIMD技術(shù)進(jìn)行編碼或圖形操作加速,相比直接ARM或THUMB編碼性能提升顯著。德州儀器的ARM設(shè)備集成了NEON高級(jí)SIMD引擎。ARM9內(nèi)核被廣泛嵌入式系統(tǒng),但Android并未針對(duì)這些內(nèi)核進(jìn)行優(yōu)化。它可以ARM9設(shè)備,但性能表現(xiàn)會(huì)嚴(yán)重縮水。

            Android系統(tǒng)通常主打多媒體應(yīng)用,開發(fā)者應(yīng)該注意系統(tǒng)對(duì)視頻、音頻和圖形的處理方式。Android預(yù)裝了很多低分辨率的多媒體編解碼器,這是ARM Cortex-A8通用內(nèi)核的基礎(chǔ)。不過很多業(yè)界的處理器,例如德州儀器的OMAP、DaVinci視頻處理器以及C6000 DSP + ARM 處理器合并了ARM內(nèi)核與DSP。這么做可以幫助DSP分擔(dān)ARM內(nèi)核的處理任務(wù),提供更強(qiáng)的多媒體處理能力。

            Android開發(fā)工具

            Android向開發(fā)者提供Java和C/C++開發(fā)語言。Java方面利用Android SDK(軟件開發(fā)包)和針對(duì)移動(dòng)設(shè)備優(yōu)化的Dalvik虛擬機(jī)。Java可以運(yùn)行于任何支持Java的環(huán)境。Android NDK(本地開發(fā)包)則采用C/C++編碼,將編碼限定于特定的CPU架構(gòu)。不過由于絕大部分Android設(shè)備都基于ARM,這算不得什么嚴(yán)重限制,對(duì)想用Android的x86廠商才是大問題。純Java應(yīng)用可以正常運(yùn)行,但利用NDK代碼開發(fā)的ARM應(yīng)用就需要手動(dòng)移植到x86設(shè)備。

            開發(fā)者在評(píng)估Android設(shè)備時(shí)可以在搬上實(shí)體設(shè)備前先利用完整的虛擬環(huán)境構(gòu)筑應(yīng)用。該環(huán)境可以在 http://developer.android.com/sdk 下載到,能夠運(yùn)行于蘋果、Linux或Windows個(gè)人電腦。

          圖1,框架應(yīng)用程序編程接口(API),調(diào)式代碼以及Android SK的工具和輸出完成后的代碼。德州儀器的Code Composer Studio v.5 IDE支持Google Android開發(fā)工具(ADT)插件。
          圖1,框架應(yīng)用程序編程接口(API),調(diào)式代碼以及Android SK的工具和輸出完成后的代碼。德州儀器的Code Composer Studio v.5 IDE支持Google Android開發(fā)工具(ADT)插件。

            Google提供的Android開發(fā)工具(ADT)插件支持流行的Eclipse整合開發(fā)環(huán)境(IDE)。Eclipse被捆 綁在很多工具上以實(shí)現(xiàn)快速展開項(xiàng)目、應(yīng)用界面開發(fā)、增加基于Android Framework API的組件和調(diào)式代碼、Android SK的工具以及輸出完成代碼。德州儀器的Code Composer Studio v.5 IDE(圖1)基于Eclipse,并擁有高級(jí)調(diào)試功能(例如Linux Aware Debug)、硬件調(diào)試、仿真等功能。開發(fā)者采用Code Composer Studio和ADT插件,就能直接在同一個(gè)IDE調(diào)試Android Java和C/C++代碼、Linux內(nèi)核、DSP代碼等等。開發(fā)者也可以通過Code Composer Studio和ADT插件運(yùn)行Android虛擬機(jī)。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();