Friday, August 25, 2006

發展新世代無線嵌入式應用的程式設計考慮

Tags: ,

發展新世代無線嵌入式應用的程式設計考慮
作者:Justin Helmig, 德州儀器無線應用部門資深技術工程師
摘要
今天的先進世代和明日的第三代(2.5G和3G)無線系統不僅增加多媒體功能,還包括目前在PDA常見的許多應用,然而這些無線系統的軟體發展工程師卻多半來自個人電腦領域,對於嵌入式平台並不熟悉,他們必須先瞭解這兩種軟硬體環境之間的差異,較重要的部份包括媒介傳輸速率、記憶體資源、使用者界面、電源需求、處理核心架構和發展環境;因此,設計人員在發展新世代無線系統多媒體和PDA之類的應用時,即可更有效規劃和執行他們的軟體。

無線應用的成長
無線通信技術的進步,加速了無線服務的需求;前兩代無線手機只能提供語音服務,新標準則擴大了第三代無線網路應用範圍,可以同時傳輸音訊、視訊、資料和語音。目前的無線網路已開始支援語音和資料服務,做為邁向未來全方位多媒體服務的中間步驟(2.5G)。除了新型態通信服務之外,無線手機也開始提供更多個人應用,例如在PDA上執行各種應用,為市場帶來一系列全新的行動通信設備,從智慧型手機到無線PDA、筆記型電腦和網路家電。

為了掌握快速成長的無線商機,許多軟體公司開始為新型行動設備發展各種新應用。今天,對於無線系統,甚至PDA之類的非無線掌上型裝置,有豐富經驗的應用發展廠商並不多,絕大部份程式設計人員都只接受過個人電腦軟體訓練,他們非常熟悉個人電腦硬體、作業系統和發展環境。但是,若程式設計人員想為無線系統發展應用軟體,卻只熟悉較為成熟的個人電腦技術和有線網路,他們應先瞭解這兩個世界的差異,例如無線傳輸的速率比有線網路慢,而且相較於個人電腦,可攜式系統的功率消耗、記憶體容量和使用者界面也受到更多限制。無線系統是以DSP和RISC處理器為基礎,工程師開發應用軟體時,必須瞭解這兩種處理器的特性和優點。許多新出現的無線系統還在發展初期,應用發展環境並不成熟,很多方面都像早期的個人電腦環境,工程師若瞭解其間差異,在發展新世代無線應用時,即能更有效規劃和執行他們的軟體。

窄頻寬
今天的無線媒介只能提供較窄傳輸頻寬,這是與有線網路的一個重大差異。個人電腦發展人員已習慣有線乙太網路和它所提供的10 Mbps資料速率,有線電信網路的速度則較慢,因為資料速率會受到類比數據機限制,也就是56 kbps上行速率和33 kbps下行速率。但這個情形正在改變,因為虛擬專用網路(VPN)已為辦公室帶來乙太網路傳輸速率,數位用戶迴路和纜線數據機則把Mbps等級的寬頻傳輸提供給終端使用者。

相形之下,現有的數位無線網路是以語音服務為主,每個通道約可提供15至20 kbps傳輸速率,不同傳輸標準的速率略有差異。較新的2.5G標準則將速率提升數倍,使它的頻寬足以和類比數據機相抗衡,甚至還要略勝一籌;等到3G無線網路建置完成,最佳條件下的傳輸速率甚至可達到寬頻水準,例如根據3G的ITU/UMTS定義,行動通訊的資料速率為384 Kbps,移動速率較慢或固定式無線裝置更高達2 Mbps。但這些都是最佳條件下的數字,實際速率會隨著線路不同而改變,影響因素包括信號雜訊和強度、環境干擾以及特定區域的通話密度。為滿足較低速應用需求,3G網路也支援2G和2.5G速率。

無線傳輸速率對於應用發展也很重要,因為工程師必須考慮要支援那一種網路;長期而言,3G網路可以提供最大的視訊、影像和其它高頻寬傳輸潛力,但是2G基礎設施目前已就定位,未來一段時間內,將有最大一群用戶可以享受2G傳輸速度,2.5G的傳輸速率和開始服務時間則介於兩者之間。

