《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于 ARM 和 Linux 通用工控平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
基于 ARM 和 Linux 通用工控平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
摘要: 本工控平臺(tái)在硬件上,,選擇ATMEL公司的AT91RM9200微處理器,并對(duì)其最小系統(tǒng)及外圍部件進(jìn)行設(shè)計(jì),,以適應(yīng)當(dāng)前工控現(xiàn)場(chǎng)更加豐富的技術(shù)要求,,并結(jié)合工業(yè)測(cè)控Modbus協(xié)議,,擴(kuò)展多種通信接口,滿(mǎn)足用戶(hù)的通信需求,。與此同時(shí),,選擇嵌入式Linux操作系統(tǒng)為測(cè)控軟件的開(kāi)發(fā)提供了性能優(yōu)良軟件平臺(tái)。
關(guān)鍵詞: ARM Linux 工控 AT91RM9200
Abstract:
Key words :

隨著工控技術(shù)的進(jìn)步和市場(chǎng)競(jìng)爭(zhēng)的加劇,,開(kāi)發(fā)人員通常需要在盡可能短的時(shí)間內(nèi)設(shè)計(jì)出滿(mǎn)足用戶(hù)要求的測(cè)控系統(tǒng),。本文針對(duì)嵌入式系統(tǒng)的特點(diǎn),以高性?xún)r(jià)比的32位ARM嵌入式處理器AT91RM9200為硬件核心,,搭建了通用工控硬件平臺(tái),,在此平臺(tái)上移植嵌入式Linux操作系統(tǒng)和圖形界面開(kāi)發(fā)環(huán)境MiniGUI。以此通用工控平臺(tái)為基礎(chǔ),,可以方便地構(gòu)建工程應(yīng)用所需的絕大部分自動(dòng)測(cè)控系統(tǒng),。其應(yīng)用無(wú)論是在性能還是在成本方面都極具競(jìng)爭(zhēng)力,這預(yù)示著本平臺(tái)具有較好的應(yīng)用前景,。


本工控平臺(tái)在硬件上,,選擇ATMEL公司的AT91RM9200微處理器,,并對(duì)其最小系統(tǒng)及外圍部件進(jìn)行設(shè)計(jì),以適應(yīng)當(dāng)前工控現(xiàn)場(chǎng)更加豐富的技術(shù)要求,,并結(jié)合工業(yè)測(cè)控Modbus協(xié)議,,擴(kuò)展多種通信接口,滿(mǎn)足用戶(hù)的通信需求,。與此同時(shí),,選擇嵌入式Linux操作系統(tǒng)為測(cè)控軟件的開(kāi)發(fā)提供了性能優(yōu)良軟件平臺(tái)。


通用工控硬件平臺(tái)設(shè)計(jì)
1 AT91RM9200微處理器最小系統(tǒng)構(gòu)成
最小系統(tǒng)是保證微處理器可靠工作所必需的基本電路,?;贏T91RM9200微處理器的最小嵌入式系統(tǒng)由微處理器AT91RM9200、電源電路,、晶體振蕩器電路,、復(fù)位電路、JTAG接口,、存儲(chǔ)器模塊,、串行調(diào)試接口等電路組成。至此就具備了設(shè)計(jì)開(kāi)發(fā)一款基于ARM微處理器的通用工控平臺(tái)的硬件基礎(chǔ),。


2 硬件平臺(tái)外圍接口電路
利用AT91RM9200豐富的內(nèi)置外設(shè),,可以方便的擴(kuò)展外圍接口,如表2所示,。


3 硬件平臺(tái)用戶(hù)接口
系統(tǒng)對(duì)外提供一個(gè)2*32針的標(biāo)準(zhǔn)3U插槽,,共64針,。3U插槽專(zhuān)門(mén)設(shè)計(jì)用于便攜式應(yīng)用,,特別適合作為一體化的移動(dòng)控制器用于工業(yè)測(cè)控、產(chǎn)品線,、運(yùn)輸系統(tǒng)和交通控制系統(tǒng)的應(yīng)用,。


4 硬件平臺(tái)結(jié)構(gòu)
根據(jù)上述對(duì)AT91RM9200最小系統(tǒng)及各外圍部件的設(shè)計(jì),最終構(gòu)成以AT91RM9200微處理器為硬件核心的通用工控硬件平臺(tái),,如圖1所示,。

