當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Linux的便攜式RFID信息采集處理系統(tǒng)

    本文介紹一種基于嵌入式 Linux 的便攜式 RFID 信息采集與處理系統(tǒng)。它采用高性能的32 位ARM920T 系列微處理器、8 鍵的鍵盤及 OLED 顯示屏, 結(jié)合S1510 實(shí)現(xiàn)了對電子標(biāo)簽卡信息的采集、處理及實(shí)時(shí)顯示, 很好地解決了上述問題。

  射頻識(shí)別( RFID) 是一種非接觸式的自動(dòng)識(shí)別技術(shù),它通過射頻信號(hào)自動(dòng)識(shí)別目標(biāo)對象并獲取相關(guān)數(shù)據(jù), 識(shí)別過程無需人工干預(yù), 可工作于各種惡劣環(huán)境。RFID 技術(shù)在許多領(lǐng)域得到應(yīng)用, 如停車場管理、集裝箱運(yùn)輸管理系統(tǒng)等。在大多數(shù)應(yīng)用中, 只要求有固定的閱讀器,但在某些特殊系統(tǒng)中(如集裝箱運(yùn)輸管理系統(tǒng)), 不僅要求有固定的閱讀器, 而且還要求有手持式讀卡器。

  TagMaster AB 公司是世界知名的RFID 讀卡器制造商。它提供性能優(yōu)良的固定式閱讀器, 也提供一種手持式閱讀器。手持式讀卡器由Caiso 公司的工業(yè)級(jí)PDA( Personal Digital Assistants ) 和TagMaster AB 公司的S1510組成。PDA 雖然功能強(qiáng)大, 但有如下缺點(diǎn): (1)提供的觸摸屏輸入方式過于精細(xì), 不適合工

作人員現(xiàn)場操作; (2)TFT 液晶顯示屏在強(qiáng)光下顯示效果差, 耗電量大, 并且在低溫下( 0℃以下) 無法工作, 因此不適合室外工作;(3)采用Microsoft 公司的商用系統(tǒng)WinCE, 成本高。

  本文介紹一種基于嵌入式Linux 的便攜式RFID 信息采集與處理系統(tǒng)。它采用高性能的32 位ARM920T 系列微處理器、8 鍵的鍵盤及OLED 顯示屏, 結(jié)合S1510 實(shí)現(xiàn)了對電子標(biāo)簽卡信息的采集、處理及實(shí)時(shí)顯示, 很好地解決了上述問題。

1 系統(tǒng)組成

  系統(tǒng)采用Atmel 公司的AT91RM9200 32 位高性能處理器、TagMaster 公司的S1510 及OLED 顯示模塊等實(shí)現(xiàn)電子標(biāo)簽卡信息的采集、處理、實(shí)時(shí)顯示及與上位機(jī)通信等功能。系統(tǒng)組成如圖1。

系統(tǒng)組成

1 .1 微處理器

  系統(tǒng)采用Atmel 公司以ARM920T 為核心的AT91 系列微處理器AT91RM9200。它最高主頻可達(dá)180MHz, 具有先進(jìn)的節(jié)電技術(shù), 集成了SDRAM、Flash、紅外、USB 等接口。系統(tǒng)采用USB( Universal Serial Bus ) 及紅外方式與上位機(jī)通信。紅外方式采用Agilent 公司的HSDL- 3602 紅外收發(fā)器實(shí)現(xiàn)。

