IP2000網(wǎng)絡(luò)終端系統(tǒng)方案概要設(shè)計(jì)_第1頁
IP2000網(wǎng)絡(luò)終端系統(tǒng)方案概要設(shè)計(jì)_第2頁
IP2000網(wǎng)絡(luò)終端系統(tǒng)方案概要設(shè)計(jì)_第3頁
IP2000網(wǎng)絡(luò)終端系統(tǒng)方案概要設(shè)計(jì)_第4頁
IP2000網(wǎng)絡(luò)終端系統(tǒng)方案概要設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、IP2000是我們公司根據(jù)市場需求將開發(fā)的第二代網(wǎng)絡(luò)終端,要求具有友好的類WINDOWS風(fēng)格的人機(jī)交互界面,在滿足傳統(tǒng)終端全部功能基礎(chǔ)上,實(shí)現(xiàn)以太網(wǎng)聯(lián)機(jī)功能(實(shí)現(xiàn)TELNET遠(yuǎn)程登錄協(xié)議)和支持多任務(wù)的一種更新?lián)Q代產(chǎn)品。功能需求簡述如下:l 提供類WINDOWS風(fēng)格的用戶界面,采用桌面圖標(biāo)的方式啟動(dòng)任務(wù)l 實(shí)現(xiàn)TELNET遠(yuǎn)程登錄協(xié)議l 支持最多達(dá)8個(gè)任務(wù)同時(shí)運(yùn)行l(wèi) 支持PS/2鼠標(biāo)l 支持網(wǎng)絡(luò)版本更新l 支持網(wǎng)關(guān)功能l 支持本地和網(wǎng)絡(luò)打印機(jī)在此需求前提下,我們決定采用多任務(wù)嵌入式操作系統(tǒng)(EOS)+嵌入式GUI+終端仿真的結(jié)構(gòu)來實(shí)現(xiàn)需求,系統(tǒng)結(jié)構(gòu)框圖描述如下: 一、結(jié)構(gòu)設(shè)計(jì)在此系統(tǒng)框圖的基礎(chǔ)

2、上,我們分別對(duì)各層次進(jìn)行結(jié)構(gòu)設(shè)計(jì)分析:1、EOS設(shè)計(jì)目前存在的嵌入式系統(tǒng)多不勝數(shù),流行的有WinCE、PalmOS、Vxwork、pSOS、Neculeus等多種系統(tǒng)。從目前嵌入式系統(tǒng)使用最廣泛的信息家電行業(yè)和通訊行業(yè)分析,PalmOS和WinCE、Vxwork是當(dāng)前應(yīng)用最廣泛的三種:l Windows CE:Microsoft Windows CE是一個(gè)簡潔的,高效率的多平臺(tái)操作系統(tǒng)。它不是削減的Windows95版本,而是從整體上為有限資源的平臺(tái)設(shè)計(jì)的多線程,完整優(yōu)先權(quán),多任務(wù)的操作系統(tǒng)。它的模塊化設(shè)計(jì)允許它對(duì)于從掌上電腦到專用的工業(yè)控制器的用戶電子設(shè)備進(jìn)行定制,但WinCE是非開放性操作

3、系統(tǒng),使第三方很難實(shí)現(xiàn)產(chǎn)品的定制,嵌入式操作系統(tǒng)追求高效、節(jié)能,而WinCE在這方面是笨拙的,它占用過多的內(nèi)存,應(yīng)用程序龐大,而且入門費(fèi)和許可費(fèi)較高,使得整個(gè)產(chǎn)品的成本急劇上升。所以WinCE多用于從高檔的產(chǎn)品。l VxWorks:VxWorks所在的公司W(wǎng)indRiver兼并了pSOS的ISI公司,使得該公司現(xiàn)在有兩大RTOS系統(tǒng)。VxWorks是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛,市場占有率最高的系統(tǒng)。它支持多種處理器,如x86,i960,Sun Sparc,Motorola MC68xxx,MIPS RX000,POWER PC等等。使用的是和UNIX不兼容的環(huán)境,大多數(shù)的VxWorks A

4、PI是專有的。采用GNU的編譯和調(diào)試器。l pSOS:ISI公司已經(jīng)被WinRiver公司兼并,現(xiàn)在是屬于WindRiver公司的產(chǎn)品。這個(gè)系統(tǒng)是一個(gè)模塊化,高性能的實(shí)時(shí)操作系統(tǒng),專為嵌入式微處理器設(shè)計(jì),提供一個(gè)完全多任務(wù)環(huán)境,在定制的或是商業(yè)化的硬件上提供高性能和搞可靠性。可以讓開發(fā)者將操作系統(tǒng)的功能和內(nèi)存需求定制成每一個(gè)應(yīng)用所需的系統(tǒng)。開發(fā)者可以利用它來實(shí)現(xiàn)從簡單的單個(gè)獨(dú)立設(shè)備到復(fù)雜的、網(wǎng)絡(luò)化的多處理器系統(tǒng)。l QNX:QNX是一個(gè)實(shí)時(shí)的,可擴(kuò)充的操作系統(tǒng),它遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具)、部分遵循POSIX.1b(實(shí)時(shí)擴(kuò)展)。它提供了一個(gè)很小的微內(nèi)

