劉寧樅,張 榮,陸 鋒
(1.江南大學物聯網工程學院,江蘇無錫214122;2.中國電子科技集團公司58所,江蘇無錫214035)
基于S3C6410的模塊化傳感網網關設計
劉寧樅1,2,張 榮2,陸 鋒1,2
(1.江南大學物聯網工程學院,江蘇無錫214122;2.中國電子科技集團公司58所,江蘇無錫214035)
設計一種基于ARM11的無線傳感器網絡嵌入式網關。該網關在軟、硬件系統的設計過程中采用了模塊化、層次化的設計,同時還支持以太網、CDMA、WiFi、USB等多種接口及網絡的接入機制,各通信機制均采用socket機制并利用多線程技術控制,提高了Internet與ZigBee網絡之間數據的透明轉換的穩定性和效率。
ZigBee;網關;模塊化設計;通信機制;socket;多線程
當前基于ZigBee的無線傳感器網絡(WSN)是新一代的傳感器網絡。在目標區域內大量微型傳感器節點通過無線通信方式形成一個多跳、自組織的網絡系統,其低功耗、可組網的特點已被廣泛應用于大量的數據采集系統。而無線傳感器網絡要實現與外部網絡異構網絡間的遠程數據通信,則需要物聯網網關來實現。針對傳統網關單一的通信方式以及通信機制效率低的問題,本文設計一種不僅能夠支持多傳感器接入方式、多接口及網絡接入機制,并具有可擴展性、可配置性、支持多線程及低功耗等特點的網關,具有良好的實時性、通用性,也可以避免不同應用系統的重復開發成本,具有良好的應用前景。
通過文獻[1]提到,傳感器網絡中ZigBee采集網絡負責采集傳感器數據和傳輸數據,ZigBee網絡中節點分為終端節點、路由器節點和協調器節點,散布在工作區域內各個角落,通過自組織的方式構成龐大的無線網絡以獲取感知區域內的數據。其中終端節點和路由節點負責采集傳感器值,而且路由節點同時負責多跳路由,允許其他設備加入網絡和協助終端節點通信。而協調器節點每個網絡只有一個,它負責組織和管理整個網絡本文所設計網關將協調器節點同網關主板通過SPI接口集成,以便于管理和控制傳感網絡。協調器節點將采集的數據與信息進行簡單處理后發送至網關,然后對數據信息進行轉換處理后通過以太網或者無線通信網絡傳送至遠程終端。網關總體架構見圖1。

圖1 網關系統結構
本文所設計的嵌入式網關在硬件上是協調器模塊、網關主板模塊、有線/無線網絡接入模塊這3個部分來實現模塊化的設計方案的[2]。網關軟件采用內嵌Linux-2.6.28內核,該操作系統是一個開源、可移植性高、支持網絡的多線程任務的系統,包括TCP/IP堆棧、程序集以及無線通信堆棧等。整個Linux系統還包括引導加載程序(Bootloader)、文件系統、驅動應用軟件等。本文在系統中內嵌了Web server,充分利用了Linux支持多線程[3]的特性,大大提高了系統資源利用率。
硬件平臺設計時遵循的兩大原則:
1)將公用模塊獨立出來,以便將來根據應用需求不斷地升級和改造;
2)設計盡量簡單,選用集成度高的芯片。
本文采用上述原則設計網關,將網關主板分成了微處理器模塊和人機交互接口模塊,與ZigBee協調器模塊、有線/無線通信模塊分開獨立設計。4個模塊可以分別獨立設計并且升級改造。
網關的硬件平臺模塊化結構如圖2所示。

