湯莉莉 王紅心 張卓 王泉濤 劉進(jìn)
摘 要:隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,它逐漸被應(yīng)用于各行各業(yè),甚至人們的生活中。本設(shè)計(jì)是把物聯(lián)網(wǎng)技術(shù)應(yīng)用于實(shí)驗(yàn)儀器智能化管理上,以移植了嵌入式Linux系統(tǒng)的主板為管理平臺(tái);向下通過(guò)RS232、485、USB、WLAN等接口,連接到各種電子實(shí)驗(yàn)儀器,根據(jù)儀器廠家提供的通信協(xié)議與儀器通信,操作和控制儀器;向上由局域網(wǎng)或無(wú)線傳輸模塊,根據(jù)定義的通信協(xié)議,與PC客戶端交互,實(shí)施授權(quán)管理和狀態(tài)檢測(cè)。該設(shè)計(jì)提出了一種新的思路,或?yàn)榻窈髮?shí)驗(yàn)室儀器智能化管理提供一定的參考價(jià)值。
關(guān)鍵詞:嵌入式 ARM Linux操作系統(tǒng) 數(shù)據(jù)結(jié)構(gòu) Linux網(wǎng)絡(luò)編程 串口通信
中圖分類(lèi)號(hào):TP399;TN91 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)12(c)-0018-02
“物聯(lián)網(wǎng)概念”是在“互聯(lián)網(wǎng)概念”的基礎(chǔ)上,將其用戶端延伸和擴(kuò)展到任何物品與物品之間,進(jìn)行信息交換和通信的一種網(wǎng)絡(luò)概念。物聯(lián)網(wǎng)技術(shù)現(xiàn)已廣泛應(yīng)用于醫(yī)療、交通、工業(yè)、農(nóng)業(yè)、環(huán)保等各行各業(yè),并廣泛惠及民生。
目前本科階段學(xué)生實(shí)踐能力的培養(yǎng)主要是在院校實(shí)驗(yàn)室內(nèi)進(jìn)行,各院校為緊跟社會(huì)需求,在學(xué)生實(shí)踐能力的培養(yǎng)上花費(fèi)了大量人力和物力,采購(gòu)了大量的實(shí)驗(yàn)器材,但往往器材采購(gòu)后,由于人力有限,加上不能對(duì)設(shè)備直接進(jìn)行實(shí)時(shí)管理,資源利用率并不高,只有為數(shù)不多的實(shí)驗(yàn)室對(duì)部分學(xué)生開(kāi)放,而且需要配備相當(dāng)?shù)娜肆ΑMㄟ^(guò)引入最新的物聯(lián)網(wǎng)技術(shù),構(gòu)建一個(gè)實(shí)驗(yàn)儀器智能管理平臺(tái)系統(tǒng),通過(guò)這個(gè)平臺(tái),可以實(shí)時(shí)的監(jiān)控到儀器的使用狀況,可以根據(jù)這些數(shù)據(jù),合理的調(diào)配實(shí)驗(yàn)室資源、及時(shí)報(bào)告存在故障的儀器、認(rèn)定儀器損壞的責(zé)任,最終達(dá)到減少人力投入和提高使用效率的目的。
1 硬件設(shè)計(jì)要求與方案選擇
該設(shè)計(jì)主要的硬件選擇就取決于采用何種芯片的開(kāi)發(fā)板平臺(tái),選擇的要求如下:
(1)能夠移植Linux系統(tǒng)。
(2)NANDflash不小于2 G。
(3)外設(shè)接口,如USB、RS232、485、CAN、WLAN等接口要盡可能的多。其他不必要的接口,如LCD、LVDS、TFT、HDMI等顯示接口要盡可靠裁剪,避免浪費(fèi)資源。
(4)易于開(kāi)發(fā),選用的開(kāi)發(fā)板要有可靠的可以開(kāi)發(fā)手段,如程序開(kāi)發(fā)工具、仿真調(diào)試手段等。另外,還需要有完備的技術(shù)資料。
(5)選用的開(kāi)發(fā)板平臺(tái),要實(shí)用,但價(jià)格不能太昂貴。
鑒于以上的要求,首先考慮ARM系列開(kāi)發(fā)板平臺(tái),雖然最新的Cortex系列應(yīng)用廣泛,但考慮到開(kāi)發(fā)難易度,價(jià)格因素,該設(shè)計(jì)選擇了一款以ARM11芯片(三星S3C6410)作為主處理器的嵌入式核心板Tiny6410。
2 嵌入式Linux系統(tǒng)移植
2.1 移植重難點(diǎn)分析
移植的重難點(diǎn)在于需要耐心地去配置新的系統(tǒng)。選取需要的源代碼,編譯成可執(zhí)行文件,使其能啟動(dòng)所用的主板。u-boot主要配置包括工程配置和代碼移植。工程配置目的是使u-boot能夠支持主板,需要添加所用主板的配置信息到u-boot工程,關(guān)鍵要添加主板配置文件、主板目錄文件;代碼移植的目的是為了添加和修改我們所需要的源代碼,使這個(gè)通用的u-boot能夠更好地支持我們主板的芯片,能夠啟動(dòng)它[1-2]。
2.2 移植步驟
首先搭建交叉編譯環(huán)境,交叉工具鏈為arm-linux-gcc-4.5.1。然后再根據(jù)需要配置編譯u-boot、kernel、rootfs文件系統(tǒng),經(jīng)編譯和執(zhí)行生成得到u-boot.bin、zImage、ramdisk.img文件,再通過(guò)u-boot下載到FLASH上完成整個(gè)燒寫(xiě),啟動(dòng)系統(tǒng)。
3 軟件系統(tǒng)設(shè)計(jì)
此管理平臺(tái)核心為各軟件模塊的設(shè)計(jì),以RS232作為數(shù)據(jù)傳輸,網(wǎng)關(guān)服務(wù)器作為橋梁、PC作為客戶端,實(shí)施監(jiān)控與管理。
3.1 USB-RS232驅(qū)動(dòng)加載
內(nèi)核模塊有動(dòng)態(tài)與靜態(tài)加載,由于驅(qū)動(dòng)模塊加載到內(nèi)核會(huì)一直用到,不存在卸載,且方便使用、節(jié)省內(nèi)存空間,所以選擇靜態(tài)加載方式[3]。
3.2 網(wǎng)關(guān)服務(wù)器程序
ARM11開(kāi)發(fā)板作為主要控制平臺(tái),它的主要功能有兩個(gè),(1)通過(guò)不同的接口,與各種儀器進(jìn)行通訊,獲取我們需要的數(shù)據(jù),并存儲(chǔ)起來(lái);(2)通過(guò)TCP/IP協(xié)議與客戶端進(jìn)行交互,交流信息。
根據(jù)網(wǎng)關(guān)服務(wù)器要實(shí)現(xiàn)的功能,把編寫(xiě)代碼分為3個(gè)模塊[4],各模塊之間的關(guān)系如下圖所示,3個(gè)模塊文件中串口配置文件和數(shù)據(jù)存數(shù)文件是被主程序調(diào)用的,主程序模塊是現(xiàn)實(shí)服務(wù)器功能的核心。
如下圖所示,服務(wù)器端程序啟動(dòng)后,在主程序中,先創(chuàng)建鏈表[5-6],為后面存儲(chǔ)數(shù)據(jù)做準(zhǔn)備;再初始化串口,創(chuàng)建兩個(gè)線程,最后一直向串口中寫(xiě)數(shù)據(jù);在主程序中創(chuàng)建的線程,一個(gè)實(shí)現(xiàn)TCP服務(wù),一個(gè)監(jiān)測(cè),讀串口數(shù)據(jù)。在TCP服務(wù)中,實(shí)際是一個(gè)用select輪詢實(shí)現(xiàn)的并發(fā)的服務(wù)器,可以同時(shí)接受多個(gè)客戶端的請(qǐng)求。
3.3 客戶端(PC端)程序開(kāi)發(fā)
客戶端程序,相對(duì)于網(wǎng)關(guān)服務(wù)器的程序來(lái)說(shuō),簡(jiǎn)單很多,整個(gè)程序的執(zhí)行流程都是單線程,客戶端端程序和TCP服務(wù)端的程序很相似,執(zhí)行流程也大致一直。先創(chuàng)建socket套接字;填充socket,主要填寫(xiě)服務(wù)端的IP地址,和連接端口號(hào)。綁定bind操作,在客戶端上,可有可無(wú),但在服務(wù)端,必須要做,否則客戶端無(wú)法連接。接下來(lái)就是客戶端connect操作,請(qǐng)求連接服務(wù)器,連接成功,進(jìn)行通信。
4 系統(tǒng)調(diào)試
4.1 Linux系統(tǒng)啟動(dòng)調(diào)試
(1)方法與步驟:內(nèi)核調(diào)試→文件系統(tǒng)調(diào)試→修改啟動(dòng)參數(shù),上電自啟動(dòng)。
(2)結(jié)果:經(jīng)調(diào)試,移植到板子上的Linux系統(tǒng)可以正常啟動(dòng),能正常掛載根文件系統(tǒng)。啟動(dòng)中沒(méi)有出現(xiàn)kernel panic 和kernel dump的系統(tǒng)錯(cuò)誤。
4.2 串口模塊調(diào)試
用USB-RS232串口線將示波器和PC相連,裝好驅(qū)動(dòng)后,打開(kāi)putty,進(jìn)行相關(guān)設(shè)置。經(jīng)調(diào)試,Linux啟動(dòng)后,用USB-RS232串口線連接示波器,系統(tǒng)能識(shí)別。在管理平臺(tái)上運(yùn)行server程序,并打開(kāi)示波器的電源,終端上就可以打印出來(lái)。
4.3 TCP服務(wù)模塊調(diào)試
經(jīng)調(diào)試,在Ubuntu上server端可以與client端連接成功。將server程序移植到平臺(tái)上,再次運(yùn)行server端程序,Ubuntu上客戶端依然能連接成功。
4.4 聯(lián)合調(diào)試
管理平臺(tái)上Linux系統(tǒng)啟動(dòng)后,用USB-RS232串口線,將兩個(gè)示波器和管理平臺(tái)連接,用網(wǎng)線將管理平臺(tái)和Ubuntu PC相連接。在Ubuntu上交叉編譯服務(wù)端工程文件,得到可執(zhí)行文件server,拷貝到管理平臺(tái)上,用命令:./server運(yùn)行。打開(kāi)示波器的電源。在Ubuntu上用Gcc編譯客戶端程序,得到可執(zhí)行的文件client;運(yùn)行程序:./client 192.168.1.127 8888。在終端上打印出和服務(wù)端連接成功的信息,按任意鍵,可得到關(guān)于示波器的信息,調(diào)試成功。用組合鍵Ctrl+Alt+T另開(kāi)多個(gè)終端,切換到工程目錄下,再運(yùn)行客戶端,結(jié)果和上面一樣,表明多客戶端調(diào)試成功。
5 結(jié)語(yǔ)
該實(shí)驗(yàn)儀器管理平臺(tái)能夠獲取示波器啟動(dòng)時(shí)的信息和運(yùn)行狀態(tài),并且存儲(chǔ)起來(lái);位于PC上的客戶端,可以通過(guò)TCP服務(wù)訪問(wèn)管理平臺(tái),得到想要的數(shù)據(jù)。另外,其PC客戶端可跨平臺(tái),解決了單平臺(tái)Linux的局限性。在局域網(wǎng)的所有PC都能訪問(wèn)管理平臺(tái),獲取實(shí)驗(yàn)儀器的使用情況,能多個(gè)客戶端通信,還可以實(shí)時(shí)顯示實(shí)驗(yàn)室監(jiān)控畫(huà)面。
實(shí)現(xiàn)了管理平臺(tái)的基本功能,完成了物聯(lián)網(wǎng)嵌入式技術(shù)在實(shí)驗(yàn)儀器智能化管理上的應(yīng)用的實(shí)物模型驗(yàn)證,或?yàn)楦咝?shí)驗(yàn)儀器智能化管理提出一種新的思路,同時(shí)為未來(lái)的管理智能化提供一定的參考價(jià)值。
參考文獻(xiàn)
[1] 程姚根,苗德行.嵌入式操作系統(tǒng)(Linux篇)[M].北京:人民郵電出版社,2014.
[2] 劉剛,趙劍川.Linux系統(tǒng)移植[M].北京:清華大學(xué)出版社,2010.
[3] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2010
[4] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第四版)[M].北京:清華大學(xué)出版社,2012.
[5] 程杰.大話數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2011.
[6] Robert Mecklenburg.GNU Make項(xiàng)目管理(第三版)[M].北京:人民郵電出版社,2006.