1 .2 射頻識(shí)別模塊

  射頻識(shí)別模塊采用瑞典TagMaster AB 公司的2.4GHz 產(chǎn)品S1510。該模塊體積小, 專為手持設(shè)備設(shè)計(jì),可以采集1 米內(nèi)各種電子標(biāo)簽上的數(shù)據(jù)。它通過USART串口與處理器通信, 接口簡單, 易于硬件實(shí)現(xiàn)。為了保證數(shù)據(jù)的可靠傳輸, 模塊與微處理器通信采用TagMaster AB 公司開發(fā)的應(yīng)答式串口通信協(xié)議ConfiTalk。

  ConfiTalk 協(xié)議是一種面向字符的應(yīng)答式串行通信協(xié)議。它每次傳輸一定長度的數(shù)據(jù)塊( 幀) , 每個(gè)幀包含幀頭(STX)和幀尾(ETX)。為了提高數(shù)據(jù)傳輸?shù)目煽啃?每幀又加入了8 位的校驗(yàn)位(CS)及地址位(ADR)。幀的結(jié)構(gòu)如圖2。

幀的結(jié)構(gòu)

  MESSAGE 代表任意長度的信息。協(xié)議規(guī)定微處理器發(fā)送給S1510 的幀為命令幀, 返回的幀為應(yīng)答幀。本系統(tǒng)使用的S1510 是TagMaster AB 公司的最新產(chǎn)品, 它支持基于ConfiTalk 協(xié)議的MAIL 命令方式的數(shù)據(jù)傳輸。

  MAIL 命令方式通信也就是把幀中的MESSAGE 域統(tǒng)一成四種格式, 其中命令幀有MAIL_SEND 和MAIL_RECEIVE兩種, 分別表示S1510 接收用戶信息和返回卡信息(包括卡號(hào)、卡狀態(tài)和卡存儲(chǔ)的數(shù)據(jù)), 如圖3。

MAIL 命令方式通信

  應(yīng)答幀有兩種: MAIL_SEND 的應(yīng)答幀和MAIL_RECEIVE的應(yīng)答幀, 如圖4。

應(yīng)答幀有兩種: MAIL_SEND 的應(yīng)答幀和MAIL_RECEIVE的應(yīng)答幀,

  圖4 中, 36 表示S1510 使用MAIL 方式處理命令幀和應(yīng)答幀, 而4、5 表示S1510 命令幀的類型(MAIL_SEND或MAIL_RECEIVE); Status 表示該命令的執(zhí)行狀態(tài)( 成功或失敗) ; MAIL_SEND 命令幀中的Data 域表示用戶要進(jìn)行的操作及參數(shù), 如使Data=WRITE: 參數(shù): 數(shù)據(jù), 即表示用戶要將數(shù)據(jù)寫入電子標(biāo)簽卡; MAIL_RECEIVE 的應(yīng)答幀中的Data 域?yàn)橛脩羲蟮玫降臄?shù)據(jù)。

  當(dāng)使用MAIL 命令方式讀寫標(biāo)簽卡時(shí), 用戶只需要按幀的格式填充各域, 然后利用ConfiTalk 協(xié)議提供的API 函數(shù)發(fā)送到S1510 即可。命令清晰明了, 大大方便了用戶的開發(fā)。
1 .3 OLED顯示模塊

  系統(tǒng)采用萊寶科技有限公司的OLED 顯示模塊RGS24128064YW001。有機(jī)發(fā)光顯示器OLED ( Organic Light Emitting Display) 被譽(yù)為“夢幻顯示器”。與液晶屏相比, OLED 顯示屏更輕更薄、可視角度更大, 能夠顯著節(jié)省電能, 并且在- 40℃的低溫下仍可以正常工作。

  RGS24128064YW001 具有串行和8 位并行數(shù)據(jù)接口。系統(tǒng)采用8 位并行接口與微處理器通信。

1 .4 SDRAM 和Flash 及自定義鍵盤

  系統(tǒng)采用32 位的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(SDRAM)作為系統(tǒng)內(nèi)存, 16 位的Flash 作為不可丟失數(shù)據(jù)存儲(chǔ)器。用戶可以通過8 鍵的鍵盤進(jìn)行各種操作, 如讀卡、寫卡等。