圖2 基于S3C6410的網關硬件平臺模塊化結構
2.1 ZigBee協調器模塊
ZigBee協調器模塊硬件包括MCU電路、時鐘、RF匹配電路、天線、相應的對外接口等。在本模塊的設計中,為了盡可能地減少電路板上的元件數目,以此來提高電路的可靠性和降低電路的功耗,選用了 FreeScale公司MC13224V[4]作為核心芯片,該芯片集成了ARM7內核、2.4 GHz射頻發生器、IEEE802.5.4 MAC硬件加速器和AES硬件加速器,內置Flash、SRAM和ROM、AD轉換模塊等。該模塊使用3個時鐘晶振:頻率為24 MHz的主晶振,振蕩頻率32.768 MHz的輔助晶振,振蕩頻率為2 MHz的內置振蕩器。在正常工作模式下,用主晶振時鐘;當處理器進入睡眠狀態時采用輔助晶振或內置振蕩器,以達到降低功耗,模塊功耗最低可達0.015 mA。模塊對外有UART、SPI、SSI、USB、JTAG仿真接口、2個12 bit ADC(共8路外部輸入)等,可以接多種傳感器,通過SPI同微處理器以4線方式相連。
2.2 微處理器模塊
微處理器模塊采用的是三星公司的S3C6410 RISC嵌入式處理器,該處理器采用ARM1176JZF-S[5]作為CPU,它有著集成度高和功耗低的特點。在1.2 V工作電壓下,最高的工作頻率可達到667 MHz。處理器可以外接Flash和DDR兩種存儲器,外部存儲器選用 NAND Flash K9GAG08U0E-SCB0芯片、MLC存儲格式,容量為2 Gbyte,Flash掉電不丟失信息,主要是用來存放軟件的目標代碼,比如:Bootloder引導程序、操作系統內核、各種驅動程序以及應用程序等。內部存儲器上選用K4X1G163PC系列中64×16 bit DDR,且使用2塊芯片構成256 Mbyte內存空間,用于存儲處理器高速運行時產生的數據。
2.3 人機交互接口模塊
主板上這一部分主要完成狀態指示、供電、顯示、USB通信、I/O擴展等輔助功能。常用外設接口包括多個UART、多個USB、SD卡、LCD屏、按鍵等,而且為了方便擴展外設,芯片內置了USB OTG,同時S3C6410處理器支持從SD卡啟動,只需將Bootloder程序燒寫到SD卡高位地址起始處。
2.4 無線/有線網絡接入模塊
本文所設計網關支持多種接入機制,具有較強的兼容性。主要支持以太網、CDMA、WiFi等機制,既可實現廣域通信,也可完成局域互聯。以太網接入機制采用DM9000A[5]網卡芯片,它可以自適應10/100 Mbit/s網絡,功耗低,可提供8位和16位的內存訪問數據。CDMA選用了HUAWEIE1750,帶USB接口,通過USB接口與主機通信。WiFi選用體積較小的SD-WiFi模塊。
網關是數據傳輸的中樞節點,網關系統在無線傳感器網絡與外部網絡進行數據通信的過程中起承接作用。系統的工作流程如圖3所示。
從圖中看出系統工作包括兩個方面:一方面是協調器同ZigBee網絡互聯,一方面是Linux系統與以太網/無線網絡(CDMA,WiFi)的命令控制和數據傳輸。以太網穩定可靠,但是應用條件通常受限,無線通信移動性能良好,但是容易受到網絡覆蓋面及成本高的問題困擾。本文所設計網關從軟件層上實現ZigBee、以太網、CDMA、WiFi多種通信機制[6],解決上述問題。此外,軟件層設計還包括網關各模塊底層驅動設計、Linux操作系統的搭建和移植、應用層軟件開發等多個層次。
3.1 ZigBee協調器模塊與網關主板實現通信
ZigBee協調器模塊軟件主要完成的功能組網、節點識別和數據匯聚。其軟件架構分為3層:
硬件適應層:屏蔽硬件差異,向上提供統一的軟件接口。