5、核以及一些可選的配合進(jìn)程。其內(nèi)核僅提供4種服務(wù):進(jìn)程調(diào)度、進(jìn)程間通信、底層網(wǎng)絡(luò)通信和中斷處理,其進(jìn)程在獨(dú)立的地址空間運(yùn)行。所有其它OS服務(wù),都實(shí)現(xiàn)為協(xié)作的用戶進(jìn)程,因此QNX內(nèi)核非常小巧(QNX4.x大約為12Kb)而且運(yùn)行速度極快。這個(gè)靈活的結(jié)構(gòu)可以使用戶根據(jù)實(shí)際的需求將系統(tǒng)配置成微小的嵌入式操作系統(tǒng)或是包括幾百個(gè)處理器的超級(jí)虛擬機(jī)操作系統(tǒng)。l Palm OS:3Com公司的Palm OS在PDA市場上占有很大的市場份額,它有開放的操作系統(tǒng)應(yīng)用程序接口(API),開發(fā)商可以根據(jù)需要自行開發(fā)所需要的應(yīng)用程序。目前已經(jīng)有總共3500多個(gè)應(yīng)用程序可以運(yùn)行在Palm Pilot上,其中大部分應(yīng)用程序

6、均為其他廠商和個(gè)人所開發(fā),使得Palm Pilot的功能得以不斷增多。這些軟件包括計(jì)算器、各種游戲、電子寵物、地理信息等等。在開發(fā)環(huán)境方面,可以在Windows 95/98,Windows NT以及Macintosh下安裝Palm Pilot Desktop;PlamPilot可以與流行的PC平臺(tái)上的應(yīng)用程序如Word,Excel等進(jìn)行數(shù)據(jù)交換。l OS-9:Microwave的OS-9是為微處理器的關(guān)鍵實(shí)時(shí)任務(wù)而設(shè)計(jì)的操作系統(tǒng),廣泛應(yīng)用于高科技產(chǎn)品中,包括消費(fèi)電子產(chǎn)品,工業(yè)自動(dòng)化,無線通訊產(chǎn)品,醫(yī)療儀器,數(shù)字電視/多媒體設(shè)備中。它提供了很好的安全性和容錯(cuò)性。與其他的嵌入式系統(tǒng)相比,它的靈活性

7、和可升級(jí)性非常突出。l LynxOS:Lynx Real-time Systems的LynxOS是一個(gè)分布式、嵌入式、可規(guī)模擴(kuò)展的實(shí)時(shí)操作系統(tǒng),它遵循POSIX.1a、POSIX.1b和POSIX.1c標(biāo)準(zhǔn)。LynxOS支持線程概念,提供256個(gè)全局用戶線程優(yōu)先級(jí);提供一些傳統(tǒng)的,非實(shí)時(shí)系統(tǒng)的服務(wù)特征;包括基于調(diào)用需求的虛擬內(nèi)存,一個(gè)基于Motif的用戶圖形界面,與工業(yè)標(biāo)準(zhǔn)兼容的網(wǎng)絡(luò)系統(tǒng)以及應(yīng)用開發(fā)工具。l Linux:Linux在嵌入式領(lǐng)域獲得了飛速發(fā)展,目前正在開發(fā)的嵌入式系統(tǒng)中,49%的項(xiàng)目選擇Linux作為嵌入式操作系統(tǒng)。Linux之所以能在嵌入式系統(tǒng)市場上取得如此迅速的發(fā)展,與它自身

8、的優(yōu)良特性有著不可分割的關(guān)系:免費(fèi)、開放源碼,豐富的軟件資源;功能強(qiáng)大的內(nèi)核,性能高效、穩(wěn)定,多任務(wù);支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、ALPHA、SPARC等;完善的網(wǎng)絡(luò)通信、圖形、文件管理機(jī)制;支持大量的周邊硬件設(shè)備,驅(qū)動(dòng)豐富;大小、功能都可定制;良好的開發(fā)環(huán)境,不斷發(fā)展的開發(fā)工具集;廣泛的軟件開發(fā)者的支持;價(jià)格低廉。從我們IP2000網(wǎng)絡(luò)終端的需求和目前網(wǎng)絡(luò)終端的市場來分析,目前我們公司已有的產(chǎn)品IP1000采用Linux+Microwin這種方式已基本實(shí)現(xiàn)網(wǎng)絡(luò)終端的需求,只是在界面的美觀程度和系統(tǒng)速度上比同類型的較為突出的實(shí)達(dá)netterm 860終端有所不足,但從系統(tǒng)的角