2 系統(tǒng)軟件設(shè)計(jì)

  系統(tǒng)軟件是整個(gè)系統(tǒng)的靈魂, 其設(shè)計(jì)的好壞直接影響系統(tǒng)的穩(wěn)定性和可擴(kuò)展性等性能。系統(tǒng)設(shè)計(jì)將軟件分為兩層結(jié)構(gòu), 如圖5 所示。最下面一層為操作系統(tǒng)層, 主要實(shí)現(xiàn)對Linux 操作系統(tǒng)的移植和各種設(shè)備驅(qū)動(dòng)程序的編寫, 包括OLED 模塊、USB Device、紅外、鍵盤等設(shè)備驅(qū)動(dòng)程序。上一

層為應(yīng)用程序?qū)? 主要實(shí)現(xiàn)卡信息顯示、鍵盤掃描、電子標(biāo)簽卡讀寫、文件傳輸、時(shí)鐘以及電池電量檢測等功能。

2 .1 嵌入式Linux

  Linux 是一種公開源碼的多任務(wù)操作系統(tǒng), 具有開放度高、安全性好、穩(wěn)定性強(qiáng)、可移植性好等特點(diǎn), 在嵌入式操作系統(tǒng)中被大量采用。

  本設(shè)計(jì)采用的Linux 內(nèi)核是在ARM- Linux 的基礎(chǔ)上, 編寫了OLED 顯示模塊、USB 設(shè)備、紅外收發(fā)器及鍵盤的設(shè)備驅(qū)動(dòng)程序。在Linux 系統(tǒng)中, 設(shè)備驅(qū)動(dòng)程序占有很重要的位置, 它提供了在用戶空間操作硬件設(shè)備的接口。Linux 系統(tǒng)將設(shè)備分為字符設(shè)備、塊設(shè)備及網(wǎng)絡(luò)設(shè)備三種, 并給出針對不同設(shè)備的數(shù)據(jù)結(jié)構(gòu)及注冊函數(shù)。

系統(tǒng)軟件的構(gòu)成

  當(dāng)用戶開發(fā)設(shè)備驅(qū)動(dòng)程序時(shí), 只需按硬件操作的方法填充設(shè)備數(shù)據(jù)結(jié)構(gòu), 并將它注冊到內(nèi)核中即可。

  為了方便用戶應(yīng)用程序的編寫, 把USB 設(shè)備實(shí)現(xiàn)為CDC( Communication Device Class ) 類設(shè)備, 其驅(qū)動(dòng)程序分為兩層, 最底層操作AT91RM9200 上的USB 設(shè)備控制器, 如處理硬件中斷、讀寫寄存器及操作I/O 口來檢測設(shè)備的插拔; 上層實(shí)現(xiàn)了底層與TCP/IP 協(xié)議層的連接,主要是模擬物理網(wǎng)卡, 并注冊到內(nèi)核。這樣, 在應(yīng)用程序的USB 設(shè)備就是一個(gè)標(biāo)準(zhǔn)的網(wǎng)絡(luò)設(shè)備, 用戶不需要了解驅(qū)動(dòng)程序的接口, 而直接使用Linux 提供的套接字進(jìn)行網(wǎng)絡(luò)通信程序的開發(fā)。當(dāng)用戶進(jìn)行二次開發(fā)時(shí), 可以不加修改地將上位機(jī)開發(fā)好的網(wǎng)絡(luò)通信程序直接移植到本系統(tǒng)中, 而且可以通過上位機(jī)的Telnet 等工具對嵌入式系統(tǒng)進(jìn)行一定的操作。

  其他驅(qū)動(dòng)程序( 如OLED 顯示模塊、鍵盤、紅外收發(fā)器)都作為Linux 下的標(biāo)準(zhǔn)字符設(shè)備編寫, 使用register_chrdev( )函數(shù)進(jìn)行注冊, 提供了讀、寫和控制操作。在Linux 系統(tǒng)中, 應(yīng)用程序?qū)ψ址O(shè)備的操作與文件的操作相同。

  Linux 中設(shè)備驅(qū)動(dòng)程序可以通過模塊方式動(dòng)態(tài)地加載和卸載, 也可以直接編譯到內(nèi)核中。前者使用靈活, 可以減小內(nèi)核, 但因嵌入式系統(tǒng)要求所有設(shè)備在初始化后全部就緒, 不能在使用時(shí)加載設(shè)備的驅(qū)動(dòng)模塊。所以, 本系統(tǒng)中所有的設(shè)備驅(qū)動(dòng)程序都直接編譯進(jìn)內(nèi)核。

  每個(gè)設(shè)備驅(qū)動(dòng)程序在用戶空間對應(yīng)一個(gè)設(shè)備文件,由文件系統(tǒng)管理。本系統(tǒng)使用ext2 作為根文件系統(tǒng)。為了開發(fā)和升級(jí)方便, 首先將根文件系統(tǒng)做成RAMDISK 格式, 所謂RAMDISK 就是系統(tǒng)啟動(dòng)后將壓縮的文件解壓到內(nèi)存, 形成一個(gè)虛擬硬盤; 然后, 將引導(dǎo)程序、內(nèi)核映像及根文件系統(tǒng)燒寫到Flash 中。

  系統(tǒng)加電后, 引導(dǎo)程序?qū)?nèi)核映像從Flash 中調(diào)入內(nèi)存, 然后從核入口開始執(zhí)行: 首先初始化CPU, 然后加載各個(gè)設(shè)備驅(qū)動(dòng)程序, 最后掛載文件系統(tǒng), 執(zhí)行應(yīng)用程序。

