當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于嵌入式的故障診斷專家系統(tǒng)

 電子設(shè)備的故障診斷系統(tǒng)大多采用由傳感器、工業(yè)PC、工業(yè)以太網(wǎng)、遠(yuǎn)程專家組成的診斷模式。現(xiàn)有診斷現(xiàn)場儀器眾多、連接復(fù)雜,使得系統(tǒng)可靠性和穩(wěn)定性難以得到保證。另一方面,要求診斷人員具備專業(yè)知識,其中包括各類傳感器的固定、連接與信號處理,難以實(shí)現(xiàn)“現(xiàn)場無人,遠(yuǎn)程診斷”目標(biāo)。因此有必要從現(xiàn)有的硬件和軟件組成模式的角度出發(fā),探索一種新的診斷系統(tǒng)組成模式。

     本文設(shè)計(jì)了基于嵌入式的故障診斷專家系統(tǒng),使得對電子設(shè)備的檢測及維修變得更為方便有效?!?/p>

   本文根據(jù)實(shí)際需要選取Windows CE.Net作為本系統(tǒng)的操作系統(tǒng)平臺。在Windows CE嵌入式系統(tǒng)的平臺開發(fā)中,設(shè)備驅(qū)動程序的開發(fā)是其很重要的一部分,它們用于驅(qū)動嵌入式系統(tǒng)硬件平臺上的各個設(shè)備接口。根據(jù)定制的硬件系統(tǒng),本文對操作系統(tǒng)的鍵盤驅(qū)動程序、觸摸屏、LCD驅(qū)動、電源管理及其它的相關(guān)驅(qū)動程序進(jìn)行了開發(fā)。

  1 Windows CE.Net操作系統(tǒng)

  Windows CE.Net是微軟公司在嵌入式操作系統(tǒng)市場上一個重要產(chǎn)品,第1個版本于1996年發(fā)布。Windows CE.Net是針對有限資源的平臺而設(shè)計(jì)的32位、多線程、完整優(yōu)先權(quán)、多任務(wù)的嵌入式操作系統(tǒng)。

  Windows CE.Net一個突出的特點(diǎn)——模塊化。利用這個特點(diǎn),選擇、組合和配置Windows CE.Net的各個模塊和組件來創(chuàng)建用戶版的操作系統(tǒng),即Windows CE.Net的模塊化設(shè)計(jì)使得它能夠在大量的平臺上定制使用,從客戶電子設(shè)備到專用的工業(yè)控制器。

  Window CE.Net操作系統(tǒng)的基本內(nèi)核需要至少200 kB的ROM,它支持Win32 API子集、多種用戶界面硬件、多種的串行和網(wǎng)絡(luò)通訊技術(shù)、COM/OLE和其他的進(jìn)程間通訊的先進(jìn)方法,借助Windows CE開發(fā)者就能利用大量其他的編程資源、工具、軟件例子以及文檔來進(jìn)行Windows CE.Net開發(fā)工作。Micmsoft公司為Windows CE.Net提供了PlatformBuilder和Embedded Visual Studio開發(fā)工具。

  Windows CE.Net有五個主要的模塊:內(nèi)核模塊、內(nèi)核系統(tǒng)調(diào)用接口模塊、文件系統(tǒng)模塊、圖形窗口和事件子系統(tǒng)模塊、通訊模塊。其最大的特點(diǎn)是能提供與PC機(jī)類似的圖形界面和主要的應(yīng)用程序。Windows CE.Net嵌入式操作系統(tǒng)的界面顯示大多數(shù)在Windows里出現(xiàn)的標(biāo)準(zhǔn)部件,包括桌面、任務(wù)欄、窗口、圖標(biāo)和控件等。這樣只要是對PC機(jī)上的Windows比較熟悉的用戶,可以很快地使用基于Windows CE.Net嵌入式操作系統(tǒng)的嵌入式設(shè)備。

  2 WindOWS CE.Net平臺下的驅(qū)動開發(fā)

  Windows CE.Net的分層結(jié)構(gòu)給驅(qū)動程序的開發(fā)帶來極大的方便,使得驅(qū)動開發(fā)只需要針對不同的BSP進(jìn)行修改,很大程度上減少了開發(fā)的工作量。而完成這一工作需要了解兩部分的內(nèi)容,分別是:Windows CE.Net的中斷機(jī)制和Windows CE.Net.的層次模型。

  2.1 Windows CE.Net的中斷機(jī)制

  Windows CE.Net系統(tǒng)的大多數(shù)外圍設(shè)備都是通過產(chǎn)生中斷從操作系統(tǒng)獲得服務(wù)的,如PC卡、板上定時(shí)器、鍵盤、觸摸屏等。當(dāng)設(shè)備需要驅(qū)動程序服務(wù)時(shí),基于Windows CE.Net的平臺使用中斷信號通知操作系統(tǒng)。

  Windows CE.Net把中斷處理分成兩部分:內(nèi)核模式的中斷服務(wù)程序(Interrupt Serice Routine,ISR)和用戶模式的中斷服務(wù)線程(Int-errupt Setice Thread,IST)。ISR通常都比較短,是快速的匯編代碼,一般在0AL層代碼中,能夠直接訪問硬件注冊表。ISR的唯一任務(wù)就是向操作系統(tǒng)返回邏輯中斷標(biāo)志符。中斷服務(wù)線程(IST)是用戶模式線程,在IST中完成大多數(shù)中斷處理。IST在大多數(shù)時(shí)間里是空閑的,只有當(dāng)從函數(shù)WaitForSingeObiect()得到中斷已經(jīng)發(fā)生的信號后,IST被喚醒去處理它需要處理的中斷。通過相關(guān)聯(lián)的帶有中斷標(biāo)志的事件可以完成這些。IST需要首先創(chuàng)建一個事件并且用邏輯中斷與它相聯(lián)系。當(dāng)中斷過程完成時(shí),IST應(yīng)該通知內(nèi)核重新使能中斷。

  2.2 Windows CE.Net的驅(qū)動模型

  Windows CE.Net所有驅(qū)動都以動態(tài)鏈接庫(DLL)的形式存在,在驅(qū)動的實(shí)現(xiàn)過程中可以調(diào)用Windows CE.Net支持的所有標(biāo)準(zhǔn)API函數(shù)。

  Windows CE.Net的驅(qū)動程序有2種模型:本機(jī)設(shè)備驅(qū)動程序和流接口設(shè)備驅(qū)動程序。

  1)本機(jī)設(shè)備驅(qū)動 在Windows CE.Net中.通用LED驅(qū)動、電源驅(qū)動、顯示驅(qū)動、鍵盤驅(qū)動等都可以用本機(jī)設(shè)備驅(qū)動來開發(fā)。微軟提供了定制接口的方式來支持內(nèi)部設(shè)備驅(qū)動程序,這意味著絕大多數(shù)開發(fā)人員不必大量地編寫本機(jī)設(shè)備驅(qū)動代碼。但把Windows CE.Net定制到新平臺的原始設(shè)備制造商(OEM)除外,它們可以創(chuàng)建自己的本機(jī)設(shè)備驅(qū)動程序到新的平臺。通常,當(dāng)Windows CE.Net系統(tǒng)啟動時(shí),本機(jī)設(shè)備驅(qū)動程序就被加載到系統(tǒng)的內(nèi)存中。

  2)流接口驅(qū)動程序 在Windows CE.Net中,流接口驅(qū)動程序以DLL形式存在,是運(yùn)行在用戶模式下的動態(tài)連接庫,由一個叫做設(shè)備管理程序的特殊應(yīng)用程序加載、管理和卸載。與具有單獨(dú)目的接口的內(nèi)部設(shè)備驅(qū)動程序相比,所有流接口驅(qū)動程序使用同一個接口并調(diào)用同一個函數(shù)集——流接口函數(shù)。流接口驅(qū)動程序的主要任務(wù)是把外設(shè)的使用傳遞給應(yīng)用程序,這是通過把設(shè)備表示為文件系統(tǒng)的一個特殊文件實(shí)現(xiàn)的。在流接口驅(qū)動程序模型中,應(yīng)用程序通過文件系統(tǒng)的API函數(shù)調(diào)用流接口函數(shù),然后由流接口驅(qū)動程序調(diào)用本機(jī)驅(qū)動或者通過設(shè)備管理器與系統(tǒng)內(nèi)核或外圍設(shè)備打交道。每個流接口驅(qū)動程序必須實(shí)現(xiàn)一組標(biāo)準(zhǔn)的函數(shù),用來完成標(biāo)準(zhǔn)的文件I/O函數(shù)和電源管理函數(shù),這些函數(shù)提供給Windows CE.Net操作系統(tǒng)的內(nèi)核使用。一般,這些函數(shù)被稱為流接口驅(qū)動程序的DLL接口。

  3 驅(qū)動程序的開發(fā)

  在Windows CE嵌入式系統(tǒng)的平臺開發(fā)中,設(shè)備驅(qū)動程序的開發(fā)是其很重要的一部分,它們用于驅(qū)動嵌入式系統(tǒng)硬件平臺上的各個設(shè)備接口。下面針對在項(xiàng)目中完成的幾個主要的設(shè)備驅(qū)動,來了解一下具體設(shè)備驅(qū)動程序的開發(fā)過程。

  3.1 觸摸屏

  在嵌入式故障診斷專家系統(tǒng)中,為了方便用戶輸入數(shù)據(jù),進(jìn)行方便的人機(jī)交互,觸摸屏是必不可少。觸摸屏按技術(shù)原理分為:電熔電感觸摸屏、紅外線觸摸屏、電阻式觸摸屏、矢量壓力傳感式觸摸屏等。S3C2410的觸摸屏采用的是電阻式觸摸屏。S3C2410支持觸摸屏接口,它由一個觸摸屏面板,四個外部晶體管,一個外部電源,通道AIN[7]及通道AIN[5]等組成,觸摸屏接口如圖l所示。主要的設(shè)計(jì)流程如圖2所示。

  

