<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 無(wú)線(xiàn)信息設計在通用操作系統EPOC的應用

無(wú)線(xiàn)信息設計在通用操作系統EPOC的應用

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

設備(wireless informatiON device)是集PDA與傳統手機與一體的新型手持設備,隨著(zhù)通信網(wǎng)絡(luò )的發(fā)展必將成為未來(lái)幾年手持設備的發(fā)展趨勢。這種設備與其它嵌入式設備有所不同,它面對的是廣大消費者,具有型號多、功耗低、重量輕、體積小和移動(dòng)性強的特性;而它的磁盤(pán)、內存、電池和CPU處理能力又都比較有限。因此,對于所采用的具有特殊的要求。

本文引用地址:http://dyxdggzs.com/article/149850.htm

設備的占用內存要盡量少,并且支持高效的多任務(wù)及進(jìn)程間通信機制;應具有有效的電源管理功能,適合利用電池供電;要連續運行多年而無(wú)需重新啟動(dòng);確保用戶(hù)數據安全可靠的存儲;提供友好的圖形用戶(hù)界面;采用面向對象的方法,軟件程序代碼具有良好的可重用性;支持多種標準通信協(xié)議,以便接入國際互聯(lián)網(wǎng)和與其它設備互連;提供開(kāi)放的程序平臺,便于第三方軟件開(kāi)發(fā)商提供多樣的程序。

無(wú)線(xiàn)設備對的諸多要求中,高可靠性占了首要地位;而實(shí)現高可靠性的關(guān)鍵是其操作系統要具有高效的內存操作及管理機制,提供的編程機制要能夠充分管理有限的內存空間,不造成任何的內存分配與回收錯誤。否則,極微小的內存泄漏故障經(jīng)過(guò)長(cháng)時(shí)間的積累都將導致災難性的后果。

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

一、操作系統簡(jiǎn)介

EPOC是一套可攜式的實(shí)時(shí)操作系統,韌體儲存在ROM中。最適用EPOC的中央處理器是ARM3,而在x86, ARM4 和STrongARM運作,只能執行源代碼,部份程序無(wú)法執行。目前尚無(wú)法支持ARM's Thumb 和Motorola M*core等先進(jìn)的可攜式中央處理器,但Symbian已開(kāi)始進(jìn)行這方面的研究開(kāi)發(fā)了。EPOC仿真窗口操作系統的環(huán)境,EPOC是一套32位的操作系統,主要包含兩個(gè)組件:E32和F32,E32負責執行核心指令和服務(wù)器的功能,核心程序API也提供驅動(dòng)硬件的功能。F32是提供檔案服務(wù)、撰寫(xiě)新程序的API,和測試ROM的指令shell.

EPOC的操作接口和窗口操作系統非常類(lèi)似,以可視化的操作方式為主,點(diǎn)選某一工作群的icon之后,會(huì )跳出該群組的窗口,窗口內有該群組的應用程序的icon可供用戶(hù)點(diǎn)選。而為了增加使用者的工作效率,使用者也可以將常用的程序自定義在Extras Bar,當常用的程序層級過(guò)多時(shí),Extras Bar可以很快的找到該應用程序。Third Party的程序也可以加入到Extras Bar之中。EPOC也提供了控制面板來(lái)調節系統設定,包括時(shí)間/日期、密碼、聲音、屏幕、電力、鍵盤(pán)、打印機調制解調器、撥接和熱鍵設定等功能。

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

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

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

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

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

二、EPOC系統結構

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

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

1.內核

內核是操作系統最基本的部分。它是為眾多應用程序提供對計算機硬件的安全訪(fǎng)問(wèn)的一部分軟件,這種訪(fǎng)問(wèn)是有限的,并且內核決定一個(gè)程序在什么時(shí)候對某部分硬件操作多長(cháng)時(shí)間。內核的分類(lèi)可分為單內核和雙內核以及微內核。嚴格地說(shuō),內核并不是計算機系統中必要的組成部分。內核還包括硬件設備驅動(dòng),負責最基本的操作系統功能,包括電源管理、內存管理、進(jìn)程管理和必需的文件管理。內核通過(guò)底層函數庫為執行在用戶(hù)級的應用程序提供服務(wù)。由于采用ARM系列RISC處理器,EPOC利用二級頁(yè)表機制進(jìn)行尋址,為每個(gè)應用程序提供虛擬地址空間,以加快上下文切換速度。搶先式多任務(wù)機制允許多個(gè)自己的線(xiàn)程,同一進(jìn)程中的多個(gè)線(xiàn)程能共享內存資源。系統調試時(shí)高優(yōu)先級進(jìn)程比優(yōu)先級進(jìn)程先得到CPU資源,相同優(yōu)先級的進(jìn)程按時(shí)間片輪轉法分享CPU資源。

2.應用程序

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

3.管理程序

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

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

4.引擎

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

三、EPOC應用程序開(kāi)發(fā)

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

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

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

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

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

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

結束語(yǔ)

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

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


評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>