2 .2 應(yīng)用程序設(shè)計(jì)

  Linux 是多任務(wù)系統(tǒng), 支持多線程及多進(jìn)程。多線程的優(yōu)點(diǎn)是線程比進(jìn)程小, 可以使應(yīng)用更輕便, 線程間通信方便; 缺點(diǎn)是所有線程使用同一個(gè)地址空間, 如果一個(gè)線程出現(xiàn)問題, 整個(gè)系統(tǒng)將受影響; 而進(jìn)程各自占有一份內(nèi)存空間, 可以增強(qiáng)系統(tǒng)的穩(wěn)定性, 但是多進(jìn)程增加了系統(tǒng)開銷, 進(jìn)程間通信復(fù)雜。為此, 根據(jù)實(shí)際情況,考慮到系統(tǒng)穩(wěn)定性, 本系統(tǒng)采取兩者相結(jié)合的方式分別完成數(shù)據(jù)采集處理及文件傳輸功能。

2 .2 .1 數(shù)據(jù)采集處理

  數(shù)據(jù)采集處理是一個(gè)進(jìn)程, 它包括主線程和輔線程。主線程完成電子標(biāo)簽卡信息的讀取、寫入、實(shí)時(shí)顯示及查詢; 輔線程實(shí)現(xiàn)一個(gè)時(shí)鐘以提供用戶當(dāng)前時(shí)間, 并定時(shí)對電池的電量進(jìn)行檢測和動(dòng)態(tài)顯示, 在電量過低時(shí)發(fā)出警告。

  應(yīng)用程序用MAIL 命令方式完成電子標(biāo)簽卡的讀寫。該進(jìn)程首先初始化屏幕, 然后等待按鍵中斷, 當(dāng)有鍵按下時(shí), 根據(jù)鍵值執(zhí)行相應(yīng)的工作; 當(dāng)指定時(shí)間內(nèi)沒有鍵按下, 系統(tǒng)則進(jìn)入休眠狀態(tài), 從而達(dá)到省電的目的。程序流程圖如圖6。

程序流程圖

  當(dāng)成功采集到標(biāo)簽卡信息后, 應(yīng)用程序?qū)⒖ㄐ畔?包括卡號(hào)、卡狀態(tài)、用戶數(shù)據(jù)及當(dāng)前時(shí)間)通過OLED 顯示屏提供給用戶, 并寫入一個(gè)文件進(jìn)行記錄。由于文件傳輸進(jìn)程會(huì)將該文件傳輸?shù)缴衔粰C(jī), 所以當(dāng)讀寫文件時(shí)要將文件上鎖。Linux 提供了

