新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 無(wú)線信息設(shè)計(jì)在通用操作系統(tǒng)EPOC

無(wú)線信息設(shè)計(jì)在通用操作系統(tǒng)EPOC

作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:從系統(tǒng)結(jié)構(gòu)、應(yīng)用程序開(kāi)發(fā)等方面詳細(xì)介紹無(wú)線信息設(shè)備操作系統(tǒng)EPOC。說(shuō)明其具有高效的內(nèi)核處理機(jī)制、高可靠性、靈活的程序開(kāi)發(fā)方法、豐富的通信協(xié)議支持。

本文引用地址:http://butianyuan.cn/article/241601.htm

關(guān)鍵詞:無(wú)線信息設(shè)備 操作系統(tǒng) 無(wú)線通信

隨著數(shù)據(jù)通信的發(fā)展和無(wú)線網(wǎng)絡(luò)的完善,無(wú)線數(shù)據(jù)通信的速度也不斷提高。因此,為們對(duì)于手機(jī)的要求已不只是具有語(yǔ)音能力,要求提供良好數(shù)據(jù)服務(wù)的呼聲越來(lái)越高。無(wú)線信息設(shè)備(wirless information device)就是在這種形式下產(chǎn)生的一種集手機(jī)和PDA功能為一體的新型手持設(shè)備。它不僅具有移動(dòng)電話的全部特點(diǎn),而且支持PDA的功能,如文件處理、電子郵件、與PC機(jī)數(shù)據(jù)同步、記事本以及多媒體等。這類(lèi)設(shè)備型號(hào)多樣,更新迅速,既能接入公用無(wú)線通信網(wǎng),又可與其他設(shè)備互聯(lián),滿足了各層次用戶的不同需要,是未來(lái)幾年無(wú)線信息產(chǎn)品的發(fā)展趨勢(shì)。

無(wú)線信息設(shè)備的內(nèi)存、電池和CPU計(jì)算能力都比較有限,因此,對(duì)于所采用的操作系統(tǒng)具有特殊的要求:操作系統(tǒng)占用內(nèi)存要盡量少,并且支持高效的多任務(wù)及進(jìn)程間通信機(jī)制;具有有效的電源管理功能,適合利用電池供電;采用面向?qū)ο蟮脑O(shè)計(jì)方法,軟件程序代碼具有良好的可重用性;提供友好的圖形用戶界面;確保用戶數(shù)據(jù)安全可靠地存儲(chǔ);支持多種標(biāo)準(zhǔn)通信協(xié)議,以便接入國(guó)際互聯(lián)網(wǎng)和與其他設(shè)備互連;最好能提供開(kāi)放的應(yīng)用程序平臺(tái),便于第三方軟件開(kāi)發(fā)商提供多樣的應(yīng)用程序。

為開(kāi)發(fā)一種適用于無(wú)線信息設(shè)備的通用操作系統(tǒng),諾基亞、愛(ài)立信、摩托羅拉和Psion公司在1998年成立了一個(gè)聯(lián)合企業(yè)Symbian,而后又有松下、西門(mén)子、三洋等公司加入。EPOC是1999年由Symbian宣布的32位操作系統(tǒng),并在其后得到不斷完善?,F(xiàn)在,許多商用無(wú)線信息設(shè)備都采用EPOC作為操作系統(tǒng),如諾基亞的9210以及愛(ài)立信的R380、MC218等。

一、EPOC操作系統(tǒng)簡(jiǎn)介

EPOC采用基于靜態(tài)優(yōu)先級(jí)的搶先式多任務(wù)機(jī)制并且配合時(shí)間片輪轉(zhuǎn),構(gòu)成簡(jiǎn)捷、高效的核心,支持強(qiáng)大的通信及多媒體功能。Symbian公司在提供EPOC操作系統(tǒng)的同時(shí), 針對(duì)無(wú)線信息設(shè)備的不同市場(chǎng)需求還推出兩類(lèi)設(shè)備參考模型(device family reference design)[1];Communicator和Smartphone。前者是以數(shù)據(jù)處理為主,以傳統(tǒng)話務(wù)功能為輔;后者則恰好相反。Communicator包括Crystal和Quartz兩種模型,Smartphone只有一種模型Pearl,如圖1所示。由于每種模型都包括了基本的硬件和常用的應(yīng)用程序軟件,因此,無(wú)線信息設(shè)備廠商可以在此基礎(chǔ)上集中精力開(kāi)發(fā)附加的特有軟硬件,從而縮短產(chǎn)品開(kāi)發(fā)周期,加快成品推向市場(chǎng)的速度。

EPOC操作系統(tǒng)的主要特點(diǎn):

