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