文件鎖以防止不同進(jìn)程同時(shí)訪問同一個(gè)文件。本文使用flock ( ) 函數(shù)對文件上鎖和解鎖。

  由于OLED 是圖形點(diǎn)陣式顯示屏, 而且Flash 容量有限, 所以不可能直接使用漢字字庫。系統(tǒng)預(yù)先提取所有用到的漢字、數(shù)字及字母的點(diǎn)陣數(shù)據(jù), 然后建立自己的字庫文件, 從而使應(yīng)用程序可以對漢字、數(shù)字及字母進(jìn)行顯示。

2 .2 .2 文件傳輸

  文件傳輸是一個(gè)進(jìn)程, 完成卡信息的上傳及其他數(shù)據(jù)的下載。與上位機(jī)通信采用Clinet/Server 模型。該進(jìn)程實(shí)質(zhì)上是一個(gè)服務(wù)器端( 本系統(tǒng)) 的應(yīng)用程序, 它循環(huán)等待客戶端( 上位機(jī)) 的連接請求。當(dāng)請求到達(dá)時(shí), 首先判斷請求來自哪個(gè)接口(USB 或者紅外接口), 然后根據(jù)請求的類型執(zhí)行相應(yīng)的上傳或下載??紤]到實(shí)際應(yīng)用中可能會(huì)使用多臺(tái)手持式閱讀器, 為了方便上位機(jī)對信息的管理, 規(guī)定文件名由手持式閱讀器編號(hào)和文件上傳序號(hào)組成, 程序在上傳文件時(shí)自動(dòng)將其編號(hào)及上傳序號(hào)加入文件名。該進(jìn)程的流程如圖7。

進(jìn)程的流程

3 系統(tǒng)電源管理

  本系統(tǒng)使用鋰電池為系統(tǒng)供電。為了延長電池的續(xù)航能力, 將應(yīng)用程序設(shè)計(jì)為三種運(yùn)行狀態(tài): 上電空閑狀態(tài)、程序執(zhí)行狀態(tài)及系統(tǒng)睡眠狀態(tài)。當(dāng)用戶不進(jìn)行任何操作時(shí), 系統(tǒng)將進(jìn)入睡眠狀態(tài)以達(dá)到省電目的。系統(tǒng)的睡眠是基于微處理器的電源管理功能實(shí)現(xiàn)的, 進(jìn)入睡眠的步驟如下:

  (1)關(guān)閉所有外設(shè);

  (2)保存當(dāng)前系統(tǒng)狀態(tài);

  (3)使SDRAM 進(jìn)入自刷新模式;

  (4)設(shè)置喚醒事件, 使微處理器進(jìn)入睡眠狀態(tài)。

  當(dāng)喚醒事件發(fā)生時(shí), 如有鍵按下, 則執(zhí)行系統(tǒng)復(fù)位。過程如下:

當(dāng)喚醒事件發(fā)生時(shí), 如有鍵按下, 則執(zhí)行系統(tǒng)復(fù)位

  (1)恢復(fù)部分微處理器的寄存器;

  (2)喚醒外部設(shè)備, 系統(tǒng)開始運(yùn)行。

  本文介紹了在AT91RM9200 高性能ARM 芯片上運(yùn)行嵌入式Linux, 結(jié)合TagMaster AB 公司功能強(qiáng)大的射頻識(shí)別模塊S1510 實(shí)現(xiàn)便攜式標(biāo)簽卡的信息采集和處理。系統(tǒng)使用方便、靈活。另外, 為克服LCD 低溫?zé)o法工作、亮度不夠及耗電大的缺點(diǎn), 采用OLED 顯示模塊使系統(tǒng)可以在惡劣環(huán)境下應(yīng)用, 并增加了電池的續(xù)航能力; 為使系統(tǒng)與上位機(jī)通信方便, 采用了支持熱插拔的USB 接口。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