*高可靠性。具有高效電源管理機(jī),而且即使在電池耗盡的情況下,也能確保不丟失任何用戶數(shù)據(jù)。由于采用特殊的編程規(guī)范,可以有效地管理系統(tǒng)內(nèi)存資源的分配和回收,不會(huì)壬內(nèi)存的泄漏。因此,以EPOC為操作系統(tǒng)的設(shè)備可連續(xù)運(yùn)行多年而不需重新啟動(dòng),這也是對(duì)無(wú)線信息設(shè)備的基本要求。

*采用面向?qū)ο蟮脑O(shè)計(jì)和編程,程序代碼具有很好的可重用性。EPOC提供各種常用的32位應(yīng)用程序接口函數(shù),而且具有圖形用戶界面編程框架,可以方便地創(chuàng)建用戶應(yīng)用程序。系統(tǒng)支持Unicode,容易進(jìn)行本地化。

*提供多種通信協(xié)議。支持標(biāo)準(zhǔn)的國(guó)際互聯(lián)網(wǎng)通信協(xié)議(TCP/IP、PPP、Telnel、HTTP),電子郵件協(xié)議(POP3、SMTP、IMAP4);提供GPRS、WAP等標(biāo)準(zhǔn)協(xié)議棧;具有藍(lán)牙協(xié)議模塊,增強(qiáng)了與其他設(shè)備的互連性;可以通過(guò)電纜或紅外與PC機(jī)相連,進(jìn)行數(shù)據(jù)同步和備份。

*參考模型的硬件配置充分考慮了無(wú)線信息設(shè)備的未來(lái)需求。采用ARM系列RISC處理器,具有較強(qiáng)的處理能力。利用ROM進(jìn)行永久程序存儲(chǔ),并可通過(guò)外加快閃存儲(chǔ)卡來(lái)擴(kuò)展系統(tǒng)存儲(chǔ)量。支持高分辨率彩色顯示、觸摸屏和筆輸入,具有多媒體功能。

二、EPOC系統(tǒng)結(jié)構(gòu)

EPOC操作系統(tǒng)采用模塊化分層結(jié)構(gòu),其系統(tǒng)由許多模塊組成。不同模塊完成不同的功能,大的模塊又分為幾個(gè)組件。這種模塊在保證整體結(jié)構(gòu)緊湊的基礎(chǔ)上,減弱了不同軟件模塊之間的依賴(lài)性,使得系統(tǒng)易于擴(kuò)充。

EPOC系統(tǒng)有4個(gè)最主要的組成部分,如圖2所示。

1.內(nèi)核

內(nèi)核是整個(gè)操作系統(tǒng)的核心部分,在處理器特權(quán)級(jí)執(zhí)行,其他模塊運(yùn)行在用戶級(jí)。內(nèi)核還包括硬件設(shè)備驅(qū)動(dòng),負(fù)責(zé)最基本的操作系統(tǒng)功能,包括電源管理、內(nèi)存管理、進(jìn)程管理和必需的文件管理。內(nèi)核通過(guò)底層函數(shù)庫(kù)為執(zhí)行在用戶級(jí)的應(yīng)用程序提供服務(wù)。由于采用ARM系列RISC處理器,EPOC利用二級(jí)頁(yè)表機(jī)制進(jìn)行尋址,為每個(gè)應(yīng)用程序提供虛擬地址空間,以加快上下文切換速度。搶先式多任務(wù)機(jī)制允許多個(gè)自己的線程,同一進(jìn)程中的多個(gè)線程能共享內(nèi)存資源。系統(tǒng)調(diào)試時(shí)高優(yōu)先級(jí)進(jìn)程比優(yōu)先級(jí)進(jìn)程先得到CPU資源,相同優(yōu)先級(jí)的進(jìn)程按時(shí)間片輪轉(zhuǎn)法分享CPU資源。

2.應(yīng)用程序

應(yīng)用程序可以直接和用戶進(jìn)行交互。每個(gè)應(yīng)用程序是單獨(dú)的進(jìn)程,擁有自己的虛擬地址空間。

3.管理程序

EPOC系統(tǒng)采用客戶/服務(wù)器形式來(lái)簡(jiǎn)化并獲得高效的進(jìn)程間通信。管理程序是不直接與用戶交互的程序。它管理一個(gè)或多個(gè)系統(tǒng)資源,執(zhí)行服務(wù)器的功能,通過(guò)API函數(shù)為客戶提供服務(wù)。其客戶可以是應(yīng)用程序或其他的管理器。