圖3 軟件系統工作流程
ZigBee協議棧:ZigBee協議的實現,軟件的核心,本文協調器節點采用FreeScale公司的BeeStack協議棧,是一個輪轉查詢式操作系統。
應用層:主要負責組網和數據傳遞。協調器的軟件設計主要是驅動程序設計,任務如下:
1)初始化設備,設置硬件平臺上各個連接管腳的工作狀態,申請中斷等。
2)如果接到發送命令時,則將數據發送到SPI中,MC13224接收到數據后通過中斷觸發發送程序。
3)當協調器模塊芯片處于接收狀態時,數據接收到后通過SPI發送到網關主板。
3.2 網關主板與遠程終端實現通信
當網關主板上系統接收到協調器模塊的數據后,能夠將數據進行解析,然后重新打包轉換成TCP/IP協議通過以太網或者WiFi、CDMA等上傳至遠程終端。當數據流反向時,原理相同。于是網關主板同時實現了TCP/IP協議[7]客戶端與服務端兩種角色,從而完成了兩種異構網絡間的互聯問題。網關主板系統軟件也分為三層架構。
驅動層:驅動層主要包含網關主板的各個接口的驅動,主要包括以太網卡、3G網卡、WiFi網卡以及各感知網模塊的驅動,它的功能主要是為應用層提供操作接口。
OS層:OS層為Linux操作系統,負責組織和協調資源。嵌入式Linux系統的開發包括了BootLoader程序的編寫、系統的剪裁和移植。
應用層:應用層主要包括數據采集、協議轉換、業務和管理功能。其中Linux系統帶有TCP/IP協議棧,還編寫了協議轉換程序。
在本文中,網關與遠程終端之間的數據傳輸程序采用的是面向連接的客戶機—服務器模型。在數據從Zig-Bee網至WiFi/CDMA/以太網網絡的上行鏈路中,網關作為客戶端,遠程終端作為服務器端。當數據流反向,從以太網/CDMA/WiFi網絡至ZigBee網絡的下行鏈路時,網關又作為服務器端,遠程終端作為客戶端。而網關無論是通過以太網通信還是CDMA/WiFi無線通信,都可以采用這種服務器端-客戶端通信模式,為了方便,下文討論,均以無線WiFi為例。這種通信模式采用了socket[8]通信機制,對數據傳輸具有較高的可靠性。同時這種模式下網關可以同時與多個遠程終端連接。
3.2.1 嵌入式網關作為客戶端應用程序開發
本文Linux系統實現了串口驅動程序,串口通信時在編程上調用open()、read()、write()、accept()等函數來對相應的設備文件完成操作。當網關作為客戶端,建立與服務器端的連接,對SPI串口調用讀操作來完成對協調器模塊數據的接收,然后對無線網卡USB接口寫操作完成數據傳輸和轉發。
客戶端client應用程序實現流程如圖4,其步驟如下:
1)創建一個套接字(socket),初始化相關網絡參數。
2)調用connect()向服務器端套接字申請連接,連接成功后用open()打開ZigBee協調器模塊設備文件。
3)將程序設置為死循環,調用read()和write()函數與服務器端新進程建立雙向通信,協調器模塊不斷接受ZigBee網絡的數據,然后通過USB無線網卡將數據打包成WiFi協議格式發送出去。調用close()關閉套接字從而中斷連接。
3.2.2 嵌入式網關作為服務器端應用程序開發
為了網絡的穩定性,網關將作為服務器端的server程序與client程序分開,作為兩個獨立的應用進程來實現。
服務器端的server程序實現如圖5,步驟如下:
1)創建一個套接字(scoket),并初始化相關網絡參數;調用blind()將所創建套接字與其地址(數據結構中的IP地址和特定的端口號)綁定。
2)調用listen()使套接字監聽客戶端連接請求。當有多個客戶端發出連接請求時,將客戶請求排列并取出隊列中排在最前面的一個,調用accept()接受連接并且創建一個新的套接字來與客戶套接字創建連接通道,并返回與新套接字相關的文件描述符。

圖4 網關作為客戶端
3)同樣將程序設置進入死循環,服務器端創建新進程,調用read()、write()與客戶端進行雙向通信,USB無線網卡不斷接受WiFi網絡的數據,然后寫入SPI接口,MC13224V協調器模塊將數據封裝后加上ZigBee短地址發送出去。調用close()關閉套接字,中斷連接。

圖5 網關作務器端
3.3 應用軟件設計
在對網關軟件進行總體設計時,利用了Linux系統多線程技術來提高系統運行效率。本文所設計網關將應用軟件劃分為網關主板—協調器通信線程、以太網通信線程、CDMA通信線程、WiFi通信線程等多個并行的線程實現。應用軟件在Linux下利用C語言開發。其中網關主板與協調器通信線程是整個系統的數據源,因此設計為主線程,在初始化后第一個調用,其他線程依賴于本線程的實現。總體設計框架如圖6所示。