[!--empirenews.page--]
在本設(shè)計(jì)中主要完成A/D的轉(zhuǎn)換、觸摸屏上觸摸點(diǎn)坐標(biāo)的顯示、XY軸方向的確定以及有效坐標(biāo)范圍的確定。整個程序設(shè)計(jì)包括環(huán)境變量初始化、對LCD控制器和串行口的初始化以及觸摸屏控制與顯示程序。觸摸屏的控制與顯示程序包括串口數(shù)據(jù)傳送、液晶顯示控制、觸摸屏定位、中斷處理程序等。中斷處理程序中又包括A/D轉(zhuǎn)換、坐標(biāo)計(jì)算、坐標(biāo)檢測、坐標(biāo)存儲與顯示。

  3.2 鍵盤驅(qū)動

  3.2.1 功能要求

  考慮到設(shè)備提供的面積有限,設(shè)計(jì)5x5矩陣鍵盤滿足實(shí)際需求。

  1)實(shí)現(xiàn)矩陣鍵盤上所定義的各個按鍵功能。①方向鍵:上、下、左、右;②功能鍵:確定、取消、菜單,通信、導(dǎo)航;③數(shù)字鍵:0~9;④擴(kuò)展功能鍵:星號鍵,井號鍵;

  2)給應(yīng)用程序提供接口。其中包括:

 ?、侔存I消息包括WM_KEYD0WN消息,WM_KEYUP消息,WM_CHAR消息。②按鍵延時(shí)要求當(dāng)用戶按下某個按鍵(電源除外),發(fā)送第1條WM_KEYDO-WN消息。對于上、下、左、右鍵,按鍵被按下累計(jì)400 ms后,發(fā)送第2條WM_KEY_DOWN消息,此后每隔100 ms發(fā)送l條WM_KEYDOWN消息,直至按鍵被放開。

  3.2.2 設(shè)計(jì)步驟

  設(shè)計(jì)步驟如下:

  1)初始化:初始化主要是進(jìn)行中斷設(shè)置,對鍵盤中斷、GPIO端口中斷屏蔽位和掛起位進(jìn)行設(shè)置。

  2)獲得掃描碼GetScanCode()函數(shù)。

  3)獲取虛擬鍵值:通過修改一個影射表,影射表的內(nèi)容主要是掃描碼與虛擬鍵之間的對應(yīng)關(guān)系。

  4)布設(shè)管理。

  3.3 LCD驅(qū)動

  LCD主要用于顯示文本和圖形信息。液晶顯示屏具有輕薄、體積小、低功耗、無輻射、平面直角顯示等特點(diǎn)。液晶顯示屏按原理分為STN(超扭曲向列)和TFT(薄膜晶體管)2種。

  GDI(圖形設(shè)備顯示接口)是一個系統(tǒng)組件,它用來加載和調(diào)用設(shè)備驅(qū)動。在Windows CE中,GDI包含在圖形事件用戶界面中。在Windows CE中,顯示驅(qū)動是一個本機(jī)驅(qū)動,那就意味著有常用的接口,這種接口會給顯示接口提供一組函數(shù)集。所以將不會有比較復(fù)雜的操作。Win-dows CE顯示驅(qū)動只有唯一的一個函數(shù)DrvEnableDriver()需要導(dǎo)出,這個函數(shù)將會在驅(qū)動加載的時(shí)候被GDI所調(diào)用,同時(shí)把函數(shù)指針返回給其它的DDI函數(shù)。開發(fā)的過程中需要注意顯示設(shè)備使用的是線性的幀緩沖,這樣由CPU直接控制的顯示內(nèi)存就需要是連續(xù)的。微軟提供了一組C++類叫GPE(圖形原始引擎)。對于圖形的操作都是建立在這個類上。

  IntNumModes():返回顯示驅(qū)動所支持的顯示模式數(shù)量。

  SCODE GetModeInfo(GPEMode*pMode,int modeNo):返回具體顯示模式的信息,如顯示寬度和高度,一個像素用幾位來表示。

  SCODE SetMode(int modeId,HPALETTE*pPalettetHandle):設(shè)置顯示模式。對于不同的顯示設(shè)備,我們都需要用這個函數(shù)來設(shè)置顯示設(shè)備的顯示模式。

 

  SetPointerShape():設(shè)置光標(biāo)位圖。

  MovePointer():移動光標(biāo)。

  其他的函數(shù)接口就不一一介紹,可以參考源代碼。

  4 結(jié)束語

  本文以Windows CE作為目標(biāo)平臺,實(shí)現(xiàn)了在WindowsCE驅(qū)動程序設(shè)計(jì)時(shí),按照先確定要設(shè)計(jì)的驅(qū)動程序類型是本地驅(qū)動程序還是流接口驅(qū)動程序,再選擇驅(qū)動程序開發(fā)方法使用分層驅(qū)動程序設(shè)計(jì)。實(shí)際運(yùn)行表明,設(shè)計(jì)的操作系統(tǒng)的鍵盤驅(qū)動程序、觸摸屏、LCD驅(qū)動、電源管理的驅(qū)動程序開發(fā)為界面程序的開發(fā)提供了一個穩(wěn)定良好的環(huán)境,大大提高了開發(fā)的速度。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