文件管理器、窗口管理器和通信管理器是EPOC系統(tǒng)中最主要的管理程序。文件管理器負(fù)責(zé)文件處理,窗口管理器是EPOC高效率事件處理機(jī)制的核心,通信管理器提供了對(duì)多種通信協(xié)議的支持。在EPOC系統(tǒng)中,每個(gè)應(yīng)用程序和管理程序都是獨(dú)立的事件處理線程。窗口管理器負(fù)責(zé)提供用戶、用戶程序和操作系統(tǒng)內(nèi)核間的事件傳遞。按鍵、筆等輸入事件先傳給窗口管理器,由它將事件發(fā)送給應(yīng)用程序。應(yīng)用程序完成相應(yīng)的事件處理后,通知窗口管理器,并由窗口管理器負(fù)責(zé)處理應(yīng)用程序的屏幕重畫(huà)請(qǐng)求。事件處理過(guò)程如圖3所示。通信管理器分為串行通信管理器、管道管理器和電話應(yīng)用管理器三個(gè)部分。串行通信器提供串行通信的支持;管道管理器利用通用的管理機(jī)制支持TCP/IP、短信息數(shù)據(jù)包、紅外數(shù)據(jù)接口;電話應(yīng)用管理器提供與GSM電話及調(diào)制解調(diào)器相關(guān)的接口功能。

4.引擎

引擎是應(yīng)用程序的一部分,負(fù)責(zé)應(yīng)用程序數(shù)據(jù)的后臺(tái)處理,而不與用戶直接交互。EPOC操作系統(tǒng)中的程序均可分為應(yīng)用程序和引擎兩部分。引擎可以是單獨(dú)的源文件模塊、獨(dú)立的動(dòng)態(tài)鏈接庫(kù)(DLL)或多個(gè)動(dòng)態(tài)鏈接庫(kù)。操作系統(tǒng)提供了一些常用的引擎,用戶可以針對(duì)特殊的需要開(kāi)發(fā)專(zhuān)用引擎。

三、EPOC應(yīng)用程序開(kāi)發(fā)設(shè)計(jì)

EPOC支持多種編程語(yǔ)言,為開(kāi)發(fā)者提供了充分的選擇空間,其中C++和Java應(yīng)用得最為廣泛。EPOC開(kāi)發(fā)工具套件中提供了集成有EPOC內(nèi)核的模擬器,可運(yùn)行在Win9x和WinNT上,并通過(guò)調(diào)用Windows系統(tǒng)的設(shè)備驅(qū)動(dòng)程序,對(duì)EPOC的目標(biāo)機(jī)硬件進(jìn)行仿真,實(shí)現(xiàn)EPOC程序的模擬運(yùn)行。EPOC應(yīng)用程序開(kāi)發(fā)的大致過(guò)程如圖4所示[2]。先利用Visual C++編譯器將EPOC源程序編譯成x86的可執(zhí)行代碼,采用模擬器在PC機(jī)上進(jìn)行調(diào)試;而后經(jīng)GNUC++把源程序重新編譯成目標(biāo)機(jī)的可執(zhí)行代碼,并拷貝到EPOC設(shè)備上,進(jìn)行實(shí)現(xiàn)測(cè)試。模擬器的采用使得在目標(biāo)機(jī)硬件不具備時(shí)就可進(jìn)行高層軟件的開(kāi)發(fā),因此加快了程序開(kāi)發(fā)的進(jìn)程,節(jié)省了開(kāi)發(fā)時(shí)間。應(yīng)用程序在模擬調(diào)試后,一般都能在目標(biāo)機(jī)上正常運(yùn)行;但是模擬器不能模擬真正目標(biāo)機(jī)的硬件時(shí)序,因此,不適合用模擬方法開(kāi)發(fā)需要嚴(yán)格時(shí)序邏輯的程序,也不支持多個(gè)任務(wù)的同時(shí)調(diào)試。

由于EPOC操作系統(tǒng)本身是由C++編寫(xiě)的,因此,用C++去開(kāi)發(fā)應(yīng)用可以獲得操作系統(tǒng)最充分的支持,使應(yīng)用軟件更加靈活。EPOC C++編程分為兩種;E32編程和Uikon編程。前者采用較為傳統(tǒng)的方法進(jìn)行編程,通過(guò)調(diào)用系統(tǒng)API函數(shù)來(lái)完成各種功能,能靈活地實(shí)現(xiàn)各種底層操作。因此,系統(tǒng)中的硬件驅(qū)動(dòng)程序以及后臺(tái)應(yīng)用程序一般采用此類(lèi)編程。Uikon是一套完整的應(yīng)用程序框架,主要用于開(kāi)基于圖形用戶界面的應(yīng)用程序。該框架一般由應(yīng)用程序(application)、應(yīng)用程序界面(AppUI)、文檔(document)、視圖(view)四個(gè)類(lèi)構(gòu)成。EPOC具有完善的類(lèi)繼承體體系,提供了豐富的類(lèi)庫(kù),可以方便快捷地創(chuàng)建應(yīng)用程序。