圖6 應用軟件設計框架
在Linux下進行多線程編程時要充分利用互斥機制,這樣可以避免不同線程同時對數據進行操作,而通過互斥鎖可以保證在一段時間內只有一個線程在執行某段代碼,從而避免異常。這種處理方式不但改善了程序結構,還提高了系統的運行效率。
在基于網關的原型機設計完成后,對系統進行了測試以及驗證,主要測試了網關的組網能力及外網的接入能力。根據測試要求布置了傳感器節點,順序啟動網關設備、路由節點、終端節點,將PC機分別通過以太網、CDMA、WiFi與網關連接。設置網關的IP地址為192.168.1.230。啟動PC端軟件,刷新連接狀態,軟件顯示接入網絡設備狀態,設置PC軟件,進行濕度傳感器數據采集,仍以WiFi網絡為例,通過人手握住濕度傳感器再放開,PC軟件實時準確地更新了采集數據,如圖7所示。

圖7 WiFi接入PC端軟件顯示(截圖)
圖中實時地反應了傳感器節點濕度變化,與實際相符,驗證傳感網組網成功,同時多種網絡接入機制均可實現測試并且數據傳輸效率較高。系統連續工作兩天并未出現問題。
本文主要基于模塊化方法完成多協議網關設計,其特點是:基于模塊化設計能夠更容易實現各模塊升級與改良。該平臺具有多種接口使其有良好的擴展性;同時網關采用多種接入機制,能夠采用多種通信方式實現多種異構網絡之間的無縫連接,結合了Linux系統的多線程的優勢,使得通過現有網絡能夠對傳感網進行遠程管理和控制,大大提高了數據傳輸的穩定性和效率,具有較強的實用性和通用性,對物聯網產業的發展具有良好的促進作用。
[1]陳學文.基于OSGi的傳感器網絡服務網關設計與實現[D].西安:西北大學,2009.
[2]孟勇濤.基于嵌入式系統的物聯網網關研究與實現[D].北京:北京郵電大學,2012.
[3]白瑞林,吳廣霖.嵌入式TCP/IP協議棧多線程應用的實現[J].計算機工程,2006,32(18):84-86.
[4]MC1322xRM,Rev.0.0[EB/OL].[2014-02-23].http://www.freescale.com.
[5]S3C6410X RISCMicroprocessor user’smanual,Revision1.10[EB/OL].[2014-02-23].http://www.samsungsemi.com.
[6]DM9000A-17-DS-P04[EB/OL].[2014-02-23].http://pan.baidu.com/share/link?shareid =2113399983&uk =3003459330&fid = 1024813647373207.
[7]金純,任濤,王曉.基于ARM處理器的ZigBee/TD-SCDMA網關設計[J].電視技術,2011,36(1):59-62.
[8]陳立定,呂盛林.嵌入式Linux監控終端的多線程控制[J].自動化儀表,2011,32(1):13-15.
Design of Modular Sensor Network Gateway Based on S3C6410
LIU Ningzong1,2,ZHANG Rong2,LU Feng1,2
(1.IoT Engineering,Jiangnan University,Jiangsu Wuxi214122,China; 2.China Electronic Technology Group Corporation,No.58 Research Institute,Jiangsu Wuxi214035,China)
A wireless sensor networks based on the ARM11 embedded gateway is designed.The described gateway uses amodular,hierarchical design in the software and hardware system design process,and also supports a variety of interfaces and network accessmechanism to implements a communication protocol conversion of Ethernet,CMDA,WIFI,USB and so on.Each communicationmechanisms uses socketmechanism and utilizesmulti-threading technology to control,all of those improve the stability and efficiency of the transparent conversion of data between ZigBee and Internet.
ZigBee;gateway;modular design;communication mechanism;socket;multithreading
TP393
A
劉寧樅(1988— ),碩士生,主要研究方向為嵌入式系統的開發;
?? 雯
2014-03-05
【本文獻信息】劉寧樅,張榮,陸鋒.基于S3C6410的模塊化傳感網網關設計[J].電視技術,2014,38(13).
張 榮(1983— ),碩士生,研究方向為系統設計與驗證;
陸 鋒,研究員,研究方向為集成電路設計。