摘 要: 介紹了一種基于嵌入式Linux的養(yǎng)殖水質(zhì)監(jiān)控智能儀表的平臺設計。該儀表通過ARM核心處理器連接其他外設功能模塊,實現(xiàn)硬件平臺搭建;通過裁剪和移植Linux內(nèi)核,完善操作系統(tǒng)和驅(qū)動程序等開發(fā),實現(xiàn)硬件平臺上成功安裝操作系統(tǒng)。該智能儀表主要用于水產(chǎn)養(yǎng)殖領域的各項水質(zhì)參數(shù)的監(jiān)測,能夠滿足未來養(yǎng)殖的高效率和高質(zhì)量的需要。
關(guān)鍵詞: 智能儀表;平臺設計;移植
0 引言
水產(chǎn)養(yǎng)殖是我國農(nóng)業(yè)的支柱產(chǎn)業(yè)之一,近年來,水產(chǎn)養(yǎng)殖的品種和產(chǎn)量不斷增加,且養(yǎng)殖的規(guī)模越來越大,這為物聯(lián)網(wǎng)技術(shù)在水產(chǎn)養(yǎng)殖中的應用提供了良好的條件和廣闊的發(fā)展空間。未來的水產(chǎn)養(yǎng)殖將以高成活率和高質(zhì)量為目的,實現(xiàn)這些目的的前提條件之一是要保持養(yǎng)殖水質(zhì)的穩(wěn)定性,如水溫、溶解氧、PH值和濁度等水質(zhì)參數(shù),都需要及時獲取[1]。
傳統(tǒng)的定時取樣和化學分析法獲取養(yǎng)殖水質(zhì)數(shù)據(jù),獲取不及時、可靠性低、實時操作性差且成本高,遠遠不能實現(xiàn)上述的需求。后來,人們引入了水質(zhì)實時監(jiān)測系統(tǒng),該系統(tǒng)以ZigBee、GPRS、智能水質(zhì)監(jiān)測傳感器等物聯(lián)網(wǎng)技術(shù)為手段,能實時采集養(yǎng)殖水的水位、溶解氧、PH值、溫度和濁度等參數(shù),實現(xiàn)水產(chǎn)養(yǎng)殖水質(zhì)的實時監(jiān)測[2]。但是,該系統(tǒng)主要是與上位機通信,需要一個固定的PC終端來進行遠程、實時的監(jiān)控和操作。因此,設計一種可靠的養(yǎng)殖水質(zhì)監(jiān)控系統(tǒng)的智能儀表,對養(yǎng)殖業(yè)的發(fā)展具有重大意義。
1 硬件平臺架構(gòu)設計
本文中的智能儀表的硬件平臺選用了天嵌公司出品的tq2440開發(fā)板實驗平臺。該開發(fā)板的CPU是基于ARM920T的S3C2440芯片、512 MB的Nand Flash和64 MB的DDRAM、117個I/O通用Pin腳和24位外部中斷源、12位的逐次逼近型A/D轉(zhuǎn)換器等,處理器資源豐富,基本滿足數(shù)據(jù)的采集和信號的轉(zhuǎn)化[3]。
1.1 智能儀表監(jiān)控平臺的架構(gòu)
平臺硬件架構(gòu)設計采用了模塊化設計模式,即各模塊之間相互獨立地掛載到控制板上,以ARM處理器為核心,協(xié)調(diào)其他各個功能模塊工作。其結(jié)構(gòu)框圖如圖1所示。
其中,ARM處理器上運行Linux操作系統(tǒng),負責數(shù)據(jù)的采集、運算和通信等功能;圖像采集模塊是常用的USB攝像頭;水質(zhì)檢測模塊主要由采集各類參數(shù)的傳感器構(gòu)成,通過串口連接平臺,即插即用;標準輸出模塊主要是輸出處理后的數(shù)據(jù)[4]。4G無線通信模塊使用USB 4G無線網(wǎng)卡;LCD模塊作為智能儀表的輸入和輸出模塊;存儲器模塊,因板子Flash容量不足,大存儲主要靠SD卡。
1.2 平臺系統(tǒng)的工作模式
為實現(xiàn)儀表低功耗、高效率的工作,設置了兩種工作模式:常態(tài)模式和用戶態(tài)模式。常態(tài)模式即系統(tǒng)在一般狀態(tài)下的工作模式,該模式下,儀表處于低功耗狀態(tài),多數(shù)模塊處于休眠狀態(tài),不占CPU資源。用戶模式即用戶控制儀表工作的模式,該模式下,各模塊受用戶控制搶占CPU資源工作。
攝像頭、LCD模塊應設置為常態(tài)模式,一般處在休眠狀態(tài),當用戶向內(nèi)核進程發(fā)送喚醒消息后,模塊被內(nèi)核喚醒,才會向CPU申請資源,運行起來。4G無線網(wǎng)絡傳輸速度快,考慮通信流量的費用高,設置網(wǎng)絡模塊定時聯(lián)網(wǎng),間歇式打包發(fā)送數(shù)據(jù)。水質(zhì)監(jiān)測模塊的各個傳感器是實時采集數(shù)據(jù)的,但實際中,養(yǎng)殖水質(zhì)參數(shù)如溫度、溶解氧等是不會實時快速變化的,所以,該模塊常態(tài)模式下,設置為定時采樣,用戶可自定義采集時間,這樣既降低了功耗,同時避免采集太多冗余數(shù)據(jù)。
1.3 平臺系統(tǒng)的智能處理機制
因為該智能儀表是監(jiān)控養(yǎng)殖水質(zhì)的,所以該儀表的智能性主要體現(xiàn)在系統(tǒng)對水質(zhì)參數(shù)數(shù)據(jù)的運算處理上,即實現(xiàn)大數(shù)據(jù)處理。系統(tǒng)中先加載各個參數(shù)的標準數(shù)據(jù)庫,當模塊采集的參數(shù)數(shù)據(jù)定時被CPU采樣時,CPU會對比采樣參數(shù)和標準參數(shù):若結(jié)果沒有發(fā)生異常,CPU將數(shù)據(jù)自動保存到存儲器模塊,打包聯(lián)網(wǎng)傳送給數(shù)據(jù)庫;若比較結(jié)果發(fā)生異常,CPU立即進入異常處理模式,網(wǎng)絡模塊搶占資源聯(lián)網(wǎng),CPU向用戶發(fā)送異常警報,同時將已經(jīng)采集的數(shù)據(jù)打包發(fā)送給用戶。平臺系統(tǒng)的智能處理機制能幫助養(yǎng)殖戶及時、準確地發(fā)現(xiàn)問題所在,還可以結(jié)合用戶的專家系統(tǒng)給出一些解決問題的方法,有效降低了養(yǎng)殖風險。
2 軟件平臺架構(gòu)設計
由于智能儀表的整個系統(tǒng)比較復雜,為了管理和協(xié)調(diào)好各項復雜的任務,決定選用嵌入式Linux操作系統(tǒng)[5]。
結(jié)合嵌入式Linux軟件開發(fā)步驟,確定開發(fā)流程如圖2所示。
2.1 建立Linux交叉編譯環(huán)境
首先在PC上安裝上Linux操作系統(tǒng)并建立適用于ARM的交叉編譯器arm-linux-gcc。交叉編譯工具安裝包可以從網(wǎng)上獲取。建立好Linux交叉開發(fā)環(huán)境后,即可開始軟件系統(tǒng)平臺的移植了。
2.2 移植Bootloader和Linux內(nèi)核
Bootloader是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。
Bootloader的制作過程這里不做詳細介紹。不同于以往的移植方法,在tq2440平臺上,本文提出一種基于USB的移植方法,該方法操作簡單,效率高。下面以Bootloader的移植為例,給予詳細介紹。將開發(fā)板從nor_flash啟動,進入命令輸入模式,如圖3所示。
?。?)輸入命令usbslave 1 30008000,開發(fā)板處于下載等待狀態(tài);
?。?)進入Linux下,輸入命令dnw u-boot.bin 30008000,使用dnw將u-boot.bin文件下載到內(nèi)存地址30008000處;
?。?)輸入命令nand erase 0 40000,擦除從0地址開始長度為40000的內(nèi)存空間;
?。?)輸入命令nand write 30008000 0 40000,從30008000地址處讀取數(shù)據(jù),寫入到0地址處,長度為40000。
說明:(1)中的subslave是啟動USB下載的命令,上述的內(nèi)存起始地址和長度,在內(nèi)核文件中已經(jīng)固定設置,不可更改;(2)中dnw是USB下載軟件,可以由其他USB下載軟件替換;(3)格式化內(nèi)存空間;(4)向內(nèi)存中燒寫B(tài)ootloader。
完成了Bootloader的移植以后,下面進行移植Linux內(nèi)核。
Linux內(nèi)核文件提供了大量的功能驅(qū)動文件,因此需要選擇適當?shù)哪K來裁剪內(nèi)核,配置步驟如下:
?。?)make distclean,清除原有的配置文件和中間文件;
?。?)make menuconfig ARCM=arm,進入內(nèi)核配置界面,按需要裁剪內(nèi)核模塊,如圖4所示。
?。?)make uImage ARCH=arm CROSS_COMPILE=arm-linux-,編譯內(nèi)核,產(chǎn)生uImage鏡像文件。注意,這個內(nèi)核鏡像是不帶根文件系統(tǒng)的,因調(diào)試需要,內(nèi)核中文件系統(tǒng)配置為NFS文件系統(tǒng)。
移植內(nèi)核,步驟基本重復移植U-Boot的步驟。
2.3 移植根文件系統(tǒng)
文件系統(tǒng)是操作系統(tǒng)的重要組成部分。在嵌入式Linux系統(tǒng)啟動時,首先是啟動U-Boot引導程序,然后便會進入制作的文件系統(tǒng)中,如果沒有設置或掛載文件系統(tǒng),那么Linux就會進行系統(tǒng)報錯,并重新啟動。在啟動的同時可以手動掛載新的文件系統(tǒng)。所以,可以制作多個不同的文件系統(tǒng),放在Linux下[6]。
本文中制作的是yaffs2文件系統(tǒng)。制作好yaffs2文件鏡像后,移植到ARM平臺上,移植步驟基本重復Bootloader移植步驟。
這3步成功燒寫到開發(fā)板上,儀表的系統(tǒng)平臺就構(gòu)建完成了,從Nand Flash啟動儀表的系統(tǒng),如圖5所示。
2.4 開發(fā)調(diào)試應用程序
軟件應用程序?qū)⑹褂脤iT為嵌入式Linux操作系統(tǒng)的消費電子設備而開發(fā)的應用平臺——Qtopia構(gòu)建。Qtopia是構(gòu)建在Qt/Embeded上,專為嵌入式設備的圖形用戶接口和應用開發(fā)而設計的C++工具包[7]。其包含有完整的應用層、用戶界面、窗口操作系統(tǒng)、應用程序的啟動程序和開發(fā)框架。Qt/E開發(fā)的應用程序最終要成功在開發(fā)板上運行,開發(fā)過程一般是先在Linux系統(tǒng)上使用Qt/E進行應用程序的編寫和調(diào)試,進行交叉編譯后下載到開發(fā)板。
3 結(jié)論
本文提出了一種基于嵌入式Linux的養(yǎng)殖水質(zhì)監(jiān)控智能儀表的平臺設計。所介紹的儀表的模塊化架構(gòu)和系統(tǒng)的兩態(tài)工作模式能實現(xiàn)該智能儀表的高效率和低功耗工作。儀表的智能處理機制能有效降低養(yǎng)殖風險。文中還給出了該平臺系統(tǒng)的一種新的基于USB的詳細移植過程,實現(xiàn)了平臺系統(tǒng)從零到操作系統(tǒng)移植的實現(xiàn)過程,讓讀者更容易理解和實現(xiàn)。同時,文中的模塊化的設計思想也可以有效地移植到其他實驗平臺上。
總體而言,該智能儀表能滿足水產(chǎn)養(yǎng)殖領域的各項水質(zhì)參數(shù)監(jiān)測的要求,對實現(xiàn)未來養(yǎng)殖業(yè)的高效率和高質(zhì)量具有重要意義。
參考文獻
[1] 蔡蘇華.基于ARM的養(yǎng)殖水質(zhì)監(jiān)測系統(tǒng)的設計與研究[D].南京:南京師范大學,2012.
[2] 吳宇.小型移動水質(zhì)監(jiān)測系統(tǒng)的研究[D].杭州:浙江大學,2013.
[3] 羅志灶,周贏武,羅志仕.基于嵌入式LINUX的智能儀表設計方案[J].微計算機信息,2010,26(10-2):73-75.
[4] 曾寶國,劉美岑.基于物聯(lián)網(wǎng)的水產(chǎn)養(yǎng)殖水質(zhì)實時監(jiān)測系統(tǒng)[J].計算機系統(tǒng)應用,2013,22(6):53-56.
[5] 周桂成.嵌入式Linux無線傳輸車載信息平臺關(guān)鍵技術(shù)研究與開發(fā)[D].長春:吉林大學,2013.
[6] 甄海濤,聶洪淼,陳慶文.基于嵌入式Linux的根文件系統(tǒng)制作與移植[J].自動化技術(shù)與應用,2014,33(12):21-24.
[7] 郝超,潘思陽,張文圳.基于ARM的短信收發(fā)系統(tǒng)的設計[J].信息技術(shù),2013(5):111-114.