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