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