圖1 通用工控平臺(tái)硬件結(jié)構(gòu)

通用工控軟件平臺(tái)設(shè)計(jì)
1 基于ARM硬件平臺(tái)搭建Linux操作系統(tǒng)
ARM-Linux開(kāi)發(fā)環(huán)境搭建
建立以嵌入式Linux為操作系統(tǒng)的工控平臺(tái)的開(kāi)發(fā)環(huán)境和在Windows下安裝虛擬機(jī)Linux環(huán)境的軟件的開(kāi)發(fā)環(huán)境,嵌入式Linux內(nèi)核編譯,、應(yīng)用程序編譯都在該虛擬機(jī)完成,。為了提高開(kāi)發(fā)效率,以虛擬機(jī)中安裝的Linux為服務(wù)器,,通過(guò)Windows客戶(hù)端使用Telnet或SSH登錄服務(wù)器,,服務(wù)器可自由在客戶(hù)端中下載必需的開(kāi)發(fā)工具及軟件,調(diào)試應(yīng)用程序時(shí),,可以先在PC的Linux環(huán)境下進(jìn)行模擬,,然后通過(guò)DEBUG調(diào)試串口下載在目標(biāo)平臺(tái)下,。這種開(kāi)發(fā)環(huán)境的優(yōu)點(diǎn)是只需要一臺(tái)計(jì)算機(jī)就可以真實(shí)的模擬Linux,具體過(guò)程如圖2所示,。

圖2 開(kāi)發(fā)環(huán)境


交叉編譯
交叉編譯就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼,。所謂平臺(tái),實(shí)際上包含兩個(gè)概念:體系結(jié)構(gòu)及操作系統(tǒng),。根據(jù)上述建立的開(kāi)發(fā)環(huán)境,,目標(biāo)平臺(tái)是基于ARM體系結(jié)構(gòu)的運(yùn)行嵌入式Linux操作系統(tǒng),而開(kāi)發(fā)編譯環(huán)境是基于PC中虛擬機(jī)上的Linux操作系統(tǒng),。若在目標(biāo)平臺(tái)上運(yùn)行程序,,則須在PC開(kāi)發(fā)環(huán)境下對(duì)代碼進(jìn)行交叉編譯以適應(yīng)目標(biāo)平臺(tái)。


依據(jù)環(huán)境變量PREFIX,,將編譯好的工具鏈安裝到指定文件夾就可以使用了,。


例如,修改arm-Linux-gcc-2.95.3的環(huán)境變量為:
PATH=$PATH:$HOME/bin:$PREFIX/bin:/usr/local/arm/2.95.3/bin:/sbin:/usr/sbin:/usr/local/sbin,,同時(shí)編寫(xiě)hello.c程序進(jìn)行驗(yàn)證
$arm-Linux-gcc hello.c -o hello-arm
$file hello-arm
hello-arm: ELF 32-bit LSB executable, ARM, version1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs),not stripped
這表明生成的hello-arm可以在ARM平臺(tái)上運(yùn)行,,也證明交叉編譯工具鏈?zhǔn)怯行Р⑶铱捎玫摹?/p>


 Linux內(nèi)核編譯下載
具體步驟如下:


(1) 解壓Linux-2.6.21-2009-04 -10.bz2:tar  xjvf Linux-2.6.21 -2009-04-10.bz2;


(2)  進(jìn)入Linux-2.6.21目錄,,內(nèi)核編譯:make uImage,;


(3) 編譯完成后,通過(guò)SSH把uImage文件拷貝到Windows環(huán)境下,;


(4)  配置U-Boot環(huán)境變量,;


(5)  配置tftp服務(wù)器:運(yùn)行Linux系統(tǒng)下的tftp服務(wù)器,復(fù)制Linux內(nèi)核的uImage文件到tftp下載工作目錄下,,啟動(dòng)tftp服務(wù),,確保PC和AT91RM9200接入同一網(wǎng)段;


(6) 下載內(nèi)核映像文件,,并在U-Boot提示符下擦除Flash,;


(7) 下載內(nèi)核映像文件到Flash中;


