基於嵌入式Linux的攜帶型RFID資訊採集與處理系統

來源:互聯網
上載者:User
 

基於嵌入式Linux的攜帶型RFID資訊採集與處理系統
[日期:2008-7-28] 來源:電子技術應用  作者:武國強,呂柏權 [字型: ]

 

射頻識別(RFID)是一種非接觸式的自動識別技術,它通過射頻訊號自動識別目標對象並擷取相關資料,識別過程無需人工幹預,可工作於各種惡劣環境。RFID技術在許多領域得到應用,如停車場管理、集裝箱運輸管理系統等。在大多數應用中,只要求有固定的閱讀器,但在某些特殊系統中(如集裝箱運輸管理系統),不僅要求有固定的閱讀器,而且還要求有手持式讀卡機。
  TagMaster AB公司是世界知名的RFID讀卡機製造商。它提供效能優良的固定式閱讀器,也提供一種手持式閱讀器。手持式讀卡機由Caiso公司的工業級PDA(Personal Digital Assistants)和TagMaster AB公司的S1510組成。PDA雖然功能強大,但有如下缺點:(1)提供的觸控螢幕輸入方式過於精細,不適合工作人員現場操作;(2)TFT液晶顯示屏在強光下顯示效果差,耗電量大,並且在低溫下(0℃以下)無法工作,因此不適合室外工作;(3)採用Microsoft公司的商用系統WinCE,成本高。
  本文介紹一種基於嵌入式Linux的攜帶型RFID資訊採集與處理系統。它採用高效能的32位ARM920T系列微處理器、8鍵的鍵盤及OLED顯示屏,結合S1510實現了對電子標籤卡資訊的採集、處理及即時顯示,很好地解決了上述問題。
1 系統組成
  系統採用Atmel公司的AT91RM9200 32位高效能處理器、TagMaster公司的S1510及OLED顯示模組等實現電子標籤卡資訊的採集、處理、即時顯示及與上位機通訊等功能。系統組成1。

1.1 微處理器
  系統採用Atmel公司以ARM920T為核心的AT91系列微處理器AT91RM9200。它最高主頻可達180MHz,具有先進的節電技術,整合了SDRAM、Flash、紅外、USB等介面。系統採用USB(Universal Serial Bus)及紅外方式與上位機通訊。紅外方式採用Agilent公司的HSDL-3602紅外收發器實現。
1.2 射頻識別模組
  射頻識別模組採用瑞典TagMaster AB公司的2.4GHz產品S1510。該模組體積小,專為手持功能設計,可以採集1米內各種電子標籤上的資料。它通過USART串口與處理器通訊,介面簡單,易於硬體實現。為了保證資料的可靠傳輸,模組與微處理器通訊採用TagMaster AB公司開發的應答式串口通訊協定ConfiTalk。
ConfiTalk協議是一種面向字元的應答式串列通訊協定。它每次傳輸一定長度的資料區塊(幀),每個幀包含幀頭(STX)和幀尾(ETX)。為了提高資料轉送的可靠性,每幀又加入了8位的校正位(CS)及地址位(ADR)。幀的結構2。

  MESSAGE代表任意長度的資訊。協議規定微處理器發送給S1510的幀為命令幀,返回的幀為應答幀。本系統使用的S1510是TagMaster AB公司的最新產品,它支援基於ConfiTalk協議的MAIL命令方式的資料轉送。MAIL命令方式通訊也就是把幀中的MESSAGE域統一成四種格式,其中命令幀有MAIL_SEND和MAIL_RECEIVE兩種,分別表示S1510接收使用者資訊和返回卡資訊(包括卡號、卡狀態和卡儲存的資料),3。
  應答幀有兩種:MAIL_SEND的應答幀和MAIL_RECEIVE的應答幀,4。

 

  圖4中,36表示S1510使用MAIL方式處理命令幀和應答幀,而4、5表示S1510命令幀的類型(MAIL_SEND或MAIL_RECEIVE);Status表示該命令的執行狀態(成功或失敗);MAIL_SEND命令幀中的Data域表示使用者要進行的操作及參數,如使Data=WRITE:參數:資料,即表示使用者要將資料寫入電子標籤卡;MAIL_RECEIVE的應答幀中的Data域為使用者所要求得到的資料。
  當使用MAIL命令方式讀寫標籤卡時,使用者只需要按幀的格式填充各域,然後利用ConfiTalk協議提供的API函數發送到S1510即可。命令清晰明了,大大方便了使用者的開發。