9、度和開發(fā)進(jìn)度以及成本的角度考慮,重新引進(jìn)一種新的嵌入式操作系統(tǒng),以上介紹的幾種EOS引進(jìn)的門檻成本太高,且需要較長時(shí)間消化和熟悉,移植到我們的硬件平臺(tái)也需要長時(shí)間的過程,綜合考慮,我們還是決定在博利思提供的Linux內(nèi)核的基礎(chǔ)上構(gòu)筑我們的IP2000的OS,并準(zhǔn)備對(duì)內(nèi)核作如下改進(jìn):l 優(yōu)化framebuffer代碼,并在原有256色的基礎(chǔ)上增加16色支持l 修改ttyS0/1的設(shè)備驅(qū)動(dòng),解決目前IP1000存在的所有由于串口造成的問題2、GUI設(shè)計(jì) 通過對(duì)目前幾種基于Linux的嵌入式GUI的詳細(xì)分析,較好的嵌入式GUI通常結(jié)合面向?qū)ο蠓椒ú捎枚鄬营?dú)立設(shè)計(jì),具有以下結(jié)構(gòu):l 設(shè)備相關(guān)層(dri

10、ver) 在這一層的功能應(yīng)該是將系統(tǒng)中與設(shè)備和操作系統(tǒng)平臺(tái)的具體細(xì)節(jié)屏蔽起來。它利用實(shí)際的設(shè)備驅(qū)動(dòng)程序接口或者OS系統(tǒng)調(diào)用來與硬件設(shè)備交互,這些硬件設(shè)備主要包括screen、mouse和keyboard等。我們使用設(shè)備對(duì)象(device object)的概念來描述一類設(shè)備,每一個(gè)對(duì)象描述了一類實(shí)際設(shè)備的屬性和方法。比如,screen設(shè)備對(duì)象就描述了screen設(shè)備的各種屬性(屏幕尺寸、分辨率、像素深度、像素格式、邏輯顯存首地址等等)和基本方法(打開和關(guān)閉顯示器、設(shè)置調(diào)色板、返回屏幕屬性、讀寫像素點(diǎn)等等)。對(duì)于同一類設(shè)備在不同驅(qū)動(dòng)或者平臺(tái)上的具體情況則以設(shè)備對(duì)象實(shí)例來描述,比如screen類型的

11、設(shè)備,我們可能讓它工作在Linux上,通過framebuffer 或者SVGALib驅(qū)動(dòng)來操作它。他們的對(duì)象類相同,但是類的屬性和方法的實(shí)現(xiàn)不一樣。中間層看到的只是該類設(shè)備的可選的對(duì)象實(shí)例,不用關(guān)心底層是如何操作的(也就是對(duì)象的方法是怎樣實(shí)現(xiàn)的)。最底層實(shí)際上是以設(shè)備對(duì)象的方式為中間層提供了一個(gè)抽象的設(shè)備驅(qū)動(dòng)界面。為了移植更容易,最底層應(yīng)盡量簡潔,只實(shí)現(xiàn)最基本的設(shè)備功能函數(shù)??梢钥吹剑?dāng)系統(tǒng)要移植到另外的平臺(tái)上時(shí),我們只要按照各類設(shè)備對(duì)象的定義實(shí)現(xiàn)相對(duì)較少的函數(shù)就能建立新的設(shè)備對(duì)象實(shí)例并讓中間層選擇他們就可以了。l 設(shè)備無關(guān)層(engine)這一層的功能是提供一個(gè)可以為各種應(yīng)用層共享的與設(shè)備無

12、關(guān)的核心圖形引擎,其中的主要工作就是實(shí)現(xiàn)各種圖形函數(shù)和輸入設(shè)備的功能函數(shù)。對(duì)于中間層,它向下看到的是各類設(shè)備對(duì)象,向上則是要提供一個(gè)抽象的核心圖形界面,使得上面的應(yīng)用層對(duì)它所使用的到底是什么設(shè)備對(duì)象不用去理會(huì)。很顯然,這一層根據(jù)不同的設(shè)備和平臺(tái)選擇相應(yīng)的設(shè)備對(duì)象實(shí)例來實(shí)現(xiàn)核心圖形引擎。 由于每類設(shè)備的各個(gè)實(shí)例擁有同樣的對(duì)象類型定義,所以中間層基于設(shè)備對(duì)象所實(shí)現(xiàn)的功能是不會(huì)因?yàn)樵O(shè)備和平臺(tái)的更改而受影響的。同時(shí),中間層把消息驅(qū)動(dòng)機(jī)制、窗口管理機(jī)制交給應(yīng)用層去完成,因此,對(duì)于各類型的應(yīng)用層(Win32或者是X-Windows),中間層完成的功能都是通用的。l 應(yīng)用層(API)這一層的功能是按照應(yīng)用的

13、具體要求為應(yīng)用程序提供適當(dāng)?shù)膽?yīng)用層用戶界面。當(dāng)應(yīng)用程序不需要窗口系統(tǒng)的時(shí)候,用戶自定義圖形界面將十分簡單,甚至可以什么都不做而直接使用中間層提供的抽象核心界面。如果用戶需要完善的多任務(wù)窗口系統(tǒng),比如是類Win32的,可以使用抽象核心界面來實(shí)現(xiàn)其應(yīng)用程序編程接口(API)以及窗口和消息機(jī)制等。嵌入式GUI的體系結(jié)構(gòu)的抽象參考模型如下:目前采用此套結(jié)構(gòu)的比較成熟的嵌入式GUI有Microwindow和MiniGUI兩種GUI平臺(tái), Microwindow平臺(tái)提出較早,并且經(jīng)過多年的實(shí)踐,已經(jīng)比較成熟,目前國內(nèi)的眾多嵌入式系統(tǒng)廠商包括聯(lián)想、中軟、紅旗、桑夏科技、華恒等都采用Micorwindow作為

14、基礎(chǔ)開發(fā)自己嵌入式GUI,但因?yàn)樵擁?xiàng)目缺少強(qiáng)有力的核心代碼維護(hù),代碼質(zhì)量參差不齊,因此在另外一種GUI Qt/Embedded發(fā)布以來,它就長時(shí)間停留在了0.89Pre7版本,近幾年來發(fā)展緩慢; MiniGUI項(xiàng)目起源于清華大學(xué)一個(gè)采用嵌入式Linux系統(tǒng)的工業(yè)控制系統(tǒng)項(xiàng)目,開發(fā)之初借鑒了Microwindow的一些經(jīng)驗(yàn),但后來在發(fā)展速度上超過了Microwindow(MiniGUI已是1.2.0版本,但Microwindow至今還是0.89pre版本),由于兩者都是自由軟件項(xiàng)目,開放源代碼和所有文檔,可作為我們IP2000網(wǎng)絡(luò)終端的GUI設(shè)計(jì)的參考選擇,我們可以在其中一種的基礎(chǔ)上構(gòu)筑我們自己

15、的GUI平臺(tái)。由于IP2000網(wǎng)絡(luò)終端有多任務(wù)功能需求,因此我們的GUI設(shè)計(jì)必須能夠滿足適應(yīng)多任務(wù)的需求,通過對(duì)已有的兩種GUI進(jìn)行預(yù)研,我們發(fā)現(xiàn),GUI的多任務(wù)設(shè)計(jì)通常有兩種方法:l 采用C/S結(jié)構(gòu) C/S結(jié)構(gòu)是天然的多任務(wù),在Sever端專門負(fù)責(zé)監(jiān)控外部事件和隨之的消息傳遞和分發(fā),Client完成消息的處理,各個(gè)Client之間互不干擾和影響。采用這種方法實(shí)現(xiàn)多任務(wù)支持的有Microwindows的Nano-x方案和MiniGUI,但兩種GUI實(shí)現(xiàn)的機(jī)制有很大差別,MicroWindows為了追求和X Window的兼容,采用了傳統(tǒng)的基于Unix套接字通訊方式的C/S系統(tǒng)結(jié)構(gòu),這樣大量的數(shù)

16、據(jù)在客戶/內(nèi)核/服務(wù)器之間傳遞,增加了系統(tǒng)負(fù)荷,占用了更多系統(tǒng)資源,降低了系統(tǒng)的圖形效率,并不適應(yīng)于CPU速度較慢和系統(tǒng)資源有限的一般嵌入式場合。而MiniGUi吸取了Microwindows的經(jīng)驗(yàn),采用了獨(dú)特的體系結(jié)構(gòu),它的最初版本采用線程機(jī)制來實(shí)現(xiàn)C/S結(jié)構(gòu),這樣所有的應(yīng)用程序都運(yùn)行在同一個(gè)地址空間,大大提高了程序之間的通信效率,但這種結(jié)構(gòu)也導(dǎo)致了系統(tǒng)整體的脆弱,如果某個(gè)線程因?yàn)榉欠ǖ臄?shù)據(jù)訪問而終止運(yùn)行,整個(gè)進(jìn)程都將受到影響,不過,這種體系結(jié)構(gòu)對(duì)關(guān)鍵的實(shí)時(shí)控制系統(tǒng)來說,還是非常適合的,后期發(fā)展的MiniGUI-Lite版本則作了一些改進(jìn),在獨(dú)立多進(jìn)程和系統(tǒng)效率之間作了一些綜合,采用套接字和

17、共享內(nèi)存結(jié)合的方式支持多進(jìn)程,并且提供前后臺(tái)進(jìn)程的切換,通過共享內(nèi)存機(jī)制提供全局資源的共享,以便減少實(shí)際內(nèi)存的消耗,但好像MiniGUI的圖形引擎不是直接建立在內(nèi)核framebuffer驅(qū)動(dòng)上,而要由如Libggi或Svgalib等更高一級(jí)的圖形庫支持,并且由于MiniGUI采用了獨(dú)特的接口設(shè)計(jì),其應(yīng)用程序的可移植性很差,而 MicroWindows的Nano-x方案則采用 X Window的兼容接口設(shè)計(jì),大大方便了許多基于X Window的應(yīng)用程序的移植和代碼復(fù)用。l 采用GUI上下文共享的方法 通常在單任務(wù)GUI基礎(chǔ)上開發(fā)圖形界面應(yīng)用有如下圖左邊的系統(tǒng)流程, 應(yīng)用程序通過調(diào)用GUI的API

18、實(shí)現(xiàn)相應(yīng)功能,而這些函數(shù)有自己的上下文,并且這些上下文主要是通過數(shù)據(jù)空間的形式(data & BSS)來保持的。由于消息系統(tǒng)的同步功能,如果在同一進(jìn)程中創(chuàng)建并使用多個(gè)窗口,也不會(huì)造成GUI的沖突。例如,可以在一個(gè)進(jìn)程中構(gòu)造記事本和計(jì)算器,兩個(gè)窗口都可以正常地運(yùn)行,因?yàn)槿我粫r(shí)刻只有一個(gè)窗口接受消息隊(duì)列的消息分發(fā)并處理(使用或改變GUI上下文)這種同步是由消息系統(tǒng)來保證的。假如把GUI使用的上下文和應(yīng)用其它部分的上下文分開,一個(gè)應(yīng)用完全是可以正常運(yùn)行的。如果把這種方法應(yīng)用到多任務(wù)的系統(tǒng),如果各個(gè)任務(wù)獨(dú)有自己的GUI上下文,則不能解決一些系統(tǒng)公共的設(shè)備例如鼠標(biāo)、鍵盤、輸入法等事件的檢測、轉(zhuǎn)換

19、、分派以及系統(tǒng)龐大等許多問題(在C/S結(jié)構(gòu)中是由Sever來完成這個(gè)工作的)。由此只能在各個(gè)任務(wù)之間共享GUI上下文,同步訪問的方法來實(shí)現(xiàn)多任務(wù),但在這種方法下,可能出現(xiàn)上圖右部的狀況,兩個(gè)應(yīng)用的GUI API接口函數(shù)會(huì)不可預(yù)知地改寫GUI的上下文,會(huì)造成嚴(yán)重沖突,為了避免這種情況,通過OS的鎖機(jī)制來實(shí)現(xiàn)在不同進(jìn)程間實(shí)現(xiàn)同步地訪問GUI上下文,則可實(shí)現(xiàn)不同進(jìn)程有秩序地協(xié)同作,達(dá)到多任務(wù)的目的,通常通過采用了嵌入式Linux中常用的一些工具,包括ld腳本、ld、nm、objcopy、awk、objdump等把ELF文件各部分抽取出來、并重新定位,用共享內(nèi)存函數(shù)把指定的內(nèi)存映射到固定的地址的方法,

20、把抽取的GUI上下文裝載到固定位置的方法來實(shí)現(xiàn)共享。共享GUI上下文的各進(jìn)程運(yùn)行時(shí)結(jié)構(gòu)如下圖所示:其中share data & BSS就是GUI的上下文。采用這種方法來設(shè)計(jì)GUI多任務(wù)支持的有博利思公司為我們公司IP1000多任務(wù)版網(wǎng)絡(luò)終端設(shè)計(jì)GUI,該GUI是在Microwindows的基礎(chǔ)上改進(jìn)后的設(shè)計(jì),事實(shí)上,這種設(shè)計(jì)方法也是借鑒了MiniGUI-Lite版本的一些技術(shù),用一個(gè)主進(jìn)程作為虛擬Sever處理所有的外部事件,完成消息轉(zhuǎn)換后完成消息的分發(fā)并完成窗口維護(hù)和管理,同時(shí)負(fù)責(zé)用戶進(jìn)程的啟動(dòng)(用fork的方式復(fù)制子進(jìn)程,因而主進(jìn)程和所有用戶進(jìn)程之間皆為父子關(guān)系,各用戶進(jìn)程之間則互

21、為兄弟進(jìn)程),各用戶進(jìn)程則接受并完成消息處理。主進(jìn)程和用戶進(jìn)程通過共享內(nèi)存的方式來實(shí)現(xiàn)GUI上下文共享和通訊,并且采用主進(jìn)程附加調(diào)度的方式:在LINUX內(nèi)核進(jìn)程調(diào)度的基礎(chǔ)上再建立應(yīng)用調(diào)度,任意時(shí)刻只讓其中一個(gè)用戶進(jìn)程運(yùn)行(Running狀態(tài)),其他用戶進(jìn)程則讓其進(jìn)入Sleep-on狀態(tài),主進(jìn)程并用消息分發(fā)的主動(dòng)權(quán)采用消息驅(qū)動(dòng)的機(jī)制完成各用戶進(jìn)程間的調(diào)度,并實(shí)現(xiàn)前后臺(tái)時(shí)間片的主動(dòng)分配,這種方法不僅可實(shí)現(xiàn)共享GUI的訪問沖突,同時(shí)也提高系統(tǒng)的效率決不使空閑的用戶進(jìn)程占用寶貴的CPU時(shí)間片資源,但這種方法的缺點(diǎn)也是顯而易見的。對(duì)于我們GUI的設(shè)計(jì),我們進(jìn)行了較長時(shí)間的預(yù)研,并對(duì)Microwindow

22、s/Nano-x和MiniGUI的多任務(wù)機(jī)制進(jìn)行了較為詳細(xì)的剖析,覺得兩者實(shí)現(xiàn)多任務(wù)的C/S結(jié)構(gòu)對(duì)于我們的arm7500硬件平臺(tái)并不適合,由于C/S結(jié)構(gòu)系統(tǒng)效率較低,在我們這種硬件平臺(tái)資源的基礎(chǔ)上,性能遠(yuǎn)遠(yuǎn)不能達(dá)到我們的功能需求,鑒如此,我們決定在IP1000多任務(wù)版本GUI的基礎(chǔ)上, 開發(fā)IP2000的GUI,主要是完善在IP1000開發(fā)過程中已發(fā)現(xiàn)的缺陷,并增加如下功能的支持:l 對(duì)Microwindows桌面和窗口管理進(jìn)行完善,使整個(gè)桌面和窗口管理與windows風(fēng)格更加類似,從而為IP2000設(shè)計(jì)出更好的人機(jī)界面:多窗口操作,圖標(biāo)的拖動(dòng),窗口最大、最小化操作等l 參照MiniGUI改進(jìn)

23、Microwindows圖形引擎的一些算法,提高GUI的效率l 增加業(yè)務(wù)窗口下拉菜單的支持(參考MiniGUI菜單組件設(shè)計(jì))l 增加國際標(biāo)準(zhǔn)化漢字系統(tǒng):支持16x16(大字符集)、24x24漢字庫(GB2312)多種漢字字體l 字符顯示驅(qū)動(dòng)增加16色支持l 尋找替代單消息隊(duì)列共享的進(jìn)程間通訊機(jī)制,避免某個(gè)用戶進(jìn)程崩潰導(dǎo)致整個(gè)系統(tǒng)崩潰。3、 仿真設(shè)計(jì)設(shè)計(jì)目標(biāo)l 降低模塊間的耦合關(guān)系l 減少中間層l 方便各個(gè)平臺(tái)的移植設(shè)計(jì)方法l 將IP1000的仿真程序進(jìn)行整合,按模塊封裝成API。l 針對(duì)幾個(gè)關(guān)鍵點(diǎn)進(jìn)行技術(shù)改進(jìn),爭取最大程度地發(fā)揮系統(tǒng)和硬件平臺(tái)的優(yōu)點(diǎn)。l 在縱向的層次上只有相鄰的兩層有調(diào)用和被調(diào)

24、用的關(guān)系,相同的層次可以調(diào)用和被調(diào)用。仿真結(jié)構(gòu)設(shè)計(jì)仿真層仿真driver層microwin 全局模塊、命令分析模塊鍵盤模塊顯示模塊打印模塊外設(shè)模塊通訊模塊自檢模塊鍵盤仿真driver顯示仿真driver打印仿真driver外設(shè)仿真driver通訊仿真driver自檢仿真driverNVR操作鍵盤API顯示API打印API串口API網(wǎng)絡(luò)APINVR API中文輸入法模塊說明1)、仿真全局模塊,包括:l 初始化Gblint的數(shù)據(jù)l 改變漢字通訊碼的顯示拼字入口l 設(shè)置輸入/輸出入口(將終端仿真軟件從功能上分為輸入、輸出兩大部分)l 復(fù)位通用命令分析器l 根據(jù)參數(shù)初始化串口l 恢復(fù)、保存、缺省NVR

25、參數(shù)2)、命令分析 使用有限狀態(tài)自動(dòng)機(jī)來解析命令序列。3)、鍵盤模塊仿真上層:l 處理控制碼(ESC、CAN、BS、CR、XON、XOFF)l 處理ASCII碼l 處理本地功能鍵l 處理用戶自定義序列鍵l 處理缺省功能鍵l 漢字譯碼并發(fā)送 仿真driver層:將系統(tǒng)發(fā)來的鍵盤消息WM_KEYDOWN、WM_KEYUP轉(zhuǎn)換成終端所需的鍵碼(高字節(jié)掃描碼低字節(jié)Ascii碼)GUI 層:l 在鍵盤有數(shù)據(jù)時(shí),更新鍵盤狀態(tài),分發(fā)鍵盤事件。l 將原始碼轉(zhuǎn)換成終端所需的鍵碼l 如果是輸入法相關(guān)鍵且輸入法有效,進(jìn)輸入法處理;否則向上層發(fā)WM_KEYDOWN或WM_KEYUP消息。4)、顯示模塊將顯示從操作對(duì)象

26、上可以分為5個(gè)部分:屏幕、光標(biāo)、字符顯示、滾屏、圖形。仿真上層:l 根據(jù)通訊方式的不同,TTY顯示一個(gè)國標(biāo)碼/ASCII碼/ID碼/CNC碼。l 能在光標(biāo)的當(dāng)前位置以當(dāng)前屬性和字符集顯示一個(gè)ASCII字符l 屏幕開關(guān)顯l 背景色設(shè)置仿真driver層:l 初始化顯示。主要是創(chuàng)建光標(biāo)、設(shè)置光標(biāo)的屬性、顯示光標(biāo)、設(shè)置屏幕行數(shù)和列數(shù)。l 光標(biāo)控制:設(shè)置光標(biāo)屬性、位置顯示光標(biāo)屬性、位置移動(dòng)光標(biāo)得到光標(biāo)的位置和光標(biāo)左右的字符。清除光標(biāo)支持多個(gè)光標(biāo)GUI層:l 光標(biāo)驅(qū)動(dòng):創(chuàng)建光標(biāo)、釋放(清除)光光標(biāo)屬性(點(diǎn)/線、固定/閃爍/消隱)支持l 屏幕驅(qū)動(dòng)開/關(guān)顯、節(jié)電模式支持分辨率、背景色設(shè)置支持l 字符顯示驅(qū)動(dòng)

27、西文、漢字、漢字左半、漢字右半顯示支持自造漢字顯示支持字符屬性(上/下/左/右劃線、高/低亮/正常、倍高/寬、顯示/消隱)支持l 滾屏驅(qū)動(dòng)向上滾屏、向下滾屏支持顯存數(shù)據(jù)操作支持l 圖形驅(qū)動(dòng)點(diǎn)、線、圓等基本圖形操作支持5)、打印模塊仿真上層l 選擇打印機(jī)l 打印機(jī)字庫打印l 終端字庫打印l 正常打印拷貝屏幕l 自動(dòng)打印屏幕上的一行l(wèi) 透明打印l 條碼打印一個(gè)字符l 退出打印l 打印出錯(cuò)時(shí)彈出模態(tài)窗口,顯示提示信息,用鍵盤或鼠標(biāo)選擇Y/N 來決定繼續(xù)打印/退出打印。仿真driver層l 得到當(dāng)前行列的VRAM地址l 打印字符屬性處理l 將顯示點(diǎn)陣轉(zhuǎn)換成打印點(diǎn)陣l 打印一個(gè)字符(串)到設(shè)置的打印端口

28、。最多查詢打印端口0x7ff次,若就緒就送打印,若打印機(jī)錯(cuò)退出。l 打印測試GUI層l 后臺(tái)打印字符緩沖區(qū)支持l 并口支持6)、外設(shè)、通訊外設(shè)模塊和通訊模塊的程序結(jié)構(gòu)以及兩個(gè)模塊之間的關(guān)系如下圖所示:仿真上層仿真driver層GUI 層外設(shè) 通訊串口通訊網(wǎng)絡(luò)通訊串口API網(wǎng)絡(luò)API外設(shè)模塊仿真上層:l 打開/關(guān)閉端口l 打開/關(guān)閉密碼鍵盤、讀密碼鍵盤的數(shù)據(jù)向主機(jī)發(fā)送l 輔串口、透明打印等命令分析l 向輔串1n輸出數(shù)據(jù)l 讀輔串口數(shù)據(jù)向主機(jī)發(fā)送l 串口拷屏l 串口打印一個(gè)字符通訊模塊仿真上層:l 通訊初始化l 通過主通訊口(主串口或網(wǎng)絡(luò)口)以非阻塞方式從主機(jī)讀數(shù)據(jù)。l 通過主通訊口(主串口或網(wǎng)絡(luò)

29、口)以阻塞方式從主機(jī)讀數(shù)據(jù)。l 寫一個(gè)字節(jié)數(shù)據(jù)到主通訊口(串口或網(wǎng)絡(luò)口)l 寫一串?dāng)?shù)據(jù)到主通訊口(串口或網(wǎng)絡(luò)口) 外設(shè)模塊仿真driver層:l 串口通訊初始化l 向主串、輔串輸出數(shù)據(jù)l 從主串、輔串讀數(shù)據(jù)l 設(shè)置串口參數(shù)l 串口復(fù)位l 串口測試網(wǎng)絡(luò)模塊仿真driver層:l 網(wǎng)絡(luò)通訊初始化l ping功能支持l 打開/關(guān)閉一個(gè)Telnet會(huì)話l 從一個(gè)Telnet會(huì)話中讀數(shù)據(jù)l 向一個(gè)Telnet會(huì)話中寫數(shù)據(jù)外設(shè)模塊GUI層:l 打開/關(guān)閉串口l 從串口讀數(shù)據(jù)l 往串口發(fā)送數(shù)據(jù)l 設(shè)置串口參數(shù)l 讀取串口參數(shù)網(wǎng)絡(luò)模塊GUI層:l 打開/關(guān)閉一個(gè)網(wǎng)絡(luò)聯(lián)接l 從網(wǎng)絡(luò)讀數(shù)據(jù)l 通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)7)

30、 、輸入入法模塊輸入法放嵌入GUI層,并支持輸入法掛接接口設(shè)計(jì)。l 切換輸入狀態(tài)l 切換輸入法l 取得輸入鍵的Ascii碼,查表取得相應(yīng)的漢字內(nèi)碼,把漢字的內(nèi)碼發(fā)送給提示行,用數(shù)字鍵選擇漢字l 自造漢字和短語輸入支持l 提供修改默認(rèn)輸入法的API8) 、NVR模塊仿真driver層:l 讀取/保存終端參數(shù)l 讀取/保存自造短語l 讀取/保存自造漢字GUI層:l 讀NVR到緩沖區(qū)l 保存緩沖區(qū)到NVRl 從緩沖區(qū)中讀數(shù)據(jù)l NVR校驗(yàn)讀l NVR校驗(yàn)寫l 讀取自造短語、自造漢字9)、自檢模塊l 鍵盤測試l 串口測試l 并口測試l 網(wǎng)絡(luò)測試l 循環(huán)自檢l 演示測試l 報(bào)告自檢結(jié)果二、 流程設(shè)計(jì)在以

