基于eCos在基于ARM7硬件平臺(tái)上的應(yīng)用
?。?) 組件定義語(yǔ)言CDL
CDL是eCos組件框架中的一個(gè)關(guān)鍵部分,eCos所有模塊的程序包中都包含一個(gè)CDL腳本對(duì)該包進(jìn)行描述并提供配置選項(xiàng)。以本系統(tǒng)中的串口驅(qū)動(dòng)程序包為例,在該包對(duì)應(yīng)的CDL中定義了一個(gè)名為CYGPKG_IO_SERIAL_ARM_AT91的cdl_package。在這個(gè)cdl_package中詳細(xì)列出了該包的一些屬性,如該包必須在工程已經(jīng)包含了硬件抽象層包CYGPKG_HAL_ARM_AT91和上層串口I/O包CYGPKG_IO_SERIAL的情況下才會(huì)被使能。另外,串口的一些常用特性,如波特率、設(shè)備名、緩沖區(qū)大小等配置選項(xiàng)也是必不可少的。在一些復(fù)雜的CDL中還會(huì)包含對(duì)該包中的源程序進(jìn)行編譯時(shí)的一些編譯選項(xiàng)。在進(jìn)行配置的時(shí)候,該包還會(huì)產(chǎn)生一個(gè)包含了各個(gè)可配置參數(shù)數(shù)值的頭文件。當(dāng)其他包使用由CYGPKG_IO_SERIAL_ARM_AT91包提供的可配置參數(shù)時(shí),這個(gè)新產(chǎn)生的頭文件就會(huì)被相關(guān)的源文件通過(guò)#include語(yǔ)法包含。
?。?) 組件倉(cāng)庫(kù)ecos.db
ecos.db是一個(gè)包含了所有可用程序包和配置模版的文本文件。在該文件中,需要注冊(cè)所有的CDL包。在注冊(cè)時(shí)以package關(guān)鍵字提供相應(yīng)包的名稱、CDL腳本文件的文件路徑以及對(duì)該包的一個(gè)簡(jiǎn)單描述。在ecos.db中還會(huì)以target關(guān)鍵字生成配置模版,從而提供目標(biāo)平臺(tái)的一些基本組成結(jié)構(gòu),使目標(biāo)平臺(tái)包括所需要的已經(jīng)注冊(cè)了的CDL配置包。
(3) 圖形配置工具configtool
configtool是利用MFC編寫的Windows程序,是eCos可配置性的執(zhí)行者,也可以理解成是CDL腳本的解釋器。一方面它讀取ecos.db文件中的目標(biāo)平臺(tái)和已注冊(cè)的配置包信息,根據(jù)配置包的路徑找到相應(yīng)的CDL腳本,然后根據(jù)腳本中給出的屬性向程序員提供圖形化的配置信息;另一方面,它還可以接受用戶的輸入,包括單選按鈕、復(fù)選框、下拉列表、文本輸入等。當(dāng)用戶保存一個(gè)配置時(shí),configtool會(huì)根據(jù)CDL語(yǔ)言的提示生成相應(yīng)的頭文件,也會(huì)將指定的頭文件從配置包中復(fù)制到配置文件所在的工作目錄。無(wú)論是生成的頭文件還是拷貝的頭文件,都會(huì)在編譯時(shí)被源程序所引用。對(duì)于內(nèi)核源程序,configtool又可以理解成編譯器。當(dāng)用戶的配置選項(xiàng)被保存并且對(duì)工程進(jìn)行編譯時(shí),configtool會(huì)在后臺(tái)調(diào)用真正的編譯器GCC,根據(jù)配置包CDL中的編譯選項(xiàng)控制GCC對(duì)所有需要的內(nèi)核源文件進(jìn)行編譯并生成庫(kù)文件和對(duì)應(yīng)的鏈接腳本。當(dāng)然configtool只是對(duì)eCos內(nèi)核進(jìn)行編譯,用戶的應(yīng)用程序只需在編譯時(shí)和由configtool編譯生成的庫(kù)文件進(jìn)行鏈接就可以得到最終的可執(zhí)行映像文件。
2 系統(tǒng)硬件框架
本系統(tǒng)是一個(gè)以ARM7為核心構(gòu)成的測(cè)控系統(tǒng),通過(guò)對(duì)傳感器的脈沖信號(hào)進(jìn)行處理而得到待測(cè)物料的流量,并通過(guò)控制給料器的給料速度達(dá)到流量控制的目的。對(duì)于一個(gè)有實(shí)用價(jià)值的測(cè)控系統(tǒng),必須具有人機(jī)交互、閉環(huán)控制、數(shù)據(jù)通信和存儲(chǔ)等功能。本課題所研制的流量測(cè)控系統(tǒng)的硬件框圖如圖3所示。
圖3 流量測(cè)控系統(tǒng)硬件框圖
圖3中,處理器為ARM7內(nèi)核的工業(yè)級(jí)芯片AT91M55800,其強(qiáng)大的功能保證了系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性的要求。2 MB的Flash SST39VF160用來(lái)保存程序代碼、測(cè)量所需的一些參數(shù)以及測(cè)量結(jié)果的簡(jiǎn)單統(tǒng)計(jì)信息。在工業(yè)生產(chǎn)中,經(jīng)常需要對(duì)一次測(cè)量中的數(shù)據(jù)進(jìn)行歷史再現(xiàn),以便對(duì)一些事故或故障進(jìn)行排查。本系統(tǒng)通過(guò)采用1 MB的大容量RAM來(lái)實(shí)現(xiàn)這一功能:除了用來(lái)作為程序運(yùn)行時(shí)的內(nèi)存外,RAM還用來(lái)實(shí)時(shí)保存每一時(shí)刻的測(cè)量數(shù)據(jù)。USB總線的通信口用來(lái)和現(xiàn)場(chǎng)計(jì)算機(jī)進(jìn)行通信,以實(shí)現(xiàn)一些更加完善的處理,如數(shù)據(jù)打印、結(jié)果分析、實(shí)時(shí)數(shù)據(jù)的硬盤保存等。分辨率為320×240的LCD用來(lái)作為系統(tǒng)的顯示終端配合4×5的鍵盤來(lái)完成系統(tǒng)的人機(jī)交互操作。對(duì)變頻器的控制和對(duì)溫度信號(hào)的采集通過(guò)485總線完成。6路脈沖信號(hào)是本系統(tǒng)測(cè)量功能的核心,通過(guò)對(duì)這6路脈沖進(jìn)行處理可以得到流量相關(guān)的所有信息。4~20 mA電流信號(hào)用來(lái)控制給料系統(tǒng),以實(shí)現(xiàn)閉環(huán)控制。由于在工業(yè)環(huán)境中使用,對(duì)于一些長(zhǎng)線連接必須采取隔離措施。本系統(tǒng)對(duì)測(cè)量脈沖、485通信信號(hào)和4~20 mA電流信號(hào)都采取了光電隔離措施。
評(píng)論