基于A(yíng)LE標準的嵌入式RFID中間件設計
關(guān)鍵詞:產(chǎn)品電子代碼;應用層事件接口;射頻識別;中間件;嵌入式系統
1 引言
在RFID技術(shù)迅速發(fā)展并得到越來(lái)越廣泛的應該的同時(shí),也伴隨著(zhù)出現了兩個(gè)問(wèn)題:第一,在一個(gè)如此大的市場(chǎng)里,存在著(zhù)眾多協(xié)議,還存在著(zhù)各種使用和操作不同的形形色色的閱讀器,這嚴重阻礙了RFID技術(shù)的大規模應用;第二,如何整合、過(guò)濾和傳輸這些數據使企業(yè)不會(huì )被大量的數據淹沒(méi)而得不到RFID技術(shù)帶來(lái)的好處是另一個(gè)急待解決的重要問(wèn)題。
在這種情況下,RFID中間件運因而生,并得到了快速的發(fā)展,RFID中間件可以屏蔽各種不同規格型號的閱讀器和各種不同協(xié)議標準的標簽,讓上層應用軟件得到統一、不變的接口;另外,它還負責整合和過(guò)濾數據,產(chǎn)生報表,使海量數據的傳輸和應用成為可能。
目前,國內外的RFID中間件體積大,所設計只適用于PC機,不能直接移植到嵌入式閱讀器中,本文實(shí)現了一種可移植,可直接運行于嵌入式閱讀器設備上,基于ALE標準的嵌入式RFID中間件。
2 EPCglobal ALE標準
EPC[1] 是 Electronic Product Code (產(chǎn)品電子代碼)的縮寫(xiě),是美國麻省理工學(xué)院的自動(dòng)識別中心(Auto-ID 中心)提出的,其主要思想是為每一個(gè)參加物聯(lián)網(wǎng)的產(chǎn)品分配一個(gè)電子標簽,該標簽存儲了一個(gè)世界唯一的EPC碼,當產(chǎn)品通過(guò)閱讀器時(shí),由RFID技術(shù)來(lái)讀取數據,得到對應的EPC碼,最后通過(guò)與互聯(lián)網(wǎng)相連的服務(wù)器來(lái)完成相應的EPC碼的解析。
EPC系統主要由EPC編碼, EPC 標簽,EPC 讀寫(xiě)器, EPC 中間件, PML (物理標記語(yǔ)言) 服務(wù)器,ONS (對象名解析服務(wù)) 服務(wù)器等組成。系統協(xié)議主要由RFID通信協(xié)議,應用事件管理(ALE)協(xié)議等組成。
EPC ALE[2] 協(xié)議是EPC 中間件與閱讀器模塊和客戶(hù)應用程序之間的接口協(xié)議. 該協(xié)議定義了客戶(hù)可以如何過(guò)慮和整合來(lái)自多個(gè)閱讀器的EPC標簽,并面向不同的企業(yè)應用程序和閱讀器定義了統一的接口,這樣即使后端應用程序增加或改由其他軟件取代,或者RFID讀寫(xiě)器的種類(lèi)有所改變、增加等情況發(fā)生時(shí),其它部件不需要做修改。ALE所包含的處理過(guò)程有: 接收來(lái)自一個(gè)或多個(gè)數據源的EPC 標簽碼; 根據客戶(hù)端(企業(yè)應用程序)要求以一定的時(shí)間間隔整合數據, 過(guò)濾重復和不感興趣的EPC 碼;根據客戶(hù)端要求以不同的形式打包發(fā)送報告。ALE協(xié)議是基于事件的,工作方式可為同步模式或異步模式,對實(shí)時(shí)性有較高的要求,而對接收到的EPC數據的存儲時(shí)間不要求很長(cháng),當收到的EPC數據已經(jīng)被相關(guān)所有事件處理且發(fā)送后,該數據將可以被刪除。發(fā)送數據包的文件格式是XML格式,所有要發(fā)送給客戶(hù)或者其他閱讀器的數據封裝成為XML文件,客戶(hù)端將收到的數據文件后根據對應規定的XML格式解析出相應的數據信息。ALE在EPCglobal中的位置如圖1,位于原始EPC檢測事件層(RFID標簽閱讀層)和應用商業(yè)邏輯層之間。
圖1 ALE在EPCglobal網(wǎng)絡(luò )結構中的位置
3 基于EPCglobal ALE標準的嵌入式RFID中間件實(shí)現方案
3.1 本文設計的RFID中間件主要實(shí)現特點(diǎn)
該中間件構架于嵌入式系統中,它有別于運行在一般計算機上的中間件,在嵌入式系統上實(shí)現RFID中間件功能,使中間件可以集成在閱讀器上。這樣一方面增強了閱讀器的性能,使傳統"啞"閱讀器成為名副其實(shí)的"聰明"閱讀器,另一方面,使RFID中間件和閱讀器形成一個(gè)整體,體現了"All in a box"思想,這樣既方便了RFID系統的安裝,又降低了成本。該中間件同時(shí)支持EPCglobal ALE標準,該標準應用廣泛,可以應用于不同規格型號的閱讀器,支持多種標簽標準,為上層應用提供統一不變的標準接口,具有很強的通用性和兼容性。該中間件還具有網(wǎng)絡(luò )功能,具有普通的web服務(wù)器和數據庫功能,這實(shí)現了閱讀器與閱讀器,閱讀器與客戶(hù)端的網(wǎng)絡(luò )通信和數據緩沖,且網(wǎng)絡(luò )之間的數據都是封裝成為標準的XML格式傳輸。
3.2 嵌入式RFID閱讀器硬件系統平臺
該嵌入式RFID閱讀器有三個(gè)基本的硬件模塊:天線(xiàn)和射頻模塊,DSP基帶板模塊,主控系統模塊。天線(xiàn)和射頻模塊負責射頻信號的發(fā)射和接收,DSP基帶模塊負責對射頻模塊接收到的信號轉換為數字信號,進(jìn)行CRC校驗,并把數據通過(guò)HPI接口傳給主控系統模塊,同時(shí)也負責對主控系統模塊發(fā)出的控制命令進(jìn)行解析和實(shí)現。主控系統模塊主要負責整個(gè)系統的控制和標簽的處理,和客戶(hù)服務(wù)響應。
主控系統模塊主要由ARM(AT91RM9200)和周邊器件組成,操作系統為arm-linux2.4.19。中間件將運行于該模塊中。
3.3 嵌入式RFID中間件軟件體系結構
本系統采用分層的軟件體系結構,低層是Linux操作系統和各外設接口的驅動(dòng)模塊,包括DSP驅動(dòng)、網(wǎng)口驅動(dòng)和串口驅動(dòng)。中間層是GoAhead Web服務(wù)器和嵌入式數據庫SQLite,上層是閱讀器管理,ReadProtocol和ALE層,如圖2所示。
圖2 軟件體系結構
操作系統是中間件的基礎,采用嵌入式Linux作為本嵌入式RFID中間件的操作系統,Linux支持TCP/IP,HTTP等多種協(xié)議,省去了協(xié)議移植等復雜工作,降低了中間件的開(kāi)發(fā)難度,縮短了開(kāi)發(fā)周期。DSP驅動(dòng)、網(wǎng)口驅動(dòng)、串口驅動(dòng),是為RFID閱讀器開(kāi)發(fā)的驅動(dòng)模塊,只需在linux的支持上作些修改。Linux 移植技術(shù)已經(jīng)成熟, 本文不作詳細的闡述。
GoAhead Web 服務(wù)器是一款主要面向嵌入式系統的 Web 服務(wù)器,主要功能模塊有安全模塊,GoForm模塊,CGI模塊,SSL(Secure Sockets Layer)模塊。其中安全模塊中又包含內存數據庫模塊,主要負責存儲用戶(hù)信息,以及提供保密安全機制。GoForm模塊主要負責處理客戶(hù)提交的表單數據,并以web頁(yè)面的形式返回相應的處理結果。CGI模塊主要處理客戶(hù)的CGI請求。SSL模塊在GoAhead中實(shí)現了SSL協(xié)議。它是本文設計嵌入式中間件的基本軟件架構,系統的所有網(wǎng)絡(luò )開(kāi)發(fā)都是在這個(gè)架構上進(jìn)行,GoAhead web服務(wù)器作為中間件的一個(gè)數據轉發(fā)平臺和模塊承載平臺,閱讀器與客戶(hù)端之間,閱讀器與閱讀器之間的數據通信都是由GoAhead Web服務(wù)器來(lái)完成,ALE協(xié)議實(shí)現模塊(ALE模塊),數據庫管理模塊,閱讀器管理模塊,ReaderProtocol Server模塊等的開(kāi)發(fā)也是建立在GoAhead的基礎上的。
數據庫采用SQLite,SQLite是一種小巧、免費、開(kāi)源的嵌入式數據庫應用軟件,它提供了標準SQL語(yǔ)言,并且由于其工作速度較快,滿(mǎn)足了數據的實(shí)時(shí)要求。它可以集成在應用軟件中,也可以獨立運行,本系統選用它主要是對原始數據進(jìn)行平滑、過(guò)濾以及根據客戶(hù)端的命令篩選出數據。
Reader Management是閱讀器管理模塊,負責設置本閱讀器的工作狀態(tài)和工作模式。
Reader Protocol是閱讀器協(xié)議服務(wù)器,它負責管理所有與該中間件閱讀器相連的閱讀器,是Reader Protocol協(xié)議在中間件上的實(shí)現。
ALE Server是ALE協(xié)議服務(wù)器,它是該系統的核心,負責向上層應用程序提供標準的ALE接口,實(shí)現各個(gè)ALE接口。
3.4 ALE標準在該嵌入式中間件系統中的實(shí)現
如何在RFID中間件的軟件系統中實(shí)現EPCglobal ALE規范,是本系統開(kāi)發(fā)的核心。在系統中,我們開(kāi)發(fā)了ALE模塊用以實(shí)現了EPCglobal ALE標準,由于中間件采用的基本軟件架構是GoAhead Web服務(wù)器,它作了一個(gè)模塊承載平臺,在上面可以很好地嵌入ALE模塊。ALE模塊在GoAhead中的位置以及ALE模塊的處理流程如圖3所示。
圖3 ALE模塊在GoAhead中位置以及其處理流程
客戶(hù)端用http協(xié)議發(fā)送一個(gè)ALE命令的XML文件給服務(wù)器端,服務(wù)器端在GoAhead進(jìn)程中接收該xml文件,然后將該文件封裝成消息,根據不同的接口函數填充上具體消息類(lèi)型,然后用命令消息隊列傳給ALE進(jìn)程,在A(yíng)LE進(jìn)程中從命令消息隊列把消息取出,根據消息的類(lèi)型把XML文件交給相應的函數去解析和做相應的操作。
在A(yíng)LE模塊中,對于每個(gè)用戶(hù)定義的ECSpec[2](它是一個(gè)復雜的數據結構類(lèi)型,規定了如何處理和完成一個(gè)事件周期),系統實(shí)現了四個(gè)狀態(tài):Undefine,Unrequested,Requested,Active。Undefine表示該ECSpec現在已不能再使用,即將被釋放;Unrequested表示該ECSpec現在處于沒(méi)有用戶(hù)訂閱狀態(tài);Requested 表示該ECSpec現在處于有用戶(hù)訂閱狀態(tài);Active表示該ECSpec現在正要觸發(fā)線(xiàn)程來(lái)制作和發(fā)送報表的狀態(tài)。每個(gè)不處于Undefine的ECSpec將對應一專(zhuān)有的子線(xiàn)程(在A(yíng)LE進(jìn)程中創(chuàng )建),該子線(xiàn)程處理該ECSpec所規定的具體數據提取,報表制作和發(fā)送。各個(gè)ECSpec對應的子線(xiàn)程將互不干擾,子線(xiàn)程只跟主線(xiàn)程(ALE進(jìn)程原線(xiàn)程)有聯(lián)系,通過(guò)條件變量機制實(shí)現主線(xiàn)程對子線(xiàn)程的觸發(fā)和控制。
系統在根據對應的ECSpec要求進(jìn)行數據提取、過(guò)濾、整合時(shí),將與數據庫系統模塊相互結合。數據庫系統模塊首先把從閱讀器讀到的原始數據進(jìn)行濾除重復多余的EPC碼,并屏蔽各種不同閱讀器數據格式的差異,統一數據格式后將數據送入到數據庫SQLite中,成為數據庫操作的數據源。系統的數據提取等操作就是在該數據源中進(jìn)行的,這些操作是通過(guò)應用SQLite自身標準SQL語(yǔ)言來(lái)實(shí)現的。在相應的數據操作完成后,必須把數據源中的過(guò)期數據進(jìn)行刪除。
在完成了數據的提取和整合后,系統將把數據根據對應ECSpec的具體要求封裝成為XML格式,并以TCP方式發(fā)送給所訂閱的用戶(hù)。
4 結束語(yǔ)
本文作者研究的創(chuàng )新點(diǎn)是在基于EPCglobal ALE標準,如何設計構架于嵌入式系統中的RFID中間件方面上,提出了比較清晰的思路,并按照該思路實(shí)現了基于EPCglobal ALE標準的嵌入式RFID中間件,經(jīng)編譯運行測試,該系統體積小、穩定可靠、實(shí)時(shí)性好、并行處理速度高,可廣泛應用于嵌入式RFID閱讀器系統中。
參考文獻:
[1] AUTO-ID Center, The EPCglobal Architecture Framework, [EB/OL].
http://www.epcglobalinc.org/standards_technology/ Final-epcglobal-arch-20050701 pdf
[2] AUTO-ID Center,The Application Level Events (ALE) Specification Version 1.0 [EB/OL].
http://www.epcglobalinc.org/standards_technology/EPCglobal_Application_Level_Events(ALE)_Specification_v1. df
[3] 王學(xué)龍.嵌入式 Linux 系統設計與應用.清華大學(xué)出版社,2001
[4] Klaus Finkenzeller著(zhù),陳大才編譯.射頻識別(RFID)技術(shù) 北京:電子工業(yè)出版社,2001
[5] 蘆東昕,李強,柳長(cháng)安. 基于A(yíng)RM的RFID閱讀器設計[J].微計算機信息,2006,10-2:286-288
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論