《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 基于ARM和MiniGUI的車載指控系統(tǒng)人機(jī)接口部分的設(shè)計
基于ARM和MiniGUI的車載指控系統(tǒng)人機(jī)接口部分的設(shè)計
電子發(fā)燒友
摘要: 一個車載指控平臺的功能主要體現(xiàn)在以下幾個方面:監(jiān)控,、顯示車輛的技術(shù)狀態(tài);車際間的指控、通信;車輛的定位,、導(dǎo)航;各種文電處理等,。本文將介紹一個基于ARM和MiniGUI的車載指控系統(tǒng)人機(jī)接口部分的設(shè)計,,這個系統(tǒng)初步實現(xiàn)了上述車載指控平臺的主要功能。
關(guān)鍵詞: ARM MiniGUI 人機(jī)接口 車載
Abstract:
Key words :

  0 引言

  隨著武器裝備信息化程度的提高,,各種嵌入式信息裝備得到了廣泛應(yīng)用,。作為未來戰(zhàn)場主要作戰(zhàn)平臺的各種戰(zhàn)斗車輛,其車載指揮控制平臺的設(shè)計得到了廣泛重視,。

  一個車載指控平臺的功能主要體現(xiàn)在以下幾個方面:監(jiān)控,、顯示車輛的技術(shù)狀態(tài);車際間的指控、通信;車輛的定位,、導(dǎo)航;各種文電處理等,。本文將介紹一個基于ARMMiniGUI的車載指控系統(tǒng)人機(jī)接口部分的設(shè)計,這個系統(tǒng)初步實現(xiàn)了上述車載指控平臺的主要功能,。

  l 軟硬件的選型

  受車輛內(nèi)部空間的限制,,指揮控制終端必須做到小型化,嵌入式,。ARM作為一種已經(jīng)在多個領(lǐng)域得到非常廣泛應(yīng)用的架構(gòu),,這里采用它是一個很好的選擇。該課題選擇在國內(nèi)有著較廣泛市場的SAMSUNG公司的S3C2410芯片作為CPU,。S3C2410芯片主要應(yīng)用于手持設(shè)備或者其他對功耗,、成本、性能有較高要求的場合,。為了降低整機(jī)成本,,該芯片內(nèi)置了各16 KB的指令和數(shù)據(jù)緩存,、MMU、UART,、ADC,、LCD控制器,I2C總線接口,、IIS總線接口,、USB主從設(shè)備支持,、觸摸屏接口等,,這種設(shè)計提高了系統(tǒng)的集成度,也給系統(tǒng)開發(fā)提供了極大的便利,。

  系統(tǒng)軟件可以有很多選擇,,因為該芯片內(nèi)置MMU,因此可以支持Windows CE,,Linux,,Palm OS和VxWorks等多種主流嵌入式操作系統(tǒng)。車載指控平臺對實時性要求不高,,因此這里選擇嵌入式Linux作為操作系統(tǒng),。嵌入式Linux具有源碼開放、成本低,、應(yīng)用軟件豐富等特點(diǎn),,因此Linux和ARM是許多低成本的應(yīng)用中首選的組合。

  作為指控終端,,必然對用戶圖形界面有特殊的要求,,該項目選擇飛漫公司的MiniGUI作為圖形引擎。MiniGUI是一個專門面向嵌入式系統(tǒng)的圖形用戶界面支持系統(tǒng),,它為應(yīng)用程序定義了一組輕量級的窗口和圖形設(shè)備接口,。利用這些接口,每個應(yīng)用程序可以建立多個窗口并在這些窗口中創(chuàng)建各種控件,。在軟件體系中,,它介于內(nèi)核和應(yīng)用程序之間,在此將利用MiniGUI來完成用戶圖形界面的編程,。

  2 硬件設(shè)計

  ARMS3C2410芯片的應(yīng)用電路有許多成熟的設(shè)計范例;在設(shè)計階段,,市面上也有很多的開發(fā)板可供選用。該項目選用杭州立宇泰公司的ARM SYS2410開發(fā)板作為開發(fā)的硬件平臺,。

  該開發(fā)板采取核心板和擴(kuò)展板分離的結(jié)構(gòu),,提供了大部分的外設(shè)接口電路,并且有200個引出腳,,引出了CPU上的大部分I/0端口,,這樣做為后續(xù)的開發(fā)工作提供了便利,。

  2.1 鍵盤矩陣電路

  該項目的指揮控制終端功能可以分為6項。每項選中后,,為便于輸入或選擇子條目,,增加10個數(shù)字鍵,另外還需要確定鍵,、取消鍵,,再加上6個功能鍵,一共是24個鍵,。因為鍵的數(shù)目較多,,將這些鍵設(shè)計成一個行列式鍵盤矩陣(見圖1)。

  

 鍵盤矩陣電路 www.elecfans.com

 

  結(jié)合開發(fā)板的電路結(jié)構(gòu),,鍵盤矩陣的列輸入端口使用GPE5~GPElO六個通用I/0口線,,行輸出端口采用GPEll~GPEl4四個通用I/0口線,在行線和列線的交點(diǎn)接入按鍵開關(guān),。

  鍵盤掃描的原理是,,按照有規(guī)律的時間間隔察看鍵盤矩陣,以確定是否有鍵按下,。鍵盤掃描可以采取專用芯片,,也可以采用軟件方法實現(xiàn),該項目采用軟件方法,。

  2.2 顯示驅(qū)動電路

  指揮控制終端輸入/輸出設(shè)備的第二個重點(diǎn)就是顯示設(shè)備,。ARM芯片內(nèi)置有LCD控制器,可以方便地實現(xiàn)顯示功能,。但是ARM LCD控制器支持的是TTL電平的RGB分量顯示,,而目前市場上較大尺寸的工控液晶屏大多是LVDS電平接口,因此需要接口電路,。

  另一種解決方案是將ARM開發(fā)板TTL電平的RGB信號轉(zhuǎn)換成VGA信號,,這樣顯示器的選擇更加隨意,而且降低了成本,。RGB信號轉(zhuǎn)換成VGA信號可采用專用的AD芯片,,如ADV7120,ADV7123等,。

  3 軟件設(shè)計

  軟件設(shè)計需要完成兩個方面的工作:一是驅(qū)動程序編寫;二是GUI編程,。

  3.1 鍵盤矩陣驅(qū)動程序的編寫

  開發(fā)板對自己所提供的硬件一般都提供相應(yīng)的驅(qū)動程序,自行開發(fā)的外設(shè)電路一般需要自己編寫驅(qū)動程序,。設(shè)備驅(qū)動程序是Linux內(nèi)核的重要部分,,操作系統(tǒng)只有通過驅(qū)動程序才能夠控制外設(shè)的硬件行為。

  在系統(tǒng)內(nèi)部,,I/0設(shè)備的存取是通過一系列的入口點(diǎn)來進(jìn)行的,,字符型設(shè)備提供以下入口點(diǎn):open,,close,read,,write,,ioctl;它們分別對應(yīng)打開設(shè)備、關(guān)閉設(shè)備,、讀設(shè)備,、寫設(shè)備以及其他操作。這些入口點(diǎn)的定義是通過一個重要的數(shù)據(jù)結(jié)構(gòu)file_operations來完成的,。

  鍵盤驅(qū)動程序編制的要點(diǎn)有:

  (1)定義一個6×4的健值矩陣,,作為輸出,按下一個按鍵,,得到對應(yīng)的鍵值;

  (2)初始化時設(shè)置所用到的I/O端口的讀/寫模式,,行線為寫,,列線為讀;

  (3)定義鍵盤掃描函數(shù)scan_kbd(),。它的算法是:初始化時所有的行線置低電平,如果沒有鍵按下,,列線都將讀到高電平,。否則,任何鍵的閉合將造成該列成為低電平,。

  (4)在read入口點(diǎn),,也就是file_operations結(jié)構(gòu)定義的read方法中,調(diào)用scan_kbd(),。這樣,,驅(qū)動程序就可以定時掃描幾個I/O端口,獲取鍵值,,然后通過putuser發(fā)送到用戶地址空間,。

  設(shè)置I/O模式,讀/寫I/0端口的位,,可以通過頭文件S3C2410.h中專門定義的宏set_gpio_ctrl,,write_gpio_bit,read_gpio_bit來進(jìn)行,。

  鍵盤驅(qū)動程序經(jīng)過編譯后,,可以作為一個設(shè)備文件編譯入內(nèi)核,也可以采取模塊動態(tài)加載的方式,。

  3.2 MiniGUl IAL引擎的實現(xiàn)

  通常,,MiniGUI在使用前應(yīng)針對目標(biāo)系統(tǒng)的特點(diǎn)進(jìn)行配置和編譯,例如指定目標(biāo)操作系統(tǒng),、運(yùn)行模式,、圖形引擎和輸入引擎,、字體類型、字符集,、所支持的控件類等,。該課題中,因為采取了自行設(shè)計的鍵盤作為輸入設(shè)備,,因此最重要的配置是輸入引擎(input abstract lay-er,,IAL)。

  抽象層是一組不依賴于硬件的抽象接口,,其作用類似于操作系統(tǒng)的驅(qū)動程序,,將底層的硬件操作與操作系統(tǒng)隔離,這樣做簡化了在不同平臺上移植的難度,。開發(fā)特定的鍵盤輸入,,主要是完成兩部分工作:鍵盤驅(qū)動程序設(shè)計和鍵盤輸入引擎開發(fā)。前者負(fù)責(zé)從鍵盤接收原始輸入事件和數(shù)據(jù),,后者負(fù)責(zé)將原始的輸入事件和數(shù)據(jù)轉(zhuǎn)換成MiniGUl抽象的鍵盤事件和數(shù)據(jù),。

  在代碼實現(xiàn)上,MiniGUI通過INPUT數(shù)據(jù)結(jié)構(gòu)來表示輸入引擎,。該結(jié)構(gòu)中指定了若干函數(shù)指針,,編寫特定的輸入引擎,主要就是編碼實現(xiàn)INPUT結(jié)構(gòu)中的各個函數(shù),。新的IAL引擎編寫完成后,,應(yīng)加入MiniGUI進(jìn)行配置,然后對MiniGUI進(jìn)行編譯,。在工程實踐中,,一種比較簡便的方法是對MiniGUI已經(jīng)實現(xiàn)的引擎進(jìn)行修改。

  3.3 圖形界面設(shè)計

  MiniGUI是一個圖形用戶界面支持系統(tǒng),,通常的GUI編程概念均適用于MiniGUI編程,,如窗口和事件驅(qū)動編程等。嵌入式系統(tǒng)完成的功能一般比較單一,,對于該系統(tǒng)而言,,重點(diǎn)在于實現(xiàn)人機(jī)接口部分,因此只需要輪詢用戶的按鍵輸入即可,。如圖2所示,。

  

  MiniGUI中有三種窗口類型:主窗口、對話框和控件窗口,。每一個MiniGUI應(yīng)用程序一般都要創(chuàng)建一個主窗口,,作為應(yīng)用程序的主界面或開始界面。MiniGUI包含有許多控件類,如靜態(tài)框,、按鈕,、列表框、編輯框,、進(jìn)度條等,,這些控件類可以實現(xiàn)和Windows標(biāo)準(zhǔn)控件類似的效果。

  最重要的幾個函數(shù)是:

  其中,,WndProc是這個窗口的消息處理函數(shù),。在此,對消息循環(huán)進(jìn)行初立即可,。例如:

 

  

 

  添加了鍵盤驅(qū)動,,修改了MiniGUI的輸入引擎后,應(yīng)用程序就可以響應(yīng)鍵盤消息,,處理各種事件,。除了對標(biāo)準(zhǔn)控制的支持外,MiniGUI還提供了圖形設(shè)備接口(GDI)的支持,。通過GDI,,程序可以在計算機(jī)屏幕上進(jìn)行圖形輸出,包括基本繪圖和文本輸出,。利用這種手段,,可以繪制指控終端需要的儀表、各種表格,。

  3.4 其他問題

  在該課題的開發(fā)過程中,還遇到了一些其他的問題,,概述如下:

  (1)顯示的色彩深度問題,。作為指控終端,該課題設(shè)計的顯示分辨率為640×480,,如果是16位以上的色深,,對ARM處理器將是一個比較大的負(fù)擔(dān),會出現(xiàn)畫面的抖動,,不連貫,。處理的方法是將色深設(shè)置為8位,這需要通過修改Linux的顯示驅(qū)動來解決,。

  (2)鍵盤的防抖問題,。按鍵的抖動問題是一類常見問題,可以通過軟件延時或者其他的手段進(jìn)行處理,。

  (3)終端功能的進(jìn)一步豐富,。該課題只實現(xiàn)了終端的人機(jī)界面,但是作為一個完整意義的終端,,還應(yīng)該考慮終端之間的聯(lián)網(wǎng),、數(shù)據(jù)傳輸,,終端和工況采集裝置之間的硬件接口、數(shù)據(jù)交換等問題,。這些需要進(jìn)一步開發(fā)利用ARM芯片上的其他外設(shè),,這是該課題下一步的目標(biāo)。

  4 結(jié)語

  ARM作為一款性價比突出的嵌入式芯片,,與圖形系統(tǒng)MiniGUI相結(jié)合,,是嵌入式圖形界面編程的優(yōu)選。實驗證明,,本文所介紹的軟,、硬件系統(tǒng)較好地實現(xiàn)了在本文引言中提及的車載指控平臺的幾項功能。作為一類典型的車載嵌入式系統(tǒng),,車載指控系統(tǒng)的設(shè)計原理與方法同樣適用于其他嵌入式系統(tǒng),。


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。