鑒于無(wú)線信息設(shè)備的特殊性,EPOC編程具有一些獨(dú)到之處,形成了自己的規(guī)范。

首先,提供了與內(nèi)存分配相關(guān)的出錯(cuò)處理機(jī)制。如果應(yīng)用程序有一系列內(nèi)存申請(qǐng)的連續(xù)操作,其中任何一些出現(xiàn)內(nèi)存分配失敗,都需要在出錯(cuò)處理程序中釋放所有在這些之前已成功分配的內(nèi)存,以確保系統(tǒng)內(nèi)存的正確回收。因此,編程為員在開(kāi)發(fā)出錯(cuò)處理程序時(shí),要充分考慮應(yīng)用程序中的內(nèi)存使用狀況,防止內(nèi)存泄漏的發(fā)生。為了更有效地管理內(nèi)存的分配和回收,簡(jiǎn)化編程工作,EPOC提供了Eleave標(biāo)識(shí)和Cleanup棧。從堆中分配指針的,以Eleave作為指針標(biāo)識(shí),指針?lè)峙涑晒髮⑵鋲喝隒leanup棧。如果此指針指向的對(duì)象在程序后續(xù)處理中出現(xiàn)申請(qǐng)內(nèi)存的失敗,系統(tǒng)會(huì)自動(dòng)釋放棧中指針指向的所有內(nèi)存,并在程序調(diào)用PopAndDestroy函數(shù)時(shí)刪除此指針,保證內(nèi)存的有效回收。

其次,類(lèi)的兩步構(gòu)造。標(biāo)準(zhǔn)的C++構(gòu)造函數(shù)是在類(lèi)的對(duì)象實(shí)例創(chuàng)建時(shí)自動(dòng)調(diào)用的,因此,不可靠將其中申請(qǐng)的指針入入Cleanup棧中。如果類(lèi)創(chuàng)建失敗,在構(gòu)造函數(shù)中分配的內(nèi)存也就無(wú)法被操作系統(tǒng)回收。由于無(wú)線信息設(shè)備是常年連續(xù)運(yùn)行而不重新啟動(dòng)的,因此內(nèi)存的泄漏會(huì)不斷積累,最終導(dǎo)致嚴(yán)重的后果。為解決這一問(wèn)題,EPOC提出類(lèi)的創(chuàng)建分兩步進(jìn)行:第一步是按照C++本身的特性自動(dòng)運(yùn)行構(gòu)造函數(shù),但是在構(gòu)造函數(shù)中,不進(jìn)行從堆中申請(qǐng)內(nèi)存的操作;第二步是調(diào)用含有內(nèi)存請(qǐng)求的類(lèi)創(chuàng)建函數(shù)ConstructL,在ConstructL中采用EPOC的內(nèi)存分配出錯(cuò)處理機(jī)制。這樣的設(shè)計(jì)可以增強(qiáng)系統(tǒng)的穩(wěn)定性。

最后,采用資源定義文件。EPOC將系統(tǒng)及應(yīng)用程序菜單、按鈕、對(duì)話框等的定義放在資源定義文件中。這樣做有兩個(gè)好處:第一,開(kāi)發(fā)過(guò)程中如果只改變菜單等的顯示字符串,而不修改資源文件的結(jié)構(gòu),系統(tǒng)無(wú)需進(jìn)行重新編譯,若省時(shí)間;第二,有利于本地化。EPOC支持Unicode,在進(jìn)行本地化時(shí)無(wú)需在源程序中搜索并修改顯示字符串,而只需翻譯資源定義文件即可。這樣不僅簡(jiǎn)化了本地化的工作量,而且可以避免修改源程序時(shí)可以造成的其他部分代碼的無(wú)意破壞。

結(jié)束語(yǔ)

以上從系統(tǒng)構(gòu)成及應(yīng)用程序設(shè)計(jì)開(kāi)發(fā)角度介紹了EPOC操作系統(tǒng),說(shuō)明它具有高效的內(nèi)核處理機(jī)制、高度的可靠性、靈活的程序開(kāi)發(fā)方法、豐富的通信協(xié)議支持,充分滿足了無(wú)線信號(hào)設(shè)備的特定要求。隨著無(wú)線通信從第2代向2.5代的過(guò)渡,以及第3代移動(dòng)通信的最終實(shí)現(xiàn),無(wú)線信息設(shè)備必將擁有廣闊的市場(chǎng)前景。EPOC作為為其量身定制的操作系統(tǒng)也一定會(huì)得到廣泛的應(yīng)用。

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