基于Linux的RFID信息采集与处理系统

发布者:huijiazi5210最新更新时间:2012-11-13 来源: 维库开发网 关键字:Linux  RFID  信息采集  处理系统 手机看文章 扫描二维码
随时随地手机看文章
  射频识别( 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)。

  MESSAGE 代表任意长度的信息。协议规定微处理器发送给S1510 的帧为命令帧, 返回的帧为应答帧。本系统使用的S1510是TagMaster AB 公司的最新产品, 它支持基于ConfiTalk 协议的MAIL 命令方式的数据传输。

  MAIL 命令方式通信也就是把帧中的MESSAGE 域统一成四种格式, 其中命令帧有MAIL_SEND 和MAIL_RECEIVE两种,分别表示S1510 接收用户信息和返回卡信息(包括卡号、卡状态和卡存储的数据), 如图3。

  应答帧有两种: MAIL_SEND 的应答帧和MAIL_RECEIVE的应答帧, 如图4。[page]

  图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℃的低温下仍可以正常工作。

  RGS24128064YW00  1 具有串行和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, 然后加载各个设备驱动程序,最后挂载文件系统, 执行应用程序。[page]

  2 .2 应用程序设计

  Linux 是多任务系统, 支持多线程及多进程。多线程的优点是线程比进程小, 可以使应用更轻便, 线程间通信方便;缺点是所有线程使用同一个地址空间, 如果一个线程出现问题, 整个系统将受影 响; 而进程各自占有一份内存空间, 可以增强系统的稳定性, 但是多进程增加了系统开销, 进程间通信复杂。为此,根据实际情况,考虑到系统稳定性, 本系统采取两者相结合的方式分别完成数据采集处理及文件传输功能。

  2 .2 .1 数据采集处理

  数据采集处理是一个进程, 它包括主线程和辅线程。主线程完成电子标签卡信息的读取、写入、实时显示及查询;辅线程实现一个时钟以提供用户当前时间, 并定时对电池的电量进行检测和动态显示, 在电量过低时发出警告。

  应用程序用MAIL 命令方式完成电子标签卡的读写。该进程首先初始化屏幕, 然后等待按键中断, 当有键按下时, 根据键值执行相应的工作;

  当指定时间内没有键按下, 系统则进入休眠状态, 从而达到省电的目的。程序流程图如图6。

  当成功采集到标签卡信息后, 应用程序将卡信息(包括卡号、卡状态、用户数据及当前时间)通过OLED 显示屏提供给用户,并写入一个文件进行记录。由于文件传输进程会将该文件传输到上位机, 所以当读写文件时要将文件上锁。Linux 提供了文件锁以防止不同进程同时访问同一个文 件。本文使用flock ( )函数对文件上锁和解锁。

  由于OLED 是图形点阵式显示屏, 而且Flash 容量有限,所以不可能直接使用汉字字库。系统预先提取所有用到的汉字、数字及字母的点阵数据, 然后建立自己的字库文件,从而使应用程序可以对汉字、数字及字母进行显示。

  2 .2 .2 文件传输

  文件传输是一个进程, 完成卡信息的上传及其他数据的下载。与上位机通信采用Clinet/Server 模型。该进程实质上是一个服务器端(本系统) 的应用程序, 它循环等待客户端( 上位机) 的连接请求。当请求到达时, 首先判断请求来自哪个接口(USB 或者红外接口),然后根据请求的类型执行相应的上传或下载。考虑到实际应用中可能会使用多台手持式阅读器, 为了方便上位机对信息的管理,规定文件名由手持式阅读器编号和文件上传序号组成, 程序在上传文件时自动将其编号及上传序号加入文件名。该进程的流程 如图7。[page]

  3 系统电源|稳压器|稳压器管理

  本系统使用锂电池为系统供电。为了延长电池的续航能力, 将应用程序设计为三种运行状态:

  上电空闲状态、程序执行状态及系统睡眠状态。当用户不进行任何操作时, 系统将进入睡眠状态以达到省电目的。系统的睡眠是基于微处理器的电源管理功能实现的, 进入睡眠的步骤如下:

  (1)关闭所有外设;

  (2)保存当前系统状态;

  (3)使SDRAM 进入自刷新模式;

  (4)设置唤醒事件, 使微处理器进入睡眠状态。

  当唤醒事件发生时, 如有键按下, 则执行系统复位。过程如下:

  (1)恢复部分微处理器的寄存器;

  (2)唤醒外部设备, 系统开始运行。

  本文介绍了在AT91RM9200 高性能ARM 芯片上运行嵌入式Linux, 结合TagMaster AB公司功能强大的射频识别模块S1510 实现便携式标签卡的信息采集和处理。系统使用方便、灵活。另外, 为克服LCD低温无法工作、亮度不够及耗电大的缺点, 采用OLED 显示模块使系统可以在恶劣环境下应用, 并增加了电池的续航能力; 为使系统与上位机通信方便,采用了支持热插拔的USB 接口。

关键字:Linux  RFID  信息采集  处理系统 引用地址:基于Linux的RFID信息采集与处理系统

上一篇:基于WINCE&S3C2410的多串口移植技术
下一篇:基于ARM平台的RFID系统设计与实现

推荐阅读最新更新时间:2024-03-16 13:13

