新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 淺談Android軟硬件巧妙整合的開發技巧

        淺談Android軟硬件巧妙整合的開發技巧

        作者: 時間:2012-10-31 來源:網絡 收藏

        ·應用程序(Application):所有應用程序皆是以Java程序語言編寫,原始就會包含像是Email、簡訊、日歷、地圖、瀏覽器、聯絡人等其它應用程序,讓用戶一開始就擁有這些基本功能,者也可在此客制其使用接口。

        廠商越想要設計出與原始設定不同且增強效能的產品,便越需要對這五層架構進行修改。譬如像是多任務處理能力(multi-tasking),便可能需要修改包括Linux核心與應用程序框架的設計;而應用程序的者更可能需要針對應用程序與框架進行調整。由此可見,對設備而言,任何一個功能的置入或是對硬件設定的細微更動,都需要對系統進行從下到上的調整以達到最優化的效能,而這正是最為困難與需要驗證的一環。

        二、Android設備的五大技術環節

        如前所述,對眾家廠商而言最大的挑戰其實在于,如何將自己理想的產品訴求,與Android系統結合成一個功能完整并使用流暢順手的產品,這其中牽涉了不同技術間的與運用。在此我們便根據其多年的測試與研究經驗,歸納出五大Android相關設備在技術上的重要環節:

        1、Linux驅動程序的導入

        由于Android是根源于Linux所延伸出來的操作系統,因此各種關鍵功能的驅動程序也必須要能順利的寫入其中,舉凡像是字符設備、存儲器的空間配置、中斷處理、網路通信、螢幕顯示或是連接接口像是USB與PCI的驅動程序,這些可能是自行撰寫、或是來自不同組件廠商的驅動程序,都必須要能被導入到Android系統,并維持良好穩定的效能表現。

        2、系統單芯片的優化處理

        對廠商而言,開發一款Android設備,不僅僅只是將所有零組件組合成為一個產品那么容易,最大的學問便在于將系統單芯片(System-on-a-chip,SoC)、各種新技術和Android系統進行整合,SoC涉及像是Dalvik Virtual Machine、OpenGL、V8、Webkit Engine等上層的演算,與Android間的結合便必須透過不斷的嘗試與驗證,才能研發出既符合成本效益、又有良好效能的優化產品。目前市面上有些SoC廠商已針對Android系統的特性,提供整合過的SoC平臺,將藍牙、相機或上網等常用功能模組預先寫入,減少終端成品廠商費力整合開發的時間,但對廠商而言,這樣的預先整合是否適合自身產品,以及是否需要再作更細致的修改,則又是更困難的課題。

        3、新技術的移植

        隨著技術的快速發展,更多新興的技術規格也逐漸應用在手機等手持設備上,以手機為例,已經從過去以撥打電話為主要功能,轉變為擁有各種多樣化用途的產品。像是觸控技術讓消費者可以透過手指的滑動傳送指令甚至是具備多點觸控的支持、Wi-Fi模組提供隨時無線上網的可能、通用圖形處理器(General-purpose computing on graphics procESSing units,GPGPU)則能以并行方式透過圖形處理器來執行通用計算任務、Android 2.3版所支持的NFC近場通信技術,以及更高階的相機模組等等,背后都有各自的驅動程序與軟件技術,也必須要與Android系統相結合使用。

        4、效能表現的穩定

        盡管上述這些技術不斷推陳出新,但也都不能因此而犧牲設備原本的效能表現,讓處理速度因此變慢或造成使用上不順暢的狀況。除了采用更好的硬件設備外(例如現今處理器的時脈已邁向1GHz),更需要操作系統的支持,像是如何在多任務運作的狀況下維持程序執行速度以及系統滿載的處理等等,都必須要透過軟件面的奧援。也就是說,一臺Android設備除了要能將各種功能與技術收納起來、將整合外,更必須同時注重它在效能上能否維持應有的水準,以提供使用者在操作上流暢易上手的感受。

        5、低電耗設計

        Android的設計概念主要是應用于便攜式設備上,目前市面上可見的像是平板電腦與智能手機等。對這類產品而言,電池續航力的好壞可說是影響消費者使用感受的關鍵之一,試想,若是一臺智能手機的待機時間過短,而使用者在外時又無法隨時充電使用,不能即時的連網查詢資料或執行其他手機功能,這樣的產品便失去了它作為便攜式移動設備應有的便利性。追根究底,良好的待機時間除了需仰賴高容量的電池以提供充足電力之外,另一個重點就是設備本身在被使用執行時能否作到低電耗設計。Android設備讓使用者能透過各種多樣化的應用程序,來達到各種不同的使用目的,舉凡像是單純上網、觀看新聞、郵件推播或是游戲等等,各種不同功能的程序都能透過自由下載使用,也由于其多任務處理與讓程序背景執行的能力,更讓降低耗電量成為開發者不可輕忽的一項課題。

        持續驗證修正 找出最佳Android整合方案

        正如前面我們不斷提到的,對Android設備而言,最困難的開發挑戰便在于如何完美地“整合”軟件與硬件,以開發出一項功能完整又同時注重使用者感受的產品。從對Android本身程序碼的修改、相關硬件的選擇,到驅動程序的結合運用以及能否維持穩定的效能表現等,在在都必須要透過仔細的研究與不斷的嘗試,才能找出問題的根源并解決、更進而找出最合適的整合方案。

        像是Android源代碼中對音源的重新取樣(Re-sampling)設計,就會導致設備在讀取48K音源時重新取樣成44K,而造成諧波失真的現象影響音質,這便是廠商不會注意到而未去修改的問題;另外像是天線位置的設計,也可能直接的影響到收訊能力的好壞;而不良的電源管理設計,也極有可能影響到設備在持續使用狀態中的耗電情形。百佳泰在此僅以專業測試驗證實驗室的角度,希冀以宏觀的方式,針對Android設備的開發設計提供可用的參考,近期內我們也將會提供實際的相關測試數據報告,并進一步指陳這些可能的問題風險,以期讓更多廠商與消費者都能注意到品質驗證的重要性,是從產品設計的根源就要開始層層把關。

        Android 是運行于 Linux kernel之上,但并不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 并非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。   目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網絡堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沂源县| 竹北市| 惠东县| 光山县| 正蓝旗| 仁化县| 罗甸县| 马山县| 蚌埠市| 航空| 大厂| 安仁县| 泰宁县| 高阳县| 镇远县| 长葛市| 福鼎市| 秦安县| 微山县| 思南县| 大同县| 罗山县| 天峻县| 故城县| 吉安市| 清远市| 孟村| 西青区| 门头沟区| 龙游县| 厦门市| 漯河市| 荥经县| 大新县| 民勤县| 通江县| 新郑市| 阿拉善盟| 顺义区| 景洪市| 青阳县|