基于ARM和FPGA的便攜人工地震數(shù)據(jù)采集系統(tǒng)設(shè)計
2 系統(tǒng)軟件設(shè)計概要
Linux因其源代碼開放性特點,成為嵌入式系統(tǒng)中應(yīng)用最為廣泛的操作系統(tǒng)之一。本系統(tǒng)采用嵌入式操作系統(tǒng)Linux-2.6.30內(nèi)核,交叉編譯工具使用arm-none-linux-gnueabi-gcc,底層硬件驅(qū)動和數(shù)字信號FIR/IIR濾波程序使用C語言,部分代碼使用嵌入式匯編語言,上層應(yīng)用程序開發(fā)則使用C、C++。本系統(tǒng)的軟件設(shè)計主要任務(wù)包括操作系統(tǒng)的移植、驅(qū)動程序開發(fā)(包括數(shù)據(jù)采集驅(qū)動、系統(tǒng)控制及標定驅(qū)動程序等模塊)以及嵌入式應(yīng)用軟件和上位PC機應(yīng)用軟件開發(fā)。
2.1 嵌入式操作系統(tǒng)Linux-2.6.30的裁剪
下載解壓縮內(nèi)核源文件。修改頂層目錄下的Makefile文件,設(shè)定目標硬件ARCH=arm,指定交叉編譯環(huán)境路徑CROSS_COMPILE=/usr/locaL/arm-2007q1/bin/arm-none-linux- gnueabi-。使用圖形界面或文本行界面進行內(nèi)核配置,根據(jù)硬件電路和軟件系統(tǒng)功能對內(nèi)核模塊進行剪裁,完成操作系統(tǒng)鏡像的定制、編譯與調(diào)試,并在此環(huán)境上進行應(yīng)用軟件和驅(qū)動程序的開發(fā)。在ARM中植入嵌入式linux平臺,首先根據(jù)目標設(shè)備的硬件配置及需要,對linux-2.6.30內(nèi)核進行基本定制,開發(fā)并安裝驅(qū)動程序,增加CPU動態(tài)調(diào)頻特性,生成鏡像文件。JTAG將U-boot寫入Flash后,通過網(wǎng)卡將鏡像文件下載到目標設(shè)備中進行調(diào)試,最終把U-boot、linux-2.6.30內(nèi)核及文件系統(tǒng)映像文件等燒寫入Flash存儲器。
2.2 A/D數(shù)據(jù)采集驅(qū)動
設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核與硬件之間的接口,屬于內(nèi)核的一部分。根據(jù)功能劃分,設(shè)備驅(qū)動程序代碼有以下幾個部分:(1)驅(qū)動程序的注冊與注銷;(2)設(shè)備的打開與釋放;(3)設(shè)備的讀/寫操作;(4)設(shè)備的控制操作;(5)數(shù)據(jù)采集中斷處理程序和PPS_INTERRUPT中斷處理程序。AD驅(qū)動程序最終實現(xiàn)一個字符設(shè)備驅(qū)動,為了使該驅(qū)動程序能夠被上層的應(yīng)用程序方便地調(diào)用,需要實現(xiàn)以下的接口函數(shù):
(1)open調(diào)用:打開數(shù)據(jù)采集通道,需要注意的是open調(diào)用不應(yīng)該自動啟動AD采樣,而應(yīng)該由ioctl調(diào)用提供顯式的控制接口。
(2)read調(diào)用:讀取采樣數(shù)據(jù),阻塞式讀取,以字節(jié)數(shù)返回讀取到的數(shù)據(jù)量。
(3)release調(diào)用:關(guān)閉數(shù)據(jù)采集通道,釋放系統(tǒng)資源。
(4)ioctl調(diào)用:提供以下一些設(shè)置命令。DS—ADC—START:啟動AD采樣,每次開始都會清空上次未讀走的數(shù)據(jù)。DS—ADC—ST0P:停止AD采樣。DS—ADC—SET—SAMPIE_RATE:設(shè)定采樣率。DS—AdC—GET—COUNT:獲取內(nèi)存環(huán)行緩沖區(qū)中已存儲的采樣數(shù)據(jù)。
2.3 應(yīng)用軟件設(shè)計
應(yīng)用軟件包括嵌入式應(yīng)用軟件和PC機應(yīng)用軟件。嵌入式應(yīng)用軟件運行在采集器ARM處理器上,具體實現(xiàn)為一個命令解析服務(wù)器,通過Socket接口連接到上位PC機,并接收PC機端發(fā)送來的控制命令,執(zhí)行相應(yīng)的操作。PC機應(yīng)用軟件由主線程和數(shù)據(jù)通信線程組成。主線程為文檔—視圖結(jié)構(gòu),實現(xiàn)參數(shù)查詢與設(shè)置操作、實時波形顯示與波形存儲等功能;數(shù)據(jù)通信線程與硬件通信,接收波形數(shù)據(jù)。主要功能包括,(1)實時接收、存儲波形數(shù)據(jù);(2)實時瀏覽波形;(3)查詢、設(shè)置系統(tǒng)工作參數(shù);(4)查詢GPS信息;(5)查詢、設(shè)置標定參數(shù)、啟動停止標定;(6)查詢、設(shè)置觸發(fā)參數(shù);(7)設(shè)置數(shù)據(jù)采集器通信參數(shù)。
3 動態(tài)電源管理
在本設(shè)計中,從微處理器和A/D等芯片的選型到電源系統(tǒng)設(shè)計都充分考慮低功耗設(shè)計,為了進一步降低系統(tǒng)功耗,設(shè)計中引入了CPU動態(tài)調(diào)頻技術(shù)。位于系統(tǒng)內(nèi)核的負載監(jiān)控器Load Monitor負責統(tǒng)計核算負載信息,并根據(jù)系統(tǒng)負載輕重,驅(qū)動電源管理控制器Power Controller對CUP工作頻率和相關(guān)設(shè)備能效狀態(tài)做出調(diào)整。該模型對應(yīng)用層程序完全透明,但應(yīng)用程序也可通過proc接口顯式調(diào)整系統(tǒng)狀態(tài)。在開發(fā)板的初步實驗中,在測試程序為while死循環(huán)情況下,測得系統(tǒng)在三個頻率點上的總功率為169 mA×12 V@400 MHz,133 mA×12 V@
200 MHz,112 mA×12 V@99 MHz,系統(tǒng)存在可觀的降耗空間。值得注意的是,動態(tài)調(diào)頻對系統(tǒng)穩(wěn)定性造成很大挑戰(zhàn),調(diào)頻代碼需進一步完善。
本文主要討論了基于低功耗微處理器AT91SAM9G20和可編程邏輯門陣列器件(FPGA)的地震數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計和嵌入式Linux軟件開發(fā)思路。值得一提的是,在系統(tǒng)中引入動態(tài)調(diào)頻技術(shù),為進一步降低系統(tǒng)動態(tài)功耗以至總體功耗做了有益探索。本設(shè)計是在對當前地震測量技術(shù)發(fā)展研究的基礎(chǔ)上,提出的一種功耗低、體積小、野外使用安裝便捷的實現(xiàn)方案,對降低數(shù)據(jù)采集成本、延長系統(tǒng)有效工作時間、提高野外工作效率有著積極意義。
參考文獻
[1] 杜春雷.Arm體系結(jié)構(gòu)與編程[M].北京:清華大學出版社,2003.
[2] CHARLES H.ROTH,Jr.數(shù)字系統(tǒng)設(shè)計與VHDL[M].北京:電子工業(yè)出版社,2008.
[3] GROUT I著.基于FPGA和CPLD的數(shù)字系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2009.
[4] 劉淼.嵌入式系統(tǒng)接口設(shè)計與Linux驅(qū)動程序開發(fā)[M].北京:北京航空航天出版社,2O06.
[5] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008.
[6] Jens Ha kov,著.地震觀測技術(shù)與儀器[M].趙仲,趙建和譯.北京:地震出版社,2007.
[7] 張朋.嵌入式系統(tǒng)在工程地震儀的應(yīng)用研究[J].計算機與數(shù)字工程,2008,36(2):l37-l39.
評論