1.3 OLED顯示模組
  系統採用萊寶科技有限公司的OLED顯示模組RGS24128064YW001。有機發光顯示器OLED(Organic Light Emitting Display)被譽為“夢幻顯示器”。與液晶屏相比,OLED顯示屏更輕更薄、可視角度更大,能夠顯著節省電能,並且在-40℃的低溫下仍可以正常工作。RGS24128064YW001具有串列和8位並行資料介面。系統採用8位並行介面與微處理器通訊。
1.4 SDRAM和Flash及自訂鍵盤
  系統採用32位的同步動態隨機儲存空間(SDRAM)作為系統記憶體,16位的Flash作為不可遺失資料儲存空間。使用者可以通過8鍵的鍵盤進行各種操作,如讀卡、寫卡等。
2 系統軟體設計
  系統軟體是整個系統的靈魂,其設計的好壞直接影響系統的穩定性和可擴充性等效能。系統設計將軟體分為兩層結構,5所示。最下面一層為作業系統層,主要實現對Linux作業系統的移植和各種裝置驅動程式的編寫,包括OLED模組、USB Device、紅外、鍵盤等裝置驅動程式。上一層為應用程式層,主要實現卡資訊顯示、鍵盤掃描、電子標籤卡讀寫、檔案傳輸、時鐘以及電池電量檢測等功能。

2.1 嵌入式Linux
  Linux是一種公開源碼的多任務作業系統,具有開放度高、安全性好、穩定性強、可移植性好等特點,在嵌入式作業系統中被大量採用。
  本設計採用的Linux核心是在ARM-Linux的基礎上,編寫了OLED顯示模組、USB 裝置、紅外收發器及鍵盤的裝置驅動程式。在Linux系統中,裝置驅動程式佔有很重要的位置,它提供了在使用者空間操作硬體裝置的介面。Linux系統將裝置分為字元裝置、塊裝置及網路裝置三種,並給出針對不同裝置的資料結構及註冊函數。當使用者開發裝置驅動程式時,只需按硬體操作的方法填充裝置資料結構,並將它註冊到核心中即可。
  為了方便使用者應用程式的編寫,把USB裝置實現為CDC(Communication Device Class)類裝置,其驅動程式分為兩層,最底層操作AT91RM9200上的USB裝置控制器,如處理硬體中斷、讀寫寄存器及操作I/O口來檢測裝置的插拔;上層實現了底層與TCP/IP協議層的串連,主要是類比物理網卡,並註冊到核心。這樣,在應用程式的USB裝置就是一個標準的網路裝置,使用者不需要瞭解驅動程式的介面,而直接使用Linux提供的通訊端進行網路通訊程式的開發。當使用者進行二次開發時,可以不加修改地將上位機開發好的網路通訊程式直接移植到本系統中,而且可以通過上位機的Telnet等工具對嵌入式系統進行一定的操作。
  其他驅動程式(如OLED顯示模組、鍵盤、紅外收發器)都作為Linux下的標準字元裝置編寫,使用register_chrdev( )函數進行註冊,提供了讀、寫和控制操作。在Linux系統中,應用程式對字元裝置的操作與檔案的操作相同。
  Linux中裝置驅動程式可以通過模組方式動態地載入和卸載,也可以直接編譯到核心中。前者使用靈活,可以減小核心,但因嵌入式系統要求所有裝置在初始化後全部就緒,不能在使用時載入裝置的驅動模組。所以,本系統中所有的裝置驅動程式都直接編譯進核心。
  每個裝置驅動程式在使用者空間對應一個裝置檔案,由檔案系統管理。本系統使用ext2作為根檔案系統。為了開發和升級方便,首先將根檔案系統做成RAMDISK格式,所謂RAMDISK就是系統啟動後將壓縮的檔案解壓到記憶體,形成一個虛擬硬碟;然後,將引導程式、核心映像及根檔案系統燒寫到Flash中。
  系統加電後,引導程式將核心映像從Flash中調入記憶體,然後從核入口開始執行:首先初始化CPU,然後載入各個裝置驅動程式,最後掛載檔案系統,執行應用程式。
