采用Linux系統(tǒng)的嵌入式工控量熱儀設(shè)計(jì)方案
現(xiàn)在大多數(shù)的發(fā)電廠、煤炭礦廠以及各大小級(jí)別實(shí)驗(yàn)室中所使用的工控量熱儀都是這樣的一個(gè)框架:完成儀器試驗(yàn)測試控制的下位機(jī)控制模塊;提供人機(jī)交互,傳輸和接收命令、數(shù)據(jù)的上位機(jī)模塊;以及兩模塊間的連接通信設(shè)備。在此系統(tǒng)中下位機(jī)通常使用的是單片機(jī)來完成對(duì)試驗(yàn)儀器的控制,并負(fù)責(zé)從通信設(shè)備 usb68013接收到數(shù)據(jù),提取相應(yīng)的試驗(yàn)控制命令來控制儀器試驗(yàn)。這里主要討論的是系統(tǒng)上位機(jī)的構(gòu)建和實(shí)現(xiàn),對(duì)下位機(jī)不做進(jìn)一步的討論了。那么對(duì)于系統(tǒng)的上位機(jī)通常的做法就是使用 pc機(jī),當(dāng)然,通用 pc機(jī)有著豐富的資源,不管是它的 cup時(shí)鐘頻率、內(nèi)存資源、以及對(duì)系統(tǒng)各種軟硬件管理的能力等,都有著其它替代品不可比擬的優(yōu)勢。但是,使用 pc作為設(shè)備的上位機(jī),一個(gè)昀大的缺點(diǎn)就是它體積大、不便攜等,同時(shí),隨著儀器生產(chǎn)商為了能降低生產(chǎn)成本,因此,在能完成儀器整體功能的同時(shí),極力的去尋找使儀器體積小、便攜、近似 pc機(jī)功能的上位機(jī)系統(tǒng)。因此,基于 arm嵌入式系統(tǒng)應(yīng)用于這樣的儀器上就是個(gè)非常好的方案。
2 系統(tǒng)設(shè)計(jì)方案
嵌入式工控量熱儀必須要在追求儀器設(shè)備體積小、便攜的基礎(chǔ)上,力求實(shí)現(xiàn)原來量熱儀設(shè)備相應(yīng)的功能,因此,得到下面幾點(diǎn)設(shè)計(jì)方案:
①使用主頻盡可能高的微處理芯片,同時(shí)具有很好的內(nèi)存管理功能;
②對(duì)于片上資源和各種外設(shè)的接口的擴(kuò)展??紤]到數(shù)據(jù)存儲(chǔ)、內(nèi)核、文件系統(tǒng)、圖形庫及應(yīng)用程序在系統(tǒng)中所占資源,選用合適的 Flash閃存和 SDRAM;同時(shí),與外圍儀器的連接通信擴(kuò)展出一個(gè) USB Host接口、一個(gè)網(wǎng)口 RJ45、一個(gè)標(biāo)準(zhǔn)串口等;
③為了實(shí)現(xiàn)人機(jī)交互和儀器的便攜,系統(tǒng)中設(shè)計(jì)出觸摸屏式高級(jí)用戶交互圖形操作界面;
2.1系統(tǒng)硬件框架圖
如上圖,系統(tǒng)上位機(jī)中使用的微處理芯片是三星公司的 arm920T S3C2410A;Flash存儲(chǔ)器采用 Samsung公司的 K9F1208U0M Nand Flash存儲(chǔ)器,存儲(chǔ)容量為 64MB,這種非易失性存儲(chǔ)器是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案,它能擦寫一百多萬次,具有很長的使用壽命; SDRAM存儲(chǔ)器采用 HY57V561620CT,在此使用兩塊,每塊大小為 32MB;為了實(shí)現(xiàn)人機(jī)交
互,以及從系統(tǒng)便攜等方面考慮,系統(tǒng)使用了觸摸屏,當(dāng)然還擴(kuò)展出串口、網(wǎng)口等,以上就是整個(gè)系統(tǒng)上位機(jī)的硬件框架。上位機(jī)和下位機(jī)間的通信設(shè)備使用的是 EZ-USB68013,它負(fù)責(zé)從上位機(jī)接受數(shù)據(jù)和命令,并把下位機(jī)實(shí)驗(yàn)數(shù)據(jù)以及各種狀態(tài)返回到上位機(jī),而它在 linux下驅(qū)動(dòng)編寫和移植留到下面再討論。
2.2系統(tǒng)上位機(jī)軟件組成
針對(duì)上面所討論的系統(tǒng)硬件構(gòu)成,以及系統(tǒng)所要完成的功能,下面對(duì)系統(tǒng)上位機(jī)的軟件組成進(jìn)行討論。如下是系統(tǒng)上位機(jī)的軟件組成:
2.2.1嵌入式操作系統(tǒng)設(shè)計(jì)與移植
在整個(gè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)中內(nèi)核的配置和移植是非常重要的,本系統(tǒng)使用的是韓國 mizi公司免費(fèi)提供的嵌入式 linux操作系統(tǒng),本操作系統(tǒng)體積小、方便剪裁,同時(shí)它又包含了現(xiàn)有使用的大部分外圍設(shè)備的驅(qū)動(dòng),因此,使用此操作系統(tǒng)可以降低開發(fā)成本、加快系統(tǒng)的開發(fā)。Arm-linux嵌入式操作系統(tǒng)的移植主要包括如下幾步:①建立交叉編譯環(huán)境。交叉編譯環(huán)境的建立是進(jìn)行 arm嵌入式項(xiàng)目開發(fā)的基礎(chǔ),它的搭建主要需要三個(gè)軟件包:binutils、 gcc、glibc。其中 binutils主要用于生成一些輔助工具,如 objdump、as、ld等;gcc是用來生成交叉編譯器 arm-linux-gcc;glibc主要提供用戶程序所使用的一些基本的函數(shù)庫。當(dāng)然,交叉環(huán)境的搭建是比較復(fù)雜的,很多步驟都涉及到硬件平臺(tái)的選擇,因此,本系統(tǒng)使用的是成都博睿公司所提供的交叉編譯器,而對(duì)交叉環(huán)境的具體搭建這里就不作進(jìn)一步的討論了。
②修改配置文件,配置內(nèi)核。修改配置文件使系統(tǒng)啟動(dòng)時(shí)自動(dòng)掛載 devfs文件系統(tǒng),配置內(nèi)核使內(nèi)核支持 yaffs文件系統(tǒng)。③根據(jù)系統(tǒng)需求添加相應(yīng)的外圍設(shè)備的驅(qū)動(dòng)。本系統(tǒng)中使用了 EZ-usb68013來實(shí)現(xiàn)上、下位機(jī)的數(shù)據(jù)通信,那么就必須要在上位機(jī)中添加該通信設(shè)備的驅(qū)動(dòng)。如下是在嵌入式 linux操作系統(tǒng)中 EZ-usb68013設(shè)備驅(qū)動(dòng)添加的步驟:首先,通過修改內(nèi)核中/driver/usb下的 usb-skelon.c文件,在 usb-skelon.c中添加 EZ-usb68013設(shè)備的 PID和 VID,并修改該目錄下的 config.in和 Makefile文件,各添加一行內(nèi)容,分別為:“dep_tristate ' USB 68013 driver support' CONFIG_USB_68013 $CONFIG_USB”和 “obj-$(CONFIG_USB_68013)+= usb68013.o”,這樣就把 EZ-USB68013設(shè)備驅(qū)動(dòng)編譯進(jìn) Linux內(nèi)核(當(dāng)昀后系統(tǒng)啟動(dòng)后,在/dev/usb下出現(xiàn) EZ-usb68013的設(shè)備節(jié)點(diǎn) skel0);然后,選中內(nèi)核對(duì)應(yīng)的配置選項(xiàng),編譯后生成內(nèi)核的移植鏡像文件。
另外,在這里還簡單介紹下系統(tǒng)的文件系統(tǒng)。本系統(tǒng)使用的文件系統(tǒng)是busybox,busybox它具備了linux中一些昀基本的指令,同時(shí)它昀主要的一個(gè)特點(diǎn)就是占用空間小,是 embedded文件系統(tǒng)中昀理想的選擇。
2.2.2圖形庫 qte的配置和移植
Qte是荷蘭 Trolletch公司的圖形化界面開發(fā)工具 Qt的嵌入式版本,它通過Qt API與Linux I/O直接交互,擁有較高的運(yùn)行效率,而且整體采用面向?qū)ο?a target="_blank">編程,擁有良好地體系架構(gòu)和編程模式,它采用 framebuffer作為底層的圖形接口,并使用 c++進(jìn)行封裝,具有良好的移植性,同時(shí),我們可以把用 Qt的Designer開發(fā)出來的GUI應(yīng)用程序,通過交叉編譯后可直接移植到Qte嵌入式平臺(tái)。
本系統(tǒng)使用的是Qt-embedded-3.3.2作為系統(tǒng)的基礎(chǔ)圖形庫,在進(jìn)行圖形庫編譯之前,為了能使移植后的圖形庫支持觸摸屏,則需對(duì)圖形庫源碼進(jìn)行如下修改:①在源文件包的 /src/embedded下的qmouselinuxtp_qws.h中添加兩行代碼 #define QT_QWS_IPAQ和#define QT_QWS_IPAQ_RAW;②對(duì) qmouselinuxtp_qws.cpp做如下的修改,即把源文件中打開的觸摸屏設(shè)備節(jié)點(diǎn)要改成自己所用觸摸屏設(shè)備節(jié)點(diǎn),如本系統(tǒng)中改成為:/dev/touchscreen/0raw。通過如上的修改后就可以對(duì)圖形庫進(jìn)行配置了,即如下: ./configure -embedded arm -qt-mouse-linuxtp -qt-kbd-usb,配置、編譯成功后,將 /lib下的庫文件移植到目標(biāo)板上的 /lib目錄下,這樣就完成了圖形庫Qte及觸摸屏支持的配置和移植。
3 Qte平臺(tái)上用戶應(yīng)用程序模塊的實(shí)現(xiàn)
3.1 本系統(tǒng)應(yīng)用程序模塊分析
本系統(tǒng)的用戶應(yīng)用程序用qt跨平臺(tái)語言編寫,通過交叉編譯后移植到目標(biāo)板上,而應(yīng)用程序主要包括如圖3所示的幾個(gè)模塊:實(shí)驗(yàn)顯示模塊、 usb通信模塊、儀器實(shí)驗(yàn)控制模塊、數(shù)據(jù)庫模塊,另外還有數(shù)據(jù)打印模塊等。
⑴實(shí)驗(yàn)顯示模塊它包括系統(tǒng)的主界面、實(shí)驗(yàn)數(shù)據(jù)輸入和結(jié)果顯示界面。其中主界面通過菜單控件按鈕來調(diào)用其它的模塊,試驗(yàn)數(shù)據(jù)輸入界面是在儀器試驗(yàn)當(dāng)中輸入時(shí)間和試驗(yàn)樣品的質(zhì)量數(shù)等,而結(jié)果顯示界面是把由 usb通信設(shè)備返送回來的下位機(jī)試驗(yàn)所得結(jié)果及下位機(jī)的狀態(tài)顯示出來。
⑵儀器試驗(yàn)控制模塊。儀器試驗(yàn)?zāi)K是本系統(tǒng)昀重要的程序模塊,系統(tǒng)要完成的各項(xiàng)功能都是在此模塊中來設(shè)計(jì)和實(shí)現(xiàn)的,在本嵌入式工控量熱儀中,它具體要完成的任務(wù)是以下一些:往下位機(jī)發(fā)送命令,控制下位機(jī)試驗(yàn)的開始和停止;采集下位機(jī)試驗(yàn)溫度;控制下位機(jī)內(nèi)、外桶水位平衡;同時(shí),當(dāng)試驗(yàn)結(jié)束后,控制 usb通信設(shè)備把下位機(jī)的試驗(yàn)結(jié)果采集回來等。
⑶usb通信模塊。 usb通信模塊在前面也已經(jīng)簡單的介紹過它主要的功能是負(fù)責(zé)把從上位機(jī)接受來的輸入數(shù)據(jù)和控制命令發(fā)送到下位機(jī),同時(shí)又把下位機(jī)的試驗(yàn)結(jié)果返送回上位機(jī)。因此為了能使數(shù)據(jù)的準(zhǔn)確傳輸,在應(yīng)用程序中定義了兩個(gè)用以接受和傳輸數(shù)據(jù)的結(jié)構(gòu)體 struct DOWN_DATA、UP_DATA,每個(gè)結(jié)構(gòu)體是 64字節(jié)。而在程序中對(duì) usb68013通信設(shè)備的操作是利用Linux下的設(shè)備文件的 I/O操作,打開 usb68013通信設(shè)備是: open( "/dev/usb/skel0", O_RDWR | O_NOCTTY | O_NDELAY ),其中 skel0是usb68013設(shè)備在系統(tǒng)中的設(shè)備節(jié)點(diǎn)。成功打開通信設(shè)備后就可以進(jìn)行上、下位機(jī)的數(shù)據(jù)通信了,即往設(shè)備上發(fā)送數(shù)據(jù)和從設(shè)備上讀取數(shù)據(jù),這分別為: write(m_hDev,(UCHAR*)writeBuffer,64)、 read(m_hDev,(UCHAR*)readBuffer,64),這樣就成功的實(shí)現(xiàn)系統(tǒng)中數(shù)據(jù)的通信。
⑷數(shù)據(jù)庫模塊。本工控量熱儀由于是用來測量某種樣品的發(fā)熱量的,那么,通常要對(duì)此樣品進(jìn)行多次的試驗(yàn),再來取平均值,因此,利用數(shù)據(jù)庫對(duì)試驗(yàn)結(jié)果的保存是非常必要的。在本系統(tǒng)中使用的是sqlite-3.3.6這一零配置的數(shù)據(jù)庫,這種數(shù)據(jù)庫它主要的特點(diǎn)就是體積小、封裝了一些基本的數(shù)據(jù)庫API接口函數(shù)、操作簡單、易于移植,是嵌入式系統(tǒng)中昀理想的數(shù)據(jù)庫。
3.2 系統(tǒng)實(shí)現(xiàn)及測試
通過上面的討論,本系統(tǒng)的各模塊都已經(jīng)成功的設(shè)計(jì)出并得以實(shí)現(xiàn)。由于系統(tǒng)基于 QTE設(shè)計(jì)出圖形用戶界面,則提供良好的人機(jī)交互,使系統(tǒng)更易于操作和管理。經(jīng)過試驗(yàn)測試,本系統(tǒng)上位機(jī)各模塊能夠很好的達(dá)到設(shè)計(jì)的目標(biāo),整個(gè)上位機(jī)系統(tǒng)控制下位機(jī)試驗(yàn),并把結(jié)果正確顯示出。如圖4所示為系統(tǒng)圖形用戶界面的試驗(yàn)控制模塊。
4 結(jié)論
本文根據(jù)需要對(duì)嵌入式工控量熱儀的上位機(jī)軟、硬件平臺(tái)設(shè)計(jì)和構(gòu)建進(jìn)行了深入的討論,并得出了方案的詳細(xì)實(shí)現(xiàn)過程,昀終還給出了系統(tǒng)試驗(yàn)測試框圖,從而驗(yàn)證了嵌入式工控量熱儀的可行性、實(shí)用性。本系統(tǒng)的創(chuàng)新點(diǎn)有以下幾點(diǎn):①系統(tǒng)上位機(jī)利用arm嵌入式平臺(tái)來代替原來的pc機(jī),這樣使成本降低了,昀重要就是嵌入式平臺(tái)相比于 pc機(jī)體積更小,這樣設(shè)備就越便攜、實(shí)用;②系統(tǒng)使用QT跨平臺(tái)語言來編寫系統(tǒng)的應(yīng)用程序,這樣程序具有良好的移植性,同時(shí),系統(tǒng)設(shè)計(jì)開發(fā)出用戶界面,并用觸摸屏代替?zhèn)鹘y(tǒng)的鼠標(biāo)和鍵盤,具有友好的人機(jī)交互。
評(píng)論
查看更多