arm驱动linux内核时钟
《 linux内核时钟》涉及内核驱动函数四个,内核结构体一个,分析了内核驱动函数一个;可参考的相关应用程序模板或内核驱动模板一个,可参考的相关应用程序模板或内核驱动一个 一、内核定时器 意义:内核定时器是软件意义上的定时器,最终依赖定时器来实现。时钟中断处理程序会唤起Timer_softirq软中断,运行当前处理器上到期的所有定时器。 二、linux设备驱动编程 linux内核提供一组函数,时钟数据结构;这组函数和数据结构使驱动工程师不用关心具体的软件定时器究竟对应着怎样的内核和硬件行为。 三、数据结构和函数: 1)数据结构 结构体一)Linux在include/linux/timer.h头文件中定义了数据结构timer_list来
[单片机]
高效轻型线程助力提高Linux实时性能
上个世纪,研发人员投入了大量精力提高Linux实时性能和行为,最著名的是PREEMPT_RT Linux实时扩展。最近,研发人员致力于研究适用于多核设备的Linux用户空间解决方案,该解决方案允许从用户空间中直接访问基础硬件,从而可避免因将Linux内核引入用户空间应用而带来的额外系统开销。这些用户空间扩展(有多个)已首先由电信/网络高性能 IP 数据包处理系统进行驱动,以实现所谓的"裸金属"实施,其中,多核设备中的Linux用户空间应用可以模拟"无操作系统"解决方案的执行过程,即在每个内核上进行简单"运行到完成"、轮询循环,以便进行数据包处理。在从根本上实现该目标的同时,该解决方案仍可用于非常特殊的用例。还有其他需要提高性能的用
[嵌入式]
基于基于DSP的并行信号处理系统设计方案的并行信号处理系统设计方案
    自数字计算机问世以来,计算机的处理能力已经增长了100 k倍以上。然而,现有性能最高的计算机的计算能力仍远远不能满足人类对计算速度无止境的追求。   在科学计算、地质分析、气象预测、仿真模拟、图像处理以及实时信号处理领域,对计算机处理速度的要求尤为迫切。随着半导体技术的迅速发展,采用超大规模集成电路设计的处理单元功能越来越强,然而单处理器性能的提高受到了诸多限制。因此,满足对运算速度的巨大需求目前只能通过并行处理技术来实现。    1 概述   本文中设计了一种并行信号处理系统,其主要特点是:   (1)具有强大的处理能力,可以完成多种信号处理模式。   (2)信号处理功能通过大量信号处理芯片(DSP
[嵌入式]
基于ADSP-TS201S的图像采集处理系统
   引言 随着人们对实时信号处理要求的不断提高和大规模集成电路的迅速发展,作为数字信号处理核心和标志的数字信号处理器DSP芯片得到了快速的发展和应用。它不但可以广泛应用于通信系统、图形/图像处理、雷达声纳、医学信号处理等实时信号处理领域。就ADI公司而言,继16-bit定点ADSP21xx和32-bit浮点ADSP21xxx系列之后,日前又推出了TigerSHARC系列的新型器件。本文介绍使用该系列中的ADSP-TS201S芯片实现一个图像采集处理系统的设计方案。 系统总体方案 该系统可以完成图像的采集、处理和显示,从而实现目标识别与跟踪的智能信号处理。该系统是对摄像机数字,模拟两路视频数据进行采集,处理后
[应用]
利用MLD自动化操作系统移植降低Linux的成本
随着基于 Linux 的嵌入式系统得到日益广泛的应用,人们不禁要问,类似 Linux 这样的免费开放源代码操作系统的真正成本到底是多少?其实,最主要的成本是在劳动力上。要将 Linux 内核移植到定制嵌入式处理系统,您必须对产品所需要的内核功能、这些功能对其他内核服务的依赖程度以及您的工程团队的技能都有深入的了解。更重要的是,要了解可以借助哪些新技术来使这些任务自动化,以达到节省成本的目标。 开放源代码与商业操作系统 我们很多人都看过为如何使用 Linux 源代码提供指导的 GNU 通用公共许可证 (GPL)。要确定在系统中使用 Linux 的成本,一般来说,第一步是了解 Linux 的哪些部分是真正免费且不受法律约束的,哪些
[嵌入式]
基于Linux平台下的FPGA的ARM驱动开发方法
Linux操作系统的全称是GNU/Linux,它是由GNU工程和Linux内核两个部分共同组成的一个操作系统。该系统中所有组件的源代码都是自由的,可以有效保护学习成果,因而在嵌入式领域得到了广泛的应用。 FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,该器件是作为专用集成电路ASIC (Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,它的出现既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。在通信行业、传输网、医疗仪器、各种电子仪器、安防监控、电力系统、汽车电子以及消费类电子中都大面积使用。随着产品
[工业控制]
基于<font color='red'>Linux</font>平台下的FPGA的ARM驱动开发方法
STM32是否可以跑linux
操作系统有两种 用MMU的 和 不用MMU的 用MMU的是Windows MacOS Linux Android 不用MMU的是FreeRTOS VxWorks ucOS... CPU有两种 带MMU的 和 不带MMU的 带MMU的有 Cortex-A系列 ARM9 ARM11系列 不带MMU的有 Cortex-M系列... STM32是M系列...不可能运行Linux... ucLinux不算Linux的...
[单片机]
Linux下如何利用C语言来实现一个Sniffer
Sniffer技术是网络安全领域里一项非常重要的技术!对于“Hacker”来说,他们可以以非常隐蔽的方式得到网络中传输的大量的敏感信息,如 Telnet,ftp帐号和密码等等明文传送的信息!与主动扫描相比,嗅探的行为更加难以被察觉,操作起来也不是很复杂!对于网络管理人员来说,可以利用嗅探技术对网络活动进行监控,并及时发现各种攻击行为!   在这篇文章里,我们主要探讨在Linux下如何利用C语言来实现一个Sniffer!我们将假设所有的主机在一个局域网内。   首先,我们将简短的回顾一下一个普通的以太网卡是怎么工作的!(如果你对这方面的知识早已熟悉,那么你可以直接跳到下一段)来源于应用程序的IP报文被封装成以太网帧(这是在以太网
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved