




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、IP2000 是我們公司根據(jù)市場需求將開發(fā)的第二代網(wǎng)絡(luò)終端,要求具有友好的類WINDOWS 風格的人機交互界面,在滿足傳統(tǒng)終端全部功能基礎(chǔ)上,實現(xiàn)以太網(wǎng)聯(lián)機功能(實現(xiàn) TELNET 遠程登錄協(xié)議)和支持多任務(wù)的一種更新?lián)Q代產(chǎn)品。功能需求簡述如下:l提供類 WINDOWS 風格的用戶界面,采用桌面圖標的方式啟動任務(wù)l實現(xiàn) TELNET 遠程登錄協(xié)議l支持最多達 8 個任務(wù)同時運行l(wèi)支持 PS/2 鼠標l支持網(wǎng)絡(luò)版本更新l支持網(wǎng)關(guān)功能l支持本地和網(wǎng)絡(luò)打印機在此需求前提下,我們決定采用多任務(wù)嵌入式操作系統(tǒng)(EOS)+嵌入式 GUI+終端仿真的結(jié)構(gòu)來實現(xiàn)需求,系統(tǒng)結(jié)構(gòu)框圖描述如下:AP窗口管理圖形界面
2、API支持中文支持系統(tǒng)設(shè)備接口頭表示控制流實線箭頭表示數(shù)據(jù)流進程管理文件系統(tǒng)網(wǎng)絡(luò)支持內(nèi)存管理中斷和系統(tǒng)調(diào)用設(shè)備驅(qū)動IO控制GUI 虛線箭EOS一、結(jié)構(gòu)設(shè)計在此系統(tǒng)框圖的基礎(chǔ)上,我們分別對各層次進行結(jié)構(gòu)設(shè)計分析:1、EOS 設(shè)計目前存在的嵌入式系統(tǒng)多不勝數(shù),流行的有 WinCE、PalmOS、Vxwork、pSOS、Neculeus等多種系統(tǒng)。從目前嵌入式系統(tǒng)使用最廣泛的信息家電行業(yè)和通訊行業(yè)分析,PalmOS 和 WinCE、Vxwork 是當前應(yīng)用最廣泛的三種:lWindows CE:Microsoft Windows CE 是一個簡潔的,高效率的多平臺操作系統(tǒng)。它不是削減的 Windows
3、95 版本,而是從整體上為有限資源的平臺設(shè)計的多線程,完整優(yōu)先權(quán),多任務(wù)的操作系統(tǒng)。它的模塊化設(shè)計允許它對于從掌上電腦到專用的工業(yè)控制器的用戶電子設(shè)備進行定制,但 WinCE 是非開放性操作系統(tǒng),使第三方很難實現(xiàn)產(chǎn)品的定制,嵌入式操作系統(tǒng)追求高效、節(jié)能,而 WinCE 在這方面是笨拙的,它占用過多的內(nèi)存,應(yīng)用程序龐大,而且入門費和許可費較高,使得整個產(chǎn)品的成本急劇上升。所以 WinCE 多用于從高檔的產(chǎn)品。lVxWorks:VxWorks 所在的公司 WindRiver 兼并了 pSOS 的 ISI 公司,使得該公司現(xiàn)在有兩大 RTOS 系統(tǒng)。VxWorks 是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛,
4、市場占有率最高的系統(tǒng)。它支持多種處理器,如 x86,i960,Sun Sparc,Motorola MC68xxx,MIPS RX000,POWER PC 等等。使用的是和 UNIX 不兼容的環(huán)境,大多數(shù)的 VxWorks API 是專有的。采用 GNU 的編譯和調(diào)試器。lpSOS:ISI 公司已經(jīng)被 WinRiver 公司兼并,現(xiàn)在是屬于 WindRiver 公司的產(chǎn)品。這個系統(tǒng)是一個模塊化,高性能的實時操作系統(tǒng),專為嵌入式微處理器設(shè)計,提供一個完全多任務(wù)環(huán)境,在定制的或是商業(yè)化的硬件上提供高性能和搞可靠性??梢宰岄_發(fā)者將操作系統(tǒng)的功能和內(nèi)存需求定制成每一個應(yīng)用所需的系統(tǒng)。開發(fā)者可以利用它來
5、實現(xiàn)從簡單的單個獨立設(shè)備到復(fù)雜的、網(wǎng)絡(luò)化的多處理器系統(tǒng)。lQNX:QNX 是一個實時的,可擴充的操作系統(tǒng),它遵循 POSIX.1 (程序接口)和 POSIX.2 (Shell 和工具)、部分遵循 POSIX.1b(實時擴展)。它提供了一個很小的微內(nèi)核以及一些可選的配合進程。其內(nèi)核僅提供 4 種服務(wù):進程調(diào)度、進程間通信、底層網(wǎng)絡(luò)通信和中斷處理,其進程在獨立的地址空間運行。所有其它 OS 服務(wù),都實現(xiàn)為協(xié)作的用戶進程,因此 QNX 內(nèi)核非常小巧(QNX4.x 大約為 12Kb)而且運行速度極快。這個靈活的結(jié)構(gòu)可以使用戶根據(jù)實際的需求將系統(tǒng)配置成微小的嵌入式操作系統(tǒng)或是包括幾百個處理器的超級虛擬機
6、操作系統(tǒng)。lPalm OS:3Com 公司的 Palm OS 在 PDA 市場上占有很大的市場份額,它有開放的操作系統(tǒng)應(yīng)用程序接口(API),開發(fā)商可以根據(jù)需要自行開發(fā)所需要的應(yīng)用程序。目前已經(jīng)有總共 3500 多個應(yīng)用程序可以運行在 Palm Pilot 上,其中大部分應(yīng)用程序均為其他廠商和個人所開發(fā),使得 Palm Pilot 的功能得以不斷增多。這些軟件包括計算器、各種游戲、電子寵物、地理信息等等。在開發(fā)環(huán)境方面,可以在 Windows 95/98,Windows NT 以及 Macintosh 下安裝 Palm Pilot Desktop;PlamPilot 可以與流行的 PC 平臺上
7、的應(yīng)用程序如 Word,Excel 等進行數(shù)據(jù)交換。lOS-9:Microwave 的 OS-9 是為微處理器的關(guān)鍵實時任務(wù)而設(shè)計的操作系統(tǒng),廣泛應(yīng)用于高科技產(chǎn)品中,包括消費電子產(chǎn)品,工業(yè)自動化,無線通訊產(chǎn)品,醫(yī)療儀器,數(shù)字電視/多媒體設(shè)備中。它提供了很好的安全性和容錯性。與其他的嵌入式系統(tǒng)相比,它的靈活性和可升級性非常突出。lLynxOS:Lynx Real-time Systems 的 LynxOS 是一個分布式、嵌入式、可規(guī)模擴展的實時操作系統(tǒng),它遵循 POSIX.1a、POSIX.1b 和 POSIX.1c 標準。LynxOS 支持線程概念,提供 256 個全局用戶線程優(yōu)先級;提供一些
8、傳統(tǒng)的,非實時系統(tǒng)的服務(wù)特征;包括基于調(diào)用需求的虛擬內(nèi)存,一個基于 Motif 的用戶圖形界面,與工業(yè)標準兼容的網(wǎng)絡(luò)系統(tǒng)以及應(yīng)用開發(fā)工具。lLinux:Linux 在嵌入式領(lǐng)域獲得了飛速發(fā)展,目前正在開發(fā)的嵌入式系統(tǒng)中,49%的項目選擇 Linux 作為嵌入式操作系統(tǒng)。Linux 之所以能在嵌入式系統(tǒng)市場上取得如此迅速的發(fā)展,與它自身的優(yōu)良特性有著不可分割的關(guān)系:免費、開放源碼,豐富的軟件資源;功能強大的內(nèi)核,性能高效、穩(wěn)定,多任務(wù);支持多種體系結(jié)構(gòu),如 X86、ARM、MIPS、ALPHA、SPARC 等;完善的網(wǎng)絡(luò)通信、圖形、文件管理機制;支持大量的周邊硬件設(shè)備,驅(qū)動豐富;大小、功能都可定
9、制;良好的開發(fā)環(huán)境,不斷發(fā)展的開發(fā)工具集;廣泛的軟件開發(fā)者的支持;價格低廉。從我們 IP2000 網(wǎng)絡(luò)終端的需求和目前網(wǎng)絡(luò)終端的市場來分析,目前我們公司已有的產(chǎn)品 IP1000 采用 Linux+Microwin 這種方式已基本實現(xiàn)網(wǎng)絡(luò)終端的需求,只是在界面的美觀程度和系統(tǒng)速度上比同類型的較為突出的實達 netterm 860 終端有所不足,但從系統(tǒng)的角度和開發(fā)進度以及成本的角度考慮,重新引進一種新的嵌入式操作系統(tǒng),以上介紹的幾種 EOS引進的門檻成本太高,且需要較長時間消化和熟悉,移植到我們的硬件平臺也需要長時間的過程,綜合考慮,我們還是決定在博利思提供的 Linux 內(nèi)核的基礎(chǔ)上構(gòu)筑我們的
10、 IP2000 的OS,并準備對內(nèi)核作如下改進:l優(yōu)化 framebuffer 代碼,并在原有 256 色的基礎(chǔ)上增加 16 色支持l修改 ttyS0/1 的設(shè)備驅(qū)動,解決目前 IP1000 存在的所有由于串口造成的問題2、GUI 設(shè)計通過對目前幾種基于 Linux 的嵌入式 GUI 的詳細分析,較好的嵌入式 GUI 通常結(jié)合面向?qū)ο蠓椒ú捎枚鄬营毩⒃O(shè)計,具有以下結(jié)構(gòu):l 設(shè)備相關(guān)層(driver)在這一層的功能應(yīng)該是將系統(tǒng)中與設(shè)備和操作系統(tǒng)平臺的具體細節(jié)屏蔽起來。它利用實際的設(shè)備驅(qū)動程序接口或者 OS 系統(tǒng)調(diào)用來與硬件設(shè)備交互,這些硬件設(shè)備主要包括 screen、mouse 和 keyboa
11、rd 等。我們使用設(shè)備對象(device object)的概念來描述一類設(shè)備,每一個對象描述了一類實際設(shè)備的屬性和方法。比如,screen設(shè)備對象就描述了 screen 設(shè)備的各種屬性(屏幕尺寸、分辨率、像素深度、像素格式、邏輯顯存首地址等等)和基本方法(打開和關(guān)閉顯示器、設(shè)置調(diào)色板、返回屏幕屬性、讀寫像素點等等)。對于同一類設(shè)備在不同驅(qū)動或者平臺上的具體情況則以設(shè)備對象實例來描述,比如 screen 類型的設(shè)備,我們可能讓它工作在 Linux 上,通過 framebuffer 或者 SVGALib 驅(qū)動來操作它。他們的對象類相同,但是類的屬性和方法的實現(xiàn)不一樣。中間層看到的只是該類設(shè)備的可選
12、的對象實例,不用關(guān)心底層是如何操作的(也就是對象的方法是怎樣實現(xiàn)的)。最底層實際上是以設(shè)備對象的方式為中間層提供了一個抽象的設(shè)備驅(qū)動界面。為了移植更容易,最底層應(yīng)盡量簡潔,只實現(xiàn)最基本的設(shè)備功能函數(shù)??梢钥吹剑斚到y(tǒng)要移植到另外的平臺上時,我們只要按照各類設(shè)備對象的定義實現(xiàn)相對較少的函數(shù)就能建立新的設(shè)備對象實例并讓中間層選擇他們就可以了。l 設(shè)備無關(guān)層(engine)這一層的功能是提供一個可以為各種應(yīng)用層共享的與設(shè)備無關(guān)的核心圖形引擎,其中的主要工作就是實現(xiàn)各種圖形函數(shù)和輸入設(shè)備的功能函數(shù)。對于中間層,它向下看到的是各類設(shè)備對象,向上則是要提供一個抽象的核心圖形界面,使得上面的應(yīng)用層對它所使用
13、的到底是什么設(shè)備對象不用去理會。很顯然,這一層根據(jù)不同的設(shè)備和平臺選擇相應(yīng)的設(shè)備對象實例來實現(xiàn)核心圖形引擎。 由于每類設(shè)備的各個實例擁有同樣的對象類型定義,所以中間層基于設(shè)備對象所實現(xiàn)的功能是不會因為設(shè)備和平臺的更改而受影響的。同時,中間層把消息驅(qū)動機制、窗口管理機制交給應(yīng)用層去完成,因此,對于各類型的應(yīng)用層(Win32 或者是X-Windows),中間層完成的功能都是通用的。l 應(yīng)用層(API)這一層的功能是按照應(yīng)用的具體要求為應(yīng)用程序提供適當?shù)膽?yīng)用層用戶界面。當應(yīng)用程序不需要窗口系統(tǒng)的時候,用戶自定義圖形界面將十分簡單,甚至可以什么都不做而直接使用中間層提供的抽象核心界面。如果用戶需要完善
14、的多任務(wù)窗口系統(tǒng),比如是類 Win32 的,可以使用抽象核心界面來實現(xiàn)其應(yīng)用程序編程接口(API)以及窗口和消息機制等。嵌入式 GUI 的體系結(jié)構(gòu)的抽象參考模型如下:目前采用此套結(jié)構(gòu)的比較成熟的嵌入式 GUI 有 Microwindow 和 MiniGUI 兩種 GUI 平臺, Microwindow 平臺提出較早,并且經(jīng)過多年的實踐,已經(jīng)比較成熟,目前國內(nèi)的眾多嵌入式系統(tǒng)廠商包括聯(lián)想、中軟、紅旗、桑夏科技、華恒等都采用 Micorwindow 作為基礎(chǔ)開發(fā)自己嵌入式 GUI,但因為該項目缺少強有力的核心代碼維護,代碼質(zhì)量參差不齊,因此在另外一種 GUI Qt/Embedded 發(fā)布以來,它就
15、長時間停留在了 0.89Pre7 版本,近幾年來發(fā)展緩慢; MiniGUI 項目起源于清華大學(xué)一個采用嵌入式 Linux 系統(tǒng)的工業(yè)控制系統(tǒng)項目,開發(fā)之初借鑒了 Microwindow 的一些經(jīng)驗,但后來在發(fā)展速度上超過了 Microwindow(MiniGUI 已是1.2.0 版本,但Microwindow 至今還是 0.89pre 版本),由于兩者都是自由軟件項目,開放源代碼和所有文檔,可作為我們 IP2000 網(wǎng)絡(luò)終端的 GUI 設(shè)計的參考選擇,我們可以在其中一種的基礎(chǔ)上構(gòu)筑我們自己的 GUI 平臺。由于 IP2000 網(wǎng)絡(luò)終端有多任務(wù)功能需求,因此我們的 GUI 設(shè)計必須能夠滿足適應(yīng)多
16、任務(wù)的需求,通過對已有的兩種 GUI 進行預(yù)研,我們發(fā)現(xiàn), GUI 的多任務(wù)設(shè)計通常有兩種方法:l采用 C/S 結(jié)構(gòu)C/S 結(jié)構(gòu)是天然的多任務(wù),在 Sever 端專門負責監(jiān)控外部事件和隨之的消息傳遞和分發(fā),Client 完成消息的處理,各個 Client 之間互不干擾和影響。采用這種方法實現(xiàn)多任務(wù)支持的有 Microwindows 的 Nano-x 方案和 MiniGUI,但兩種 GUI 實現(xiàn)的機制有很大差別,MicroWindows 為了追求和 X Window 的兼容,采用了傳統(tǒng)的基于 Unix套接字通訊方式的 C/S 系統(tǒng)結(jié)構(gòu),這樣大量的數(shù)據(jù)在客戶/內(nèi)核/服務(wù)器之間傳遞,增加了系統(tǒng)負荷,
17、占用了更多系統(tǒng)資源,降低了系統(tǒng)的圖形效率,并不適應(yīng)于 CPU 速度較慢和系統(tǒng)資源有限的一般嵌入式場合。而 MiniGUi 吸取了 Microwindows 的經(jīng)驗,采用了獨特的體系結(jié)構(gòu),它的最初版本采用線程機制來實現(xiàn) C/S 結(jié)構(gòu),這樣所有的應(yīng)用程序都運行在同一個地址空間,大大提高了程序之間的通信效率,但這種結(jié)構(gòu)也導(dǎo)致了系統(tǒng)整體的脆弱,如果某個線程因為非法的數(shù)據(jù)訪問而終止運行,整個進程都將受到影響,不過,這種體系結(jié)構(gòu)對關(guān)鍵的實時控制系統(tǒng)來說,還是非常適合的,后期發(fā)展的 MiniGUI-Lite 版本則作了一些改進,在獨立多進程和系統(tǒng)效率之間作了一些綜合,采用套接字和共享內(nèi)存結(jié)合的方式支持多進程
18、,并且提供前后臺進程的切換,通過共享內(nèi)存機制提供全局資源的共享,以便減少實際內(nèi)存的消耗,但好像 MiniGUI 的圖形引擎不是直接建立在內(nèi)核 framebuffer 驅(qū)動上,而要由如 Libggi 或 Svgalib 等更高一級的圖形庫支持,并且由于 MiniGUI 采用了獨特的接口設(shè)計,其應(yīng)用程序的可移植性很差,而 MicroWindows 的 Nano-x 方案則采用 X Window 的兼容接口設(shè)計,大大方便了許多基于 X Window 的應(yīng)用程序的移植和代碼復(fù)用。l采用 GUI 上下文共享的方法通常在單任務(wù) GUI 基礎(chǔ)上開發(fā)圖形界面應(yīng)用有如下圖左邊的系統(tǒng)流程,應(yīng)用程序通過調(diào)用 GUI
19、 的 API 實現(xiàn)相應(yīng)功能,而這些函數(shù)有自己的上下文,并且這些上下文主要是通過數(shù)據(jù)空間的形式(data & BSS)來保持的。由于消息系統(tǒng)的同步功能,如果在同一進程中創(chuàng)建并使用多個窗口,也不會造成 GUI 的沖突。例如,可以在一個進程中構(gòu)造記事本和計算器,兩個窗口都可以正常地運行,因為任一時刻只有一個窗口接受消息隊列的消息分發(fā)并處理(使用或改變 GUI 上下文)這種同步是由消息系統(tǒng)來保證的。假如把 GUI使用的上下文和應(yīng)用其它部分的上下文分開,一個應(yīng)用完全是可以正常運行的。如果把這種方法應(yīng)用到多任務(wù)的系統(tǒng),如果各個任務(wù)獨有自己的 GUI 上下文,則不能解決一些系統(tǒng)公共的設(shè)備例如鼠標、鍵
20、盤、輸入法等事件的檢測、轉(zhuǎn)換、分派以及系統(tǒng)龐大等許多問題(在 C/S 結(jié)構(gòu)中是由 Sever 來完成這個工作的)。由此只能在各個任務(wù)之間共享 GUI 上下文,同步訪問的方法來實現(xiàn)多任務(wù),但在這種方法下,可能出現(xiàn)上圖右部的狀況,兩個應(yīng)用的 GUI API 接口函數(shù)會不可預(yù)知地改寫 GUI 的上下文,會造成嚴重沖突,為了避免這種情況,通過 OS 的鎖機制來實現(xiàn)在不同進程間實現(xiàn)同步地訪問 GUI 上下文,則可實現(xiàn)不同進程有秩序地協(xié)同作,達到多任務(wù)的目的,通常通過采用了嵌入式 Linux 中常用的一些工具,包括 ld 腳本、ld、nm、objcopy、awk、objdump 等把ELF 文件各部分抽取
21、出來、并重新定位,用共享內(nèi)存函數(shù)把指定的內(nèi)存映射到固定的地址的方法,把抽取的 GUI 上下文裝載到固定位置的方法來實現(xiàn)共享。共享 GUI 上下文的各進程運行時結(jié)構(gòu)如下圖所示:share data &bssdata & bsscodestatck進程私有空間進程虛擬空間進程共享空間其中 share data & BSS 就是 GUI 的上下文。采用這種方法來設(shè)計 GUI 多任務(wù)支持的有博利思公司為我們公司 IP1000 多任務(wù)版網(wǎng)絡(luò)終端設(shè)計 GUI,該 GUI 是在 Microwindows 的基礎(chǔ)上改進后的設(shè)計,事實上,這種設(shè)計方法也是借鑒了 MiniGUI-Lite
22、版本的一些技術(shù),用一個主進程作為虛擬 Sever 處理所有的外部事件,完成消息轉(zhuǎn)換后完成消息的分發(fā)并完成窗口維護和管理,同時負責用戶進程的啟動(用 fork 的方式復(fù)制子進程,因而主進程和所有用戶進程之間皆為父子關(guān)系,各用戶進程之間則互為兄弟進程),各用戶進程則接受并完成消息處理。主進程和用戶進程通過共享內(nèi)存的方式來實現(xiàn) GUI 上下文共享和通訊,并且采用主進程附加調(diào)度的方式:在 LINUX 內(nèi)核進程調(diào)度的基礎(chǔ)上再建立應(yīng)用調(diào)度,任意時刻只讓其中一個用戶進程運行(Running 狀態(tài)),其他用戶進程則讓其進入 Sleep-on 狀態(tài),主進程并用消息分發(fā)的主動權(quán)采用消息驅(qū)動的機制完成各用戶進程間的
23、調(diào)度,并實現(xiàn)前后臺時間片的主動分配,這種方法不僅可實現(xiàn)共享 GUI 的訪問沖突,同時也提高系統(tǒng)的效率決不使空閑的用戶進程占用寶貴的 CPU 時間片資源,但這種方法的缺點也是顯而易見的。對于我們 GUI 的設(shè)計,我們進行了較長時間的預(yù)研,并對 Microwindows/Nano-x 和 MiniGUI 的多任務(wù)機制進行了較為詳細的剖析,覺得兩者實現(xiàn)多任務(wù)的 C/S 結(jié)構(gòu)對于我們的 arm7500 硬件平臺并不適合,由于 C/S 結(jié)構(gòu)系統(tǒng)效率較低,在我們這種硬件平臺資源的基礎(chǔ)上,性能遠遠不能達到我們的功能需求,鑒如此,我們決定在 IP1000 多任務(wù)版本 GUI 的基礎(chǔ)上, 開發(fā) IP2000 的
24、 GUI,主要是完善在 IP1000 開發(fā)過程中已發(fā)現(xiàn)的缺陷,并增加如下功能的支持:l 對 Microwindows 桌面和窗口管理進行完善,使整個桌面和窗口管理與 windows 風格更加類似,從而為 IP2000 設(shè)計出更好的人機界面:多窗口操作,圖標的拖動,窗口最大、最小化操作等l 參照 MiniGUI 改進 Microwindows 圖形引擎的一些算法,提高 GUI 的效率l增加業(yè)務(wù)窗口下拉菜單的支持(參考 MiniGUI 菜單組件設(shè)計)l增加國際標準化漢字系統(tǒng):支持 16x16(大字符集)、24x24 漢字庫(GB2312)多種漢字字體l字符顯示驅(qū)動增加 16 色支持l尋找替代單消息
25、隊列共享的進程間通訊機制,避免某個用戶進程崩潰導(dǎo)致整個系統(tǒng)崩潰。3、 仿真設(shè)計設(shè)計目標l降低模塊間的耦合關(guān)系l減少中間層l方便各個平臺的移植設(shè)計方法l將 IP1000 的仿真程序進行整合,按模塊封裝成 API。l針對幾個關(guān)鍵點進行技術(shù)改進,爭取最大程度地發(fā)揮系統(tǒng)和硬件平臺的優(yōu)點。l在縱向的層次上只有相鄰的兩層有調(diào)用和被調(diào)用的關(guān)系,相同的層次可以調(diào)用和被調(diào)用。仿真結(jié)構(gòu)設(shè)計全局模塊、命令分析模塊鍵盤模塊顯示模塊打印模塊外設(shè)模塊通訊模塊自檢模塊鍵盤仿真driver顯示仿真driver打印仿真driver外設(shè)仿真driver通訊仿真driver自檢仿真driverNVR 操作鍵盤 API顯示 API打
26、印 API串口 API網(wǎng)絡(luò) APINVR API中文輸入法仿真層仿真 driver 層microwin模塊說明1)、仿真全局模塊,包括:l初始化 Gblint 的數(shù)據(jù)l改變漢字通訊碼的顯示拼字入口l設(shè)置輸入/輸出入口(將終端仿真軟件從功能上分為輸入、輸出兩大部分)l復(fù)位通用命令分析器l根據(jù)參數(shù)初始化串口l恢復(fù)、保存、缺省 NVR 參數(shù)2)、命令分析使用有限狀態(tài)自動機來解析命令序列。3)、鍵盤模塊仿真上層:l處理控制碼(ESC、CAN、BS、CR、XON、XOFF)l處理 ASCII 碼l處理本地功能鍵l處理用戶自定義序列鍵l處理缺省功能鍵l漢字譯碼并發(fā)送仿真 driver 層:將系統(tǒng)發(fā)來的鍵盤
27、消息 WM_KEYDOWN、WM_KEYUP 轉(zhuǎn)換成終端所需的鍵碼(高字節(jié)掃描碼低字節(jié) Ascii 碼)GUI 層:l在鍵盤有數(shù)據(jù)時,更新鍵盤狀態(tài),分發(fā)鍵盤事件。l將原始碼轉(zhuǎn)換成終端所需的鍵碼l如果是輸入法相關(guān)鍵且輸入法有效,進輸入法處理;否則向上層發(fā)WM_KEYDOWN 或 WM_KEYUP 消息。4)、顯示模塊將顯示從操作對象上可以分為 5 個部分:屏幕、光標、字符顯示、滾屏、圖形。仿真上層:l根據(jù)通訊方式的不同,TTY 顯示一個國標碼/ASCII 碼/ID 碼/CNC 碼。l 能在光標的當前位置以當前屬性和字符集顯示一個 ASCII 字符l 屏幕開關(guān)顯l 背景色設(shè)置仿真 driver 層
28、:l 初始化顯示。主要是創(chuàng)建光標、設(shè)置光標的屬性、顯示光標、設(shè)置屏幕行數(shù)和列數(shù)。l 光標控制:設(shè)置光標屬性、位置顯示光標屬性、位置移動光標得到光標的位置和光標左右的字符。GUI 層:清除光標支持多個光標l光標驅(qū)動:創(chuàng)建光標、釋放(清除)光光標屬性(點/線、固定/閃爍/消隱)支持l屏幕驅(qū)動開/關(guān)顯、節(jié)電模式支持分辨率、背景色設(shè)置支持l字符顯示驅(qū)動西文、漢字、漢字左半、漢字右半顯示支持自造漢字顯示支持字符屬性(上/下/左/右劃線、高/低亮/正常、倍高/寬、顯示/消隱)支持l滾屏驅(qū)動l圖形驅(qū)動向上滾屏、向下滾屏支持顯存數(shù)據(jù)操作支持點、線、圓等基本圖形操作支持5)、打印模塊仿真上層l選擇打印機l打印機
29、字庫打印l終端字庫打印l正常打印拷貝屏幕l自動打印屏幕上的一行l(wèi)透明打印l條碼打印一個字符l退出打印l打印出錯時彈出模態(tài)窗口,顯示提示信息,用鍵盤或鼠標選擇 Y/N來決定繼續(xù)打印/退出打印。仿真 driver 層l得到當前行列的 VRAM 地址l打印字符屬性處理l將顯示點陣轉(zhuǎn)換成打印點陣l打印一個字符(串)到設(shè)置的打印端口。最多查詢打印端口 0x7ff次,若就緒就送打印,若打印機錯退出。l打印測試GUI 層l后臺打印字符緩沖區(qū)支持l并口支持6)、外設(shè)、通訊外設(shè)模塊和通訊模塊的程序結(jié)構(gòu)以及兩個模塊之間的關(guān)系如下圖所示:仿真上層仿真 driver 層網(wǎng)絡(luò) API串口 APIGUI 層外設(shè)模塊仿真上
30、層:l打開/關(guān)閉端口l打開/關(guān)閉密碼鍵盤、讀密碼鍵盤的數(shù)據(jù)向主機發(fā)送l輔串口、透明打印等命令分析l向輔串 1n 輸出數(shù)據(jù)l讀輔串口數(shù)據(jù)向主機發(fā)送l串口拷屏l串口打印一個字符通訊模塊仿真上層:l通訊初始化l通過主通訊口(主串口或網(wǎng)絡(luò)口)以非阻塞方式從主機讀數(shù)據(jù)。l通過主通訊口(主串口或網(wǎng)絡(luò)口)以阻塞方式從主機讀數(shù)據(jù)。l寫一個字節(jié)數(shù)據(jù)到主通訊口(串口或網(wǎng)絡(luò)口)l寫一串數(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 功能
31、支持l 打開/關(guān)閉一個 Telnet 會話l 從一個 Telnet 會話中讀數(shù)據(jù)l 向一個 Telnet 會話中寫數(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)閉一個網(wǎng)絡(luò)聯(lián)接l 從網(wǎng)絡(luò)讀數(shù)據(jù)l 通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)7) 、輸入入法模塊輸入法放嵌入 GUI 層,并支持輸入法掛接接口設(shè)計。l 切換輸入狀態(tài)l 切換輸入法l 取得輸入鍵的 Ascii 碼,查表取得相應(yīng)的漢字內(nèi)碼,把漢字的內(nèi)碼發(fā)送給提示行,用數(shù)字鍵選擇漢字l 自造漢字和短語輸入支持l 提供修改默認輸入法的 API8) 、NVR 模塊仿真 dri
32、ver 層:l 讀取/保存終端參數(shù)l 讀取/保存自造短語l 讀取/保存自造漢字GUI 層:l 讀 NVR 到緩沖區(qū)l 保存緩沖區(qū)到 NVRl 從緩沖區(qū)中讀數(shù)據(jù)l NVR 校驗讀l NVR 校驗寫l 讀取自造短語、自造漢字9)、自檢模塊l 鍵盤測試l 串口測試l 并口測試l 網(wǎng)絡(luò)測試l 循環(huán)自檢l 演示測試l 報告自檢結(jié)果二、 流程設(shè)計在以上設(shè)計的基礎(chǔ)上,我們采用 SDT 方法作如下基于消息驅(qū)動機制數(shù)據(jù)流程的詳細流程設(shè)計(圖見基于消息驅(qū)動機制數(shù)據(jù)流程設(shè)計):基于消息驅(qū)動機制數(shù)據(jù)流程設(shè)計消息循環(huán)消息處理流程PeekMessage()查詢消息隊列消息分發(fā)出口系統(tǒng)公用消息隊列 WM_LBUTTONUP
33、主桌WM_KEYDOWN面消息處理繪制主桌面WM_COMMAND業(yè)務(wù)進程WM_COMMAND調(diào)度WM_SETFOCUS啟動當前應(yīng)用,切換到前臺,申請當前應(yīng)用的 socket號處理鍵盤連發(fā)系統(tǒng)調(diào)用 select()輸入法處理查詢所有公共讀鼠標button以及位置狀態(tài)檢測網(wǎng)絡(luò)狀態(tài)入口鼠標消息WM_FDINPUT/OUPUT檢測串口狀態(tài)WM_FDINPUT/OUPUT WM_KEYDOWN終端仿真消息WM_KEYUP處理 1KbPro傳統(tǒng)終端仿真處理設(shè)備和注冊設(shè)備讀鍵盤狀態(tài)鍵盤消息 WM_CHARSysOut顯示模塊全局上下文共享WM_FDINPUTWM_CREATE讀取串口或網(wǎng)絡(luò)數(shù)據(jù)獲取上下文釋放
34、上下文注冊sockfd行屬性表點陣讀?。〝?shù)組方式)仿真顯示上層GUI顯示驅(qū)動WM_PAINT屏幕、狀態(tài)行刷新如果需要,網(wǎng)絡(luò)初始化顯示模塊VRAM字符屬性變換終端到屏末引起逐行memmove方式滾屏操作DRAM操作仿真消息處理 N13如上圖所示我們可取得如下結(jié)論:1、流程設(shè)計的幾個基本原則:l 消息循環(huán)的速度必須足夠快,也就是說從事件的檢測>完成消息的轉(zhuǎn)換>進入消息隊列>從消息隊列取出分發(fā)>相應(yīng)消息回調(diào)函數(shù)處理完成>事件檢測 這整個循環(huán)必需在某個限定時間內(nèi)完成,才不會造成事件丟失和消息處理滯后,應(yīng)用不能有長時間的某個消息處理流程。l 由于整個應(yīng)用系統(tǒng)共享一個消息隊列
35、,所有消息處理在不非法操作造成系統(tǒng)崩潰的基礎(chǔ)上都必須能夠正確返回,否則某次消息的處理會造成消息循環(huán)停止,造成系統(tǒng)停止。2、性能分析:我們的傳統(tǒng)終端 810C/910/920 等型號和 IP1000/2000 都是采用 CLPS-7500 硬件平臺,分析兩者的流程,我們可作出如下圖所示對比分析,為了支持圖形界面、多任務(wù)、網(wǎng)絡(luò),我們不得不在我們的系統(tǒng)中引入 OS、GUI,隨之而來的則是許多中間流程的引入,使我們整機效率和處理速度等性能的降低,所以我們 IP2000 功能指標如刷屏、滾屏、處理速度等所能達到的終極目標就是采用同類型 CPU 的傳統(tǒng)終端,一般來說,達到 80左右當屬正常。一般來說,可考
36、慮如下角度優(yōu)化影響性能指標的流程:l頻繁在內(nèi)核態(tài)和用戶態(tài)之間切換l各層次之間接口混亂、冗余l(xiāng)GUI 操作效率低下l多任務(wù)各進程之間數(shù)據(jù)通訊效率低下lBIOS 層算法、代碼效率低下對比分析傳統(tǒng)終端網(wǎng)絡(luò)終端外部中斷事件外部中斷事件終端仿真AP主循環(huán)事件查詢>分發(fā)>終端仿真數(shù)據(jù)分析>處理OS 內(nèi)核處理內(nèi)核態(tài)OSBIOS消息 循環(huán)(查 詢、組裝、分發(fā))終端仿真數(shù)據(jù)分析>處理GUIAP其他出口顯示BIOS用戶態(tài)其他出口顯示BIOSBIOS3、IP1000 目前所存在的幾個未解決問題的初步分析l 系統(tǒng)處理速度較慢系統(tǒng)處理速度主要由數(shù)據(jù)通訊方法、顯示、滾屏等因素綜合構(gòu)成,這個指標的瓶
37、頸也就要根據(jù)實際情況分析,舉個例子:假如我們采用 Nano-x 方案實現(xiàn)多任務(wù),則在 SERVER 和 CLIENT 之間數(shù)據(jù)傳遞的低效的套接字方法就成為了我們速度的瓶頸,我們采用了較高效率的共享內(nèi)存方式傳遞數(shù)據(jù),則顯示、滾屏 BIOS 的算法就成為我們速度提高的關(guān)鍵,而且從 IP1000 串口聯(lián)機和網(wǎng)絡(luò)聯(lián)機處理速度的差異分析,我們也可得出在 AP 層數(shù)據(jù)處理的方法和訪問上下文的機制也可成為影響性能的關(guān)鍵:網(wǎng)絡(luò)聯(lián)機一個 WM_FDINPUT 消息對應(yīng)處理一個數(shù)據(jù)包,而串口一個 WM_FDINPUT 消息則只處理單個數(shù)據(jù),造成串口聯(lián)機處理速度很慢。l 滾屏、刷新速度較慢刷新速度主要是由終端仿真的顯示結(jié)構(gòu)和 GUI 字符顯示的方法(算法)決定,滾屏速度則與滾屏所采用的機制(行滾? 屏滾?)關(guān)系最大,當然也與系統(tǒng)數(shù)據(jù)傳遞的速度及顯示底層的實現(xiàn)有關(guān),我們可從改進這三個方面作為突破口,可望有較大性能提高。此外如果在維持 16 點陣不變的情況下,采
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北國土資源職業(yè)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 商業(yè)綜合體改造抵押協(xié)議
- 2025年度養(yǎng)豬場動物疫病監(jiān)測與預(yù)警協(xié)議
- 2025年度個人信息保護與信息安全保密協(xié)議書
- 二零二五年度食品飲料企業(yè)財務(wù)代理記帳服務(wù)合同
- 2025年廣西自然資源職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案一套
- 商業(yè)廣場改造貸款協(xié)議
- 2025年度公司終止職工勞動合同解除與就業(yè)援助合同
- 2025年北京綠色生態(tài)居住區(qū)拆遷補償與生態(tài)修復(fù)合同
- 2025年度商鋪轉(zhuǎn)租定金及租賃期終止處理合同
- mks spectra介紹殘余氣體分析儀
- 腹腔鏡下闌尾切除術(shù)護理課件
- 《抖音生活服務(wù)服務(wù)商合作手冊》
- 語文教學(xué)設(shè)計(教案目標)
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 無形資產(chǎn)評估完整版課件
- 一體化學(xué)工服務(wù)平臺、人事管理系統(tǒng)、科研管理系統(tǒng)建設(shè)方案
- 市場營銷學(xué)課后習題與答案
- 常暗之廂(7規(guī)則-簡體修正)
- 制冷系統(tǒng)方案的設(shè)計pptx課件
- 修心七要原文
評論
0/150
提交評論