此外,發展廠商也必須考慮他們的應用能否根據實際頻寬大小,動態提供不同功能和影像品質,使作業能夠持續進行。頻寬不僅隨著可用的傳輸型態(2G、 2.5G或3G)而改變,也會受到特定時間的網路狀況影響,若應用能在各種傳輸條件下持續工作,它的用途自然比需要一條高頻寬連線的應用更加廣泛。

系統資源
發展主從應用時,任何決定都必須同時將無線頻寬和系統資源納入考慮,不管最後採用的網路為何,工程師必須決定在何處執行處理運算 - 本地系統或網路伺服器;此時必須考慮的因素不僅包括傳輸速率,本地系統的可用運算效能也同樣重要。對於電池操作的行動系統,軟體執行時的功率消耗是個問題,可用記憶體容量也必須注意。

把所有因素加在一起,就可決定那些作業應在手機上執行,那些應交給網路伺服器負責。一般說來,若應用會產生大量資料,特別是即時資料,就應透過壓縮和解壓縮程序,把資料傳輸量減至最少;另一方面,若應用的計算量龐大,所須處理的資料卻很少,就應儘量把運算工作交給網路執行。

不同型態的作業適合不同的處理方式,例如在大型資料庫中搜尋某些資訊,所須的運算量將極為龐大,產生的資料卻相對較少,這類應用主要受到運算能力限制,而非網路頻寬,因此最好交給伺服器執行;另一方面,MP3檔案解碼比較適合交給手機處理,因為頻寬是這類應用的主要限制,因此設計目標是將資料傳輸量減至最少。

記憶體限制
就系統本身而言,記憶體容量是程式設計師必須面對的另一項重要限制,雖然今天的個人電腦已能提供數個GB的程式儲存區和虛擬交換記憶體,無線手機通常卻只包含16至32 MB記憶體,而且須同時用於程式的儲存和執行;此外,無線手機記憶體的升級擴充並不容易,更無法透過虛擬記憶體加以擴大,因為絕大多數的掌上型無線系統都不包含硬碟。

受到記憶體容量限制,應用程式設計師必須將軟體最佳化,並移除不必要的功能特色,以便將程式和資料空間需求減至最少。程式甚至可能必須採用模組化設計,讓更多常式直接在伺服器端執行,不必交給個人電腦執行;此外,許多功能也只須在連線階段必要時,透過網路下載至手機即可。

個人電腦和工作站的記憶體運用方式對應用軟體完全透明,熟悉這種做法的程式設計師必須瞭解,嵌入式作業系統並不採用如此複雜的記憶體管理機制,因為沒有硬碟提供虛擬交換空間,動態記憶體配置必須非常小心,避免發生記憶體不足的現象;此外,某些嵌入式作業系統在處理程序結束時,不會自動收回已配置的記憶體,因此應用軟體不但要避免不必要的記憶體配置,還應於處理程序結束時,主動釋出所有佔用的記憶體,防止記憶體漏失(memory Leak)情形出現。

螢幕限制
掌上型系統的螢幕比較小,且解析度也低於個人電腦螢幕,例如1024 x 768像素是個人電腦常見的解析度,行動裝置通常卻只有240 x 320像素或更低;由於螢幕面積很小,無線作業系統大都不支援多重視窗,但可能透過對話方塊提供資料輸入、訊息顯示或其它功能。

雖然掌上型裝置的螢幕限制較為明顯,但它對於應用的「外觀」設計卻有深遠影響。通常在螢幕較大的系統中,應用的吸引力主要在於充份發揮螢幕顯示能力和系統繪圖功能,但對於掌上型系統,由於它的螢幕較小,解析度較低,繪圖功能也較簡單,應用的視訊輸出也會受到更多限制;此時軟體發展商所面對的挑戰是如何在較小螢幕上,儘可能對它最有效利用,為使用者創造最滿意的視覺顯示效果。

節省功率
節省功率消耗是行動系統最關心的課題,發展廠商應深入瞭解和利用他們所能掌握的低功率系統特色。無線作業系統通常會提供電源管理功能,使系統處於閒置狀態時,能自動切斷部份電源,因此若應用軟體必須等待某項系統資源,就應將系統控制權交回給作業系統,這是非常重要的一點。舉例來說,若應用軟體必須取得鍵盤按鍵輸入,它應產生一個事件,然後等待作業系統於事件發生時告知它,這種做法可以避免所謂的「忙碌等待」(busy waiting)- 也就是應用軟體雖處於閒置狀態,卻不將系統控制權交回給作業系統;透過這種事件驅動機制,系統功率消耗可以降低,電池的供電時間也能延長。