2.2 應用程式設計
  Linux是多任務系統,支援多線程及多進程。多線程的優點是線程比進程小,可以使應用更輕便,線程間通訊方便;缺點是所有線程使用同一個地址空間,如果一個線程出現問題,整個系統將受影響;而進程各自佔有一份記憶體空間,可以增強系統的穩定性,但是多進程增加了系統開銷,處理序間通訊複雜。為此,根據實際情況,考慮到系統穩定性,本系統採取兩者相結合的方式分別完成資料擷取處理及檔案傳輸功能。
2.2.1 資料擷取處理
  資料擷取處理是一個進程,它包括主線程和輔線程。主線程完成電子標籤卡資訊的讀取、寫入、即時顯示及查詢;輔線程實現一個時鐘以提供使用者目前時間,並定時對電池的電量進行檢測和動態顯示,在電量過低時發出警告。
  應用程式用MAIL命令方式完成電子標籤卡的讀寫。該進程首先初始化螢幕,然後等待按鍵中斷,當有鍵按下時,根據索引值執行相應的工作;當指定時間內沒有鍵按下,系統則進入休眠狀態,從而達到省電的目的。程式流程圖6。

  當成功採集到標籤卡資訊後,應用程式將卡資訊(包括卡號、卡狀態、使用者資料及目前時間)通過OLED顯示屏提供給使用者,並寫入一個檔案進行記錄。由於檔案傳輸進程會將該檔案傳輸到上位機,所以當讀寫檔案時要將檔案上鎖。Linux提供了檔案鎖以防止不同進程同時訪問同一個檔案。本文使用flock()函數對檔案上鎖和解鎖。
  由於OLED是圖形點陣式顯示屏,而且Flash容量有限,所以不可能直接使用漢字字型檔。系統預先提取所有用到的漢字、數字及字母的點陣資料,然後建立自己的字型檔檔案,從而使應用程式可以對漢字、數字及字母進行顯示。
2.2.2 檔案傳輸
  檔案傳輸是一個進程,完成卡資訊的上傳及其他資料的下載。與上位機通訊採用Clinet/Server模型。該進程實質上是一個伺服器端(本系統)的應用程式,它迴圈等待用戶端(上位機)的串連請求。當請求到達時,首先判斷請求來自哪個介面(USB或者紅外介面),然後根據請求的類型執行相應的上傳或下載。考慮到實際應用中可能會使用多台手持式閱讀器,為了方便上位機對資訊的管理,規定檔案名稱由手持式閱讀器編號和檔案上傳序號組成,程式在上傳檔案時自動將其編號及上傳序號加入檔案名稱。該進程的流程7。

3 系統電源管理
  本系統使用鋰電池為系統供電。為了延長電池的續航能力,將應用程式設計為三種運行狀態:上電空閑狀態、程式執行狀態及系統睡眠狀態。當使用者不進行任何操作時,系統將進入睡眠狀態以達到省電目的。系統的睡眠是基於微處理器的電源管理功能實現的,進入睡眠的步驟如下:
  (1)關閉所有外設;
  (2)儲存當前系統狀態;
  (3)使SDRAM進入自重新整理模式;
  (4)設定喚醒事件,使微處理器進入睡眠狀態。
  當喚醒事件發生時,如有鍵按下,則執行系統複位。過程如下:
  (1)恢複部分微處理器的寄存器;
  (2)喚醒外部裝置,系統開始運行。
  本文介紹了在AT91RM9200高效能ARM晶片上運行嵌入式Linux,結合TagMaster AB公司功能強大的射頻識別模組S1510實現攜帶型標籤卡的資訊採集和處理。系統使用方便、靈活。另外,為克服LCD低溫無法工作、亮度不夠及耗電大的缺點,採用OLED顯示模組使系統可以在惡劣環境下應用,並增加了電池的續航能力;為使系統與上位機通訊方便,採用了支援熱插拔的USB介面。
參考文獻
1 Rubini A著,魏永明譯.LINUX裝置驅動程式(第二版)[M].北京:中國電力出版社,2002
2 張 娟,吳大偉.應用RFID的攜帶型資料擷取與處理系統的研究[J].微型電腦應用,2005;21(6)
3 蔡 震,蔣輝柏,周利華.Linux系統下USB裝置驅動程式的開發[J].電腦測量與控制,2003;11(2)
4 TagMaster AB. Sweden.Handheld Confi Talk Reference Manual[Z].2003
5 TagMaster AB.Programmer′s Guide LockTag Handheld[Z].2005
6 Robert Love.Linux Kernel Development(Second Edition)[M].北京:機械工業出版社,2005

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.