31、上設(shè)計(jì)的基礎(chǔ)上,我們采用SDT方法作如下基于消息驅(qū)動(dòng)機(jī)制數(shù)據(jù)流程的詳細(xì)流程設(shè)計(jì)(圖見基于消息驅(qū)動(dòng)機(jī)制數(shù)據(jù)流程設(shè)計(jì)): 如上圖所示我們可取得如下結(jié)論:1、流程設(shè)計(jì)的幾個(gè)基本原則:l 消息循環(huán)的速度必須足夠快,也就是說從事件的檢測>完成消息的轉(zhuǎn)換>進(jìn)入消息隊(duì)列>從消息隊(duì)列取出分發(fā)>相應(yīng)消息回調(diào)函數(shù)處理完成>事件檢測 這整個(gè)循環(huán)必需在某個(gè)限定時(shí)間內(nèi)完成,才不會(huì)造成事件丟失和消息處理滯后,應(yīng)用不能有長時(shí)間的某個(gè)消息處理流程。l 由于整個(gè)應(yīng)用系統(tǒng)共享一個(gè)消息隊(duì)列,所有消息處理在不非法操作造成系統(tǒng)崩潰的基礎(chǔ)上都必須能夠正確返回,否則某次消息的處理會(huì)造成消息循環(huán)停止,造成系統(tǒng)停

32、止。2、性能分析:我們的傳統(tǒng)終端810C/910/920等型號(hào)和IP1000/2000都是采用CLPS-7500硬件平臺(tái),分析兩者的流程,我們可作出如下圖所示對(duì)比分析,為了支持圖形界面、多任務(wù)、網(wǎng)絡(luò),我們不得不在我們的系統(tǒng)中引入OS、GUI,隨之而來的則是許多中間流程的引入,使我們整機(jī)效率和處理速度等性能的降低,所以我們IP2000功能指標(biāo)如刷屏、滾屏、處理速度等所能達(dá)到的終極目標(biāo)就是采用同類型CPU的傳統(tǒng)終端,一般來說,達(dá)到80左右當(dāng)屬正常。一般來說,可考慮如下角度優(yōu)化影響性能指標(biāo)的流程:l 頻繁在內(nèi)核態(tài)和用戶態(tài)之間切換l 各層次之間接口混亂、冗余l(xiāng) GUI操作效率低下l 多任務(wù)各進(jìn)程之間數(shù)

33、據(jù)通訊效率低下l BIOS層算法、代碼效率低下 3、IP1000目前所存在的幾個(gè)未解決問題的初步分析l 系統(tǒng)處理速度較慢 系統(tǒng)處理速度主要由數(shù)據(jù)通訊方法、顯示、滾屏等因素綜合構(gòu)成,這個(gè)指標(biāo)的瓶頸也就要根據(jù)實(shí)際情況分析,舉個(gè)例子:假如我們采用Nano-x方案實(shí)現(xiàn)多任務(wù),則在SERVER和CLIENT之間數(shù)據(jù)傳遞的低效的套接字方法就成為了我們速度的瓶頸,我們采用了較高效率的共享內(nèi)存方式傳遞數(shù)據(jù),則顯示、滾屏BIOS的算法就成為我們速度提高的關(guān)鍵,而且從IP1000串口聯(lián)機(jī)和網(wǎng)絡(luò)聯(lián)機(jī)處理速度的差異分析,我們也可得出在AP層數(shù)據(jù)處理的方法和訪問上下文的機(jī)制也可成為影響性能的關(guān)鍵:網(wǎng)絡(luò)聯(lián)機(jī)一個(gè)WM_FDINPUT消息對(duì)應(yīng)處理一個(gè)數(shù)據(jù)包,而串口一個(gè)WM_FDINPUT消息則只處理單個(gè)數(shù)據(jù),造成串口聯(lián)機(jī)處理速度很慢。l 滾屏、刷新速度較慢刷新速度主要是由終端仿真的顯示結(jié)構(gòu)和GUI字符顯示的方法(算法)決定,滾屏速度則與滾屏所采用的機(jī)制(行滾? 屏滾?)關(guān)系最大,當(dāng)然也與系統(tǒng)數(shù)據(jù)傳遞的速度及顯示底層的實(shí)現(xiàn)有關(guān),我們可從改進(jìn)這三個(gè)方面作為突破口,可望有較大性能提高。此外如果在維持16點(diǎn)陣不變的情況下,采用16色,各種指標(biāo)可以有較大幅度的提高。(已初步做過試驗(yàn))l CTRL+D問題從流程圖我們可看出,這個(gè)問題的出現(xiàn)在于我們在主進(jìn)程中分配業(yè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論