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