隨著工控技術(shù)的進(jìn)步和市場(chǎng)競(jìng)爭(zhēng)的加劇,開(kāi)發(fā)人員通常需要在盡可能短的時(shí)間內(nèi)設(shè)計(jì)出滿足用戶要求的測(cè)控系統(tǒng)。本文針對(duì)嵌入式系統(tǒng)的特點(diǎn),以高性價(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ò)展多種通信接口,滿足用戶的通信需求。與此同時(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)用戶接口
系統(tǒng)對(duì)外提供一個(gè)2*32針的標(biāo)準(zhǔn)3U插槽,共64針。3U插槽專門(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客戶端使用Telnet或SSH登錄服務(wù)器,服務(wù)器可自由在客戶端中下載必需的開(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)
電子發(fā)燒友App



















評(píng)論