Linux文件系統(tǒng)
軟件平臺(tái)使用cramfs文件系統(tǒng),,其特點(diǎn)是:系統(tǒng)訪問(wèn)某個(gè)位置的數(shù)據(jù)時(shí),,立即計(jì)算出該數(shù)據(jù)在cramfs中的位置,解壓到RAM中,,然后通過(guò)內(nèi)存訪問(wèn)來(lái)獲取數(shù)據(jù),,cramfs中的解壓縮之后的內(nèi)存中的數(shù)據(jù)存放位置都是由cramfs文件系統(tǒng)本身來(lái)管理,用戶(hù)并不需要實(shí)現(xiàn)過(guò)程,,因此增加了透明度,,給開(kāi)發(fā)人員節(jié)約了時(shí)間。


2 Linux操作系統(tǒng)下設(shè)備驅(qū)動(dòng)開(kāi)發(fā)
Linux上的設(shè)備驅(qū)動(dòng)非常豐富,,支持各種主流硬件設(shè)備和最新的硬件技術(shù),。設(shè)備驅(qū)動(dòng)程序在Linux內(nèi)核中,,是一個(gè)個(gè)獨(dú)立的“黑盒子”,使某個(gè)特定的硬件響應(yīng)一個(gè)定義良好的內(nèi)部編程接口,,同時(shí)完全隱藏設(shè)備的工作細(xì)節(jié),。通過(guò)一組標(biāo)準(zhǔn)化的調(diào)用,把這些調(diào)用映射到設(shè)備特定的操作上,,則是設(shè)備驅(qū)動(dòng)程序的任務(wù),。而在Linux系統(tǒng)里,每一個(gè)設(shè)備都被看作一個(gè)文件,,打開(kāi)的設(shè)備在內(nèi)核中由一個(gè)File結(jié)構(gòu)標(biāo)志,,內(nèi)核使用File_operations結(jié)構(gòu)訪問(wèn)驅(qū)動(dòng)程序的函數(shù)。每個(gè)設(shè)備與一組標(biāo)準(zhǔn)函數(shù)集關(guān)聯(lián),。


3 Linux操作系統(tǒng)下應(yīng)用程序開(kāi)發(fā)
采取在PC上編譯應(yīng)用程序,,運(yùn)行測(cè)試通過(guò)后,再通過(guò)網(wǎng)絡(luò)或串口等方法下載到目標(biāo)平臺(tái)/usr目錄下,,對(duì)于較小的程序,,使用串口下載比較方便,具體的步驟為


(1)  PC模擬環(huán)境下開(kāi)發(fā)程序,,交叉編譯,;


(2)  待ARM平臺(tái)下Linux正常運(yùn)行后,進(jìn)入usr目錄,,然后選擇下載的程序,;


(3)  下載完成后,chmod +x filenam修改文件屬性為可執(zhí)行命令,;


(4)  執(zhí)行剛下載的文件命令為./filename,。

通用工控平臺(tái)人機(jī)交互通信機(jī)制實(shí)現(xiàn)
嵌入式GUI為嵌入式系統(tǒng)提供了一種應(yīng)用于特殊場(chǎng)合的人機(jī)交互接口。新一代嵌入式GUI的主要特征有:以用戶(hù)為中心,、多通道,、智能化、高帶寬,。嵌入式Linux 系統(tǒng)中,幾乎所有的GUI 都建立在FrameBuffer設(shè)備上,。


MiniGUI 是一個(gè)根據(jù)嵌入式系統(tǒng)應(yīng)用特點(diǎn)量身定做的完整的圖形支持系統(tǒng),。將現(xiàn)代窗口和圖形技術(shù)帶入到嵌入式設(shè)備,是一個(gè)非常適合于嵌入式設(shè)備的高效,、可靠,、可定制、小巧靈活的圖形用戶(hù)界面支持系統(tǒng),,主要優(yōu)點(diǎn)可總結(jié)為支持多種嵌入式操作系統(tǒng),,具備優(yōu)秀的可移植性,;可伸縮的系統(tǒng)架構(gòu),易于擴(kuò)展,;功能豐富,,可靈活剪裁;得到小體積高性能間的最佳平衡且具有廣泛的應(yīng)用領(lǐng)域,。


1 移植MiniGUI前準(zhǔn)備
MiniGUI 1.3.3是MiniGUI的開(kāi)源版本,,并且資源豐富,性能穩(wěn)定,,因此選用MiniGUI 1.3.3作為GUI的開(kāi)發(fā)環(huán)境,。進(jìn)行MiniGUI移植需要準(zhǔn)備表3所列的文件,它們可在互聯(lián)網(wǎng)上獲得,。


2 PC模擬器開(kāi)發(fā)環(huán)境搭建
建立自己的開(kāi)發(fā)目錄,,解壓文件libminigui-1.3.3.tar.gz和minigui-res-1.3.3.tar.gz;編譯安裝MiniGUI運(yùn)行所需庫(kù)文件libminigui,;安裝資源文件minigui-res-1.3.3,;修改/etc/ld.so.conf 文件,加入一行/usr/local/lib,,然后執(zhí)行[root]# ldconfig 按照硬件平臺(tái)配置與開(kāi)發(fā)環(huán)境的設(shè)置修改minigui配置文件,,包括修改路徑,屏幕分辨率等,。


PC模擬器開(kāi)發(fā)環(huán)境搭建完畢后,,就可在 PC上開(kāi)發(fā)應(yīng)用程序,在 qvfb中執(zhí)行,,驗(yàn)證程序的正確后,,就可以進(jìn)行交叉編譯下載運(yùn)行。


3 交叉編譯Minigui1.3.3
解壓arm-Linux-2.95.3.bz2文件安裝交叉編譯工具?cross-2.95.3,,安裝之后修改.bashrc腳本,,設(shè)置環(huán)境變量:PATH="$PATH:/sbin:/usr/local/arm/2.95.3/bin:/usr/local/bin:/usr/local"。


接下來(lái)依次安裝 zlib庫(kù),,png庫(kù),、libttf庫(kù),它們的作用分別是:其他的庫(kù)的編譯基礎(chǔ),、顯示PNG圖形,、顯示文字。完成以上附加庫(kù)的交叉編譯工作后就可以編譯libminigui了,。把/usr/local/arm/2.95.3/arm-Linux/lib中相應(yīng)的庫(kù)拷到目標(biāo)板/usr/lib目錄下,,拷貝時(shí)先對(duì)庫(kù)文件執(zhí)行arm-Linux-strip命令,去除文件中的調(diào)試信息。同時(shí)把資源文件復(fù)制到目標(biāo)平臺(tái)的/usr/local/lib目錄下,。這樣就完成了交叉編譯工作,,可以將PC上調(diào)試好的應(yīng)用程序下載到目標(biāo)硬件平臺(tái)下進(jìn)行應(yīng)用了。

通用工控平臺(tái)人機(jī)界面開(kāi)發(fā)
1 人機(jī)交互界面需求分析及總體設(shè)計(jì)
通用工控平臺(tái)通信人機(jī)交互界面是集功能演示,、信息采集,、設(shè)備狀態(tài)、通信交互等功能于一身的人機(jī)交互平臺(tái),,可以高效,、直觀的顯示通用工控平臺(tái)的基本信息,同時(shí)有效的指導(dǎo)用戶(hù)的操作,,提高使用效率,,是用戶(hù)和通用工控平臺(tái)交互的主要方式。


該人機(jī)交互界面顯示器選用PHILIPS公司的14英寸彩色顯示屏,,軟件運(yùn)行環(huán)境選用嵌入式操作系統(tǒng)Linux 2.6.21和GUI開(kāi)發(fā)環(huán)境MiniGUI 1.3.3構(gòu)成,,整個(gè)軟件的設(shè)計(jì)過(guò)程需要完成以下功能:


(1)  實(shí)時(shí)顯示該平臺(tái)具體信息,及本網(wǎng)內(nèi)在線的其他工控設(shè)備的信息,;


(2)  以該平臺(tái)為控制器實(shí)現(xiàn)對(duì)本網(wǎng)內(nèi)在線的其他常見(jiàn)設(shè)備的多線程信息采集與控制,;


(3)  以UDP及RS485兩種通信方式實(shí)時(shí)控制工控網(wǎng)絡(luò)內(nèi)部;


(4)  對(duì)工控設(shè)備掉線自動(dòng)斷開(kāi)連接,,防止用戶(hù)誤操作,;


通用工控平臺(tái)通信人機(jī)交互界面主要是針對(duì)UDP和RS485兩種組網(wǎng)方式基于Modbus協(xié)議完成工控系統(tǒng)中功能演示、信息采集,、設(shè)備狀態(tài),、通信交互的功能,設(shè)計(jì)上要求簡(jiǎn)單實(shí)用,,操作方便,,而復(fù)雜的界面會(huì)帶來(lái)不必要的開(kāi)銷(xiāo)并影響性能。根據(jù)需求分析設(shè)定人機(jī)交互界面整體設(shè)計(jì)方案及效果圖如圖3,、圖4所示,。

圖3 人機(jī)交互界面整體設(shè)計(jì)方案

圖4 總體效果圖


2 界面設(shè)計(jì)流程
利用MiniGUI進(jìn)行界面設(shè)計(jì)流程如圖5所示。

圖5 界面設(shè)計(jì)流程

基于工業(yè)測(cè)控Modbuss協(xié)議的通信實(shí)現(xiàn)方案
一個(gè)好的工控平臺(tái)必須具備高效通信的功能,,才能跟上工業(yè)發(fā)展的要求,。本文所設(shè)計(jì)的通用工控平臺(tái),可以作為控制中心對(duì)通信網(wǎng)絡(luò)內(nèi)的其他設(shè)備進(jìn)行數(shù)據(jù)采集和控制,,包括工控現(xiàn)場(chǎng)典型意義上的數(shù)模轉(zhuǎn)換設(shè)備,,模數(shù)轉(zhuǎn)換設(shè)備,數(shù)字量設(shè)備等,,隨時(shí)掌握各個(gè)工作現(xiàn)場(chǎng)的情況。由于Modbus協(xié)議是工業(yè)測(cè)控領(lǐng)域的標(biāo)準(zhǔn)通信協(xié)議,,協(xié)議簡(jiǎn)單,,應(yīng)用廣泛,,因此本平臺(tái)通信軟件的設(shè)計(jì)就采用Modbus協(xié)議。


工業(yè)測(cè)控領(lǐng)域常見(jiàn)的組網(wǎng)方式主要有UDP方式和RS485方式,,分別以自身獨(dú)特的優(yōu)勢(shì)在工業(yè)組網(wǎng)占據(jù)著一定地位,。為實(shí)現(xiàn)工控平臺(tái)通用性的設(shè)計(jì)目標(biāo),本平臺(tái)將兩種組網(wǎng)方式融合在通信人機(jī)交互界面中,,圖6為本平臺(tái)通信的拓?fù)浣Y(jié)構(gòu)圖,。

圖6 通信拓?fù)浣Y(jié)構(gòu)

結(jié)語(yǔ)
在基于ARM和Linux的通用工控平臺(tái)的研制過(guò)程中,硬件平臺(tái)選擇合適的ARM微處理器AT91RM9200,,并對(duì)其外圍部件進(jìn)行擴(kuò)展,,以適應(yīng)當(dāng)前工控現(xiàn)場(chǎng)更加豐富的技術(shù)要求,并結(jié)合現(xiàn)場(chǎng)總線技術(shù),,擴(kuò)展多種通信接口,,滿(mǎn)足用戶(hù)的通信需求;軟件平臺(tái)采用嵌入式領(lǐng)域應(yīng)用最廣的Linux為操作系統(tǒng),,同時(shí)構(gòu)建交叉編譯環(huán)境,,并充分利用開(kāi)源軟件,基于圖形界面開(kāi)發(fā)的MiniGUI,,針對(duì)工控領(lǐng)域的總線協(xié)議Modbus設(shè)計(jì)出基于UDP和RS485兩種通信結(jié)構(gòu)的工控人機(jī)交互界面,,實(shí)現(xiàn)了以網(wǎng)絡(luò)溝通能力強(qiáng)、接口豐富為技術(shù)指標(biāo)的基于ARM和Linux的通用工控平臺(tái),。


本通用工控平臺(tái)的主要特色有:


(1)硬件接口豐富,,適應(yīng)工業(yè)測(cè)控領(lǐng)域各種需求;


(2)使用3U插槽,,增強(qiáng)通用性及擴(kuò)展性,;


(3)基于Linux操作系統(tǒng)及MiniGUI圖形界面開(kāi)發(fā)環(huán)境,人機(jī)交互界面友好便捷,;


(4)采用工業(yè)測(cè)控Modbus通信協(xié)議,,基于串行RS485及網(wǎng)絡(luò)UDP構(gòu)建通信拓?fù)浣Y(jié)構(gòu),應(yīng)用范圍廣泛,、性能可靠,、實(shí)時(shí)性高。

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