另外,其它節省功率消耗的做法,包括更有效率的使用記憶體,避免不必要的運算處理和資料傳輸動作;就算手機仍有充份效能可資利用,若能將某些工作轉交給網路完成,而非自己執行,也可進一步協助節省電源。

單處理器平台與雙處理器平台的比較
無線系統可能以單處理器平台或雙處理器平台為基礎,至於何者是較佳解決方案,多半是由最主要的系統應用所決定。針對PDA常見的各種應用,單顆微控制器雖可滿足其效能需求,卻不足以支援分流視訊或其它多媒體應用,此時若增加一顆DSP,由它執行數學運算量龐大的多媒體演算法,不但可以增加系統的即時效能和反應速度,還可降低功率消耗,並讓微控制器更有效率執行系統層級工作。

選擇處理器平台時,系統發展廠商必須考慮許多因素,例如原設計可能是一部非常單純的PDA裝置,但為了將來提供其它多媒體功能,設計的單核心平台和軟體架構就必須具備延展擴充能力,使它也能支援雙核心架構發展;軟體架構設計應該使得底層硬體對應用軟體工程師儘量透明,也讓工程師更容易切割他們的程式碼,然後交給最適當的處理核心執行,使系統提供更高運算效能和電源使用效率。透過設計良好的軟體架構、適當的工具和種類廣泛的現成多媒體模組,無線發展人員既可擁有雙處理器平台的強大效能和低功率優點,又能享受單處理器平台的簡單發展程序。

對應用程式設計師來說,最重要的考慮是如何將軟體最佳化,以便充份利用這套架構的優點;若採用雙核心平台,發展人員必須決定那些應用軟體應由DSP執行,那些比較適合交給微處理器,平衡良好的軟體架構既能對系統做最有效利用,又能為使用者帶來最滿意的操作經驗。

發展環境
無線系統的發展環境與個人電腦有所不同,例如嵌入式作業系統只提供較少的應用程式界面,對於只有個人電腦軟體發展經驗的許多工程師,某些作業系統的程式界面也顯得非常陌生。提供部份個人電腦應用程式界面的嵌入式作業系統雖能減少學習曲線,讓軟體移植更容易,但工程師也必須瞭解並非所有個人電腦功能都獲得行動系統的支援。

雖然行動系統的發展工具不斷進步,但相較於專為個人電腦主機設計的工具仍有所不足,因此應用發展人員有時只能依靠自己,並注意程式對整個系統的可能衝擊。他們還須面對許多個人電腦程式設計師都不熟悉的選擇:在一部個人電腦模擬器上執行應用除錯,或直接在目標嵌入式系統上執行遠端除錯。隨著無線嵌入式系統和應用持續發展,支援環境也正迅速改變,但當個人電腦發展人員必須設計無線應用時,他們仍要面對一個極具挑戰性的環境。

無線應用的發展考慮
無線多媒體和PDA型態系統的市場正在成長,因此應用發展廠商無可避免會跨出個人電腦領域,進入其它新型態的嵌入式系統。當個人電腦軟體工程師第一次開始發展無線系統應用時,有許多問題必須列入考慮,包括:
  1. 記住無線系統的資料頻寬小於有線網路。
  2. 決定有那些處理工作應交給手機執行,那些應交給網路執行。
  3. 儘量減少程式碼和資料需求,因為記憶體容量極為有限。
  4. 仔細追蹤記憶體的動態配置情形,對資源做最有效利用,避免記憶體漏失。
  5. 注意會造成堆疊增大的遞迴函式和其它程序。
  6. 為面積很小的低解析度螢幕設計單一視窗。
  7. 把控制權交回給作業系統,使系統功率消耗降低。
  8. 適當分割程式碼,讓雙處理器硬體得以發揮最大效能。
  9. 無線作業系統只能提供較少的應用程式界面。
  10. 了解嵌入式系統的支援工具比個人電腦環境少。


0 Comments:

Post a Comment

<< Home