RFID stands for Radio-Frequency IDentification. An RFID transponder, or ‘tag’, serves a similar purpose as a bar code or a magnetic strip on the back of a credit card; it provides an identifier for a particular object, although, unlike a barcode or magnetic strip, some tags support being written to. An RFID system carries data in these tags, and retrieves data from the tags wirelessly. Data within a tag may provide identification for an item in manufacture, goods in transit, a location, the identity of a vehicle, an animal, or an individual. By including additional data, the ability is provided for supporting applications through item-specific information or instructions available on reading the tag.
A basic RFID system includes a reader or ‘interrogator’ and a transponder (RF tag) electronically programmed with unique identifying information. Both the transceiver and transponder have antennas, which respectively emit and receive radio signals to activate the tag, read data from the tag, and write data to it. An antenna is a feature that is present in both readers and tags, and is essential for the communication between the two. An RFID system requires, in addition to tags, a mechanism for reading or interrogating the tags and usually requires some means of communicating RFID data to a host device, e.g., a computer or information management system. Often the antenna is packaged with the transceiver and decoder to become a reader (an ‘interrogator’), which can be configured either as a handheld or a fixed-mount device. The reader emits radio waves in ranges of anywhere from one inch to 100 feet or more, depending upon its power output and the radio frequency used. When an RFID tag passes through the electromagnetic zone (its ‘field’) created by the reader, it detects the reader's activation signal. The reader decodes the data encoded in the tag's integrated circuit and the data is often passed to a device (e.g., a computer) for processing.
Two methods distinguish and categorize RFID systems, one based upon close proximity electromagnetic or inductive coupling, and one based upon propagating electromagnetic waves. Coupling is via ‘antenna’ structures forming an integral feature in both tags and readers. While the term ‘antenna’ is generally considered more appropriate for propagating systems it is also loosely applied to inductive systems.
Transponders/Tags
The word transponder, derived from TRANSmitter/resPONDER, reveals the function of a tag. A tag responds to a transmitted or communicated request for the data it carries, the communication between the reader and the tag being wireless across the space between the two. The essential components that form an RFID system are one or more tags and a reader or interrogator. The basic components of a transponder are, generally speaking, fabricated as low power integrated circuit suitable for interfacing to an external coil, or utilizing ‘coil-on-chip’ technology, for data transfer and power generation, where the coil acts as an antenna matched to the frequency supported.
The Reader/Interrogator
Reader/interrogators can differ quite considerably in complexity, depending upon the type of tags being supported and the functions to be fulfilled. However, their overall function is to provide a mechanism for communicating with the tags, providing power to passive tags, and facilitating data transfer. Functions performed by the reader may include signal conditioning, parity error checking and correction. Once the signal from a transponder has been correctly received and decoded, algorithms may be applied to decide whether the signal is a repeat transmission, and may then instruct the transponder to cease transmitting. This is known as a ‘Command Response Protocol’ and is used to circumvent the problem of reading multiple tags in a short space of time. Using interrogators in this way is sometimes referred to as ‘Hands Down Polling’. An alternative, more secure, but slower tag polling technique is called ‘Hands Up Polling’, which involves the interrogator looking for tags with specific identities, and interrogating them in turn. This technique requires contention management, and a variety of techniques have been developed to improve the process of batch reading, including anti-collision techniques.
Current RFID systems require that a tag be in the field of the reader (interrogator), and powered on, in order for a user to interact with it. Furthermore, current tags are limited to the capabilities inherent in the tag. In multiple tag type environments, an RFID system is typically forced to use the common subset of tag capabilities, and has limited ability to support new or enhanced tags.
Previous embedded software systems have had limitations including the utilization of static software architectures whose specific software implementations are integral with their application-specific program or functionality. These monolithic implementations are often found in microcontroller-based designs wherein the embedded software or firmware has system resources and performance that are limited by the hardware.
Problem to be Solved
Traditional RFID applications have been closed loop and proprietary. Preexisting RFID readers are controlled by dedicated, closed-architecture, monolithic, embedded software (firmware). In previous RFID readers, features and functionality in the readers are set at compile time, and the readers are typically application specific. These readers do not allow a user or programmer to modify or upgrade only those specific aspects of a reader's functionality (i.e., code sections or modules) which the user/programmer would like to change. Rather, in order to modify segments of code in the reader with any reasonable degree of granularity, the entire reader firmware module must typically be re-programmed (e.g., ‘re-flashed’, in the typical case where the reader employs flash memory), or, in the case of multiple-processor readers, a relatively large part of the existing reader firmware must still be extensively re-programmed. Nor do preexisting RFID readers allow modularity or granularity with respect to the security level of specific modules (drivers/applications, etc.), so that, for example, the code in pre-selected proprietary modules may be kept secure (i.e., remain undecipherable to an unauthorized user/programmer), while the code in other specific modules may be readily re-programmed.
As markets such as contactless payment and supply chain management emerge, wide-scale adoption of RFID remains inhibited as the industry continues to deliver reader technology as monolithic hardwired devices with inaccessible RFID radio control software. Thus the benefits of RFID have been difficult to implement across a wider set of applications. For example, access control readers and animal scanners cannot be integrated into cell phones, DVD players or medical devices. Furthermore, because RFID readers have been delivered as vertically-integrated ‘black-box’ technology, software developers have not had access to the inner workings of the readers.
Even within retail supply chain, RFID reader requirements vary widely from stationary label printers to handheld devices and from forklifts to dock doors. Indeed there remains a problem in the industry that no standard technology can support the spectrum of reader requirements—from power and frequency control, to host interfaces, to tag protocols and standards, as well as the wide variety of price/performance tradeoffs related to read range and rate, physical size, power consumption and cost.
A framework structure is disclosed for controlling an RFID device including a platform comprising an RFID radio. The structure comprises a layered framework including a first layer, with at least one functional module comprising a device driver, communicatively coupled with the platform; and a second layer, with at least one functional module comprising an API, communicatively coupled with the first layer and with an application for controlling the RFID device.
In one embodiment, the framework structure includes a firmware stratum comprising a tiered plurality of the functional modules, with the stratum being integrated with the layered framework such that each tier of the stratum is layered to functionally correspond to one of the layers in the framework.
The present RFID operating system (‘RFID OS’) comprises an open-architecture software architecture for RFID readers. The system provides interoperability between generic RFID readers, system services, and applications. The present architecture allows RFID reader functionality to be independent of RFID reader hardware architecture.
In the present system, RFID services are layered on top of the RFID OS. For example, a service handler may facilitate a contactless payment transaction by invoking a particular application functionality via a tag protocol API (application programming interface), which in turn, calls on or more APIs to perform RF communication with RFID tags.
The present RFID operating system framework includes a layered architecture that can be used with a multiplicity of different RFID reader platforms. The RFID OS framework interfaces with peripheral hardware, and may perform a number of different application functions such as task scheduling, protocol handling, and storage allocation. The framework provides a default software interface between a host processor and an RFID reader when no application program is running on a particular reader.
Reader 101 is connected to an external host computer 100, and reader 102 has an embedded processor 105 which functions as a dedicated, fixed-capability host. In both readers 101/102, a host-specific API 103 is typically integral to the readers, and the reader functionality is pre-established and not modifiable by a user, since the functionality is ‘buried’ inside user-inaccessible firmware in a ‘black box’ 104. In the systems of
Reader platform 210 comprises on-board control software for an RFID reader that can be customized and built upon by third-party developers. This platform enables OEMs to easily RFID-enable new or existing devices.
Reader platform 210 may also include an embedded operating system 208, such as Linux or Windows CE. Platform 210 may be coupled to framework 201 via an operating system 208 running on the platform (through interface 204), or via RF communication with RFID radio 214, using an RF link 206. In the latter instance, the platform typically does not include operating system 208.
As explained below, the present RFID OS vertical framework 201 is integrated with a horizontal firmware stratum (shown in
As shown in
Specific examples of functional modules included in the above layers are described with respect to
As shown in
More specifically, the application software interface layer 205 is tiered or divided into two functional sub-layers, a layer 305 including library functions (or modules), and a layer 306 including APIs for interfacing between the library functions and the application layer 207, as indicated by arrow 315 in
The hardware abstraction layer 203 is also tiered or divided into two functional sub-layers, a layer 303 including hardware and communication device drivers (modules), and a layer 304 including driver APIs for interfacing between the drivers and corresponding library functions in API library function layer 305, as indicated by arrow 313.
It should be noted that, in certain cases, where an application in layer 207 has a priori knowledge of the protocol or other mechanism for communicating with a particular driver in layer 303, the application may bypass the application software interface layer 205 and directly call the driver, as indicated by arrow 317.
As indicated in
Platform Layer
The RFID operating system vertical framework 201 may be viewed as resting on top of the reader platform layer 210. In an exemplary embodiment, platform 210 includes hardware, plus an optional operating system 208 and developer tools 215. The terms “hardware platform” or “hardware layer” are often used interchangeably when referring to a platform. A simple platform 210 might use 8-bit microcontroller hardware with no operating system; in this case, modules in RFID OS framework 201 serve as the device operating system. On platforms with more powerful processors, the present system integrates with both the target operating system 208 and the platform hardware 209; in this case, portable RFID OS framework components reside in the different processors, logic blocks and ASICs that comprise a particular platform 210. The open software architecture of the RFID OS framework 201, together with the horizontal layering of the firmware stratum (described below) facilitates integration of RFID radio hardware with most types of processors and OS platforms.
Hardware Abstraction Layer/Drivers
As shown in
Application Software Interface Layer/Libraries/APIs
As shown in
Application Layer
Applications in application layer 207, as well as in host 100/220, may indirectly access any of the lower layers (205, 203, 210) in the system architecture via a set of APIs 304/306. By accessing the RFID reader hardware and platform 210 via the abstraction layers provided by the libraries and drivers, ‘on-reader’ applications become portable across devices employing the present architecture. This abstraction layering makes third-party-generated RFID reader software and tag protocol libraries independent of the underlying hardware, thus facilitating the integration of embedded computing intelligence into sensors, devices and ordinary objects.
In an alternative embodiment of the present system, hardware abstraction layer 203 may include one or more drivers and no API(s). In this same embodiment, application software interface layer 205 may include only (one or more) APIs and no library functional modules. In this embodiment, an API in layer 305/205 directly calls a corresponding driver in layer 303/203 to control reader hardware 209.
Application Code Layer
In an exemplary embodiment, as indicated above, on-reader applications make function calls to library functions, which, in turn, call driver functions which control the reader hardware. As shown in
The orthogonal relationship between firmware stratum 350 and the layering of composite structure 201(*) is indicated in
Table 1, below, lists specific modules or other functional components that may be included in the firmware stratum 350 in an exemplary embodiment of the present system. In Table 1, each level 33X may be further subdivided into sub-levels, each of which is designated in the Table as being a member of a respective higher level, as indicated in
In the system shown in
In the system shown in
The software/firmware in reader 700 includes proprietary source code (and other information) security capability, as well as secure delivery capability, so that a user can encapsulate code into a software module that may be distributed in a secure manner (i.e., without being copied). Using a suitable form of encryption as the security mechanism, selected code (in software or firmware form) can reside and operate within the platform or framework without being extracted or copied.
The present system architecture allows any specific software/firmware module to have its API known/published, but any module containing API-related code (the code accessed by the API), for example, may remain protected and secure. Other parties can make function calls to the protected functions by making calls to the functions' published APIs. Each of the components within framework 201 is selectively securable at three levels, i.e., at the driver, libraries, API and/or application level. Some components may be open source, and other components may be locked and proprietary so that third parties can use this open architecture framework as a secure delivery vehicle for their code into the market.
As shown in the example of
At step 915, the ‘Read Tag’ library function 305(23) calls Read Tag driver API 304(23) in driver API library layer 205, in framework layer 304/firmware stratum Level 335, sub-level 23. At step 920, Read Tag driver API 304(23) calls Read Tag driver 303(23) in driver layer 203, in framework layer 305/firmware stratum Level 335, sub-level 23. Steps 915 and 920 of the present example are indicated by arrow 313 in
At step 925, the Read Tag driver sends a Read Tag command to platform 210, as indicated by arrow 204. Finally, at step 930, the platform sends the Read Tag command to Tag 230, which reads information stored in the tag, and sends information back to the reader, as indicated by arrow 202 in
Certain changes may be made in the above methods and systems without departing from the scope of that which is described herein. It is to be noted that all matter contained in the above description or shown in the accompanying drawings is to be interpreted as illustrative and not in a limiting sense. For example, the methods shown in
This application claims benefit of priority to U.S. Provisional Application No. 60/673,692, filed Apr. 21, 2005, which is incorporated herein by reference. This application also claims benefit of priority to U.S. Provisional Application No. 60/712,957, filed 31 Aug. 2005.
Number | Name | Date | Kind |
---|---|---|---|
3842350 | Gross | Oct 1974 | A |
4093919 | Watanabe | Jun 1978 | A |
4924210 | Matsui et al. | May 1990 | A |
5013898 | Glasspool | May 1991 | A |
5455575 | Schuermann | Oct 1995 | A |
5519381 | Marsh et al. | May 1996 | A |
5649295 | Shober et al. | Jul 1997 | A |
5745037 | Guthrie et al. | Apr 1998 | A |
5751220 | Ghaffari | May 1998 | A |
5777561 | Chieu et al. | Jul 1998 | A |
5887176 | Griffith et al. | Mar 1999 | A |
5920261 | Hughes et al. | Jul 1999 | A |
5929779 | MacLellan et al. | Jul 1999 | A |
5952922 | Shober | Sep 1999 | A |
6078251 | Landt et al. | Jun 2000 | A |
6161724 | Blacker et al. | Dec 2000 | A |
6172609 | Lu | Jan 2001 | B1 |
6182214 | Hardjono | Jan 2001 | B1 |
6192222 | Greeff et al. | Feb 2001 | B1 |
6225901 | Kail, IV | May 2001 | B1 |
6259367 | Klein | Jul 2001 | B1 |
6304613 | Koller et al. | Oct 2001 | B1 |
6317027 | Watkins | Nov 2001 | B1 |
6377176 | Lee | Apr 2002 | B1 |
6420961 | Bates et al. | Jul 2002 | B1 |
6483427 | Werb | Nov 2002 | B1 |
6496806 | Horwitz et al. | Dec 2002 | B1 |
6509828 | Bolavage et al. | Jan 2003 | B2 |
6526264 | Sugar et al. | Feb 2003 | B2 |
6531957 | Nysen | Mar 2003 | B1 |
6539422 | Hunt | Mar 2003 | B1 |
6617962 | Horwitz et al. | Sep 2003 | B1 |
6677852 | Landt | Jan 2004 | B1 |
6717516 | Bridgelall | Apr 2004 | B2 |
6810122 | Miyazaki et al. | Oct 2004 | B1 |
6903656 | Lee | Jun 2005 | B1 |
6985931 | Dowling | Jan 2006 | B2 |
6992567 | Cole et al. | Jan 2006 | B2 |
7026935 | Diorio et al. | Apr 2006 | B2 |
7075412 | Reynolds et al. | Jul 2006 | B1 |
7103911 | Spies et al. | Sep 2006 | B2 |
7197279 | Bellantoni | Mar 2007 | B2 |
7367020 | Bickle et al. | Apr 2008 | B2 |
7375616 | Rowse et al. | May 2008 | B2 |
7378967 | Sullivan | May 2008 | B2 |
20020036569 | Martin | Mar 2002 | A1 |
20020131595 | Ueda et al. | Sep 2002 | A1 |
20030007473 | Strong et al. | Jan 2003 | A1 |
20030055667 | Sgambaro et al. | Mar 2003 | A1 |
20030081785 | Boneh et al. | May 2003 | A1 |
20030173403 | Vogler | Sep 2003 | A1 |
20030214389 | Arneson et al. | Nov 2003 | A1 |
20030216969 | Bauer et al. | Nov 2003 | A1 |
20040069852 | Seppinen et al. | Apr 2004 | A1 |
20040087273 | Perttila et al. | May 2004 | A1 |
20040089707 | Cortina et al. | May 2004 | A1 |
20040118916 | He | Jun 2004 | A1 |
20040176032 | Kotola et al. | Sep 2004 | A1 |
20040179684 | Appenzeller et al. | Sep 2004 | A1 |
20040212493 | Stilp | Oct 2004 | A1 |
20040232220 | Beenau et al. | Nov 2004 | A1 |
20050036620 | Casden et al. | Feb 2005 | A1 |
20050063004 | Silverbrook | Mar 2005 | A1 |
20050083180 | Horwitz et al. | Apr 2005 | A1 |
20050084100 | Spies et al. | Apr 2005 | A1 |
20050088299 | Bandy et al. | Apr 2005 | A1 |
20050105600 | Culum et al. | May 2005 | A1 |
20050116813 | Raskar | Jun 2005 | A1 |
20060006986 | Gravelle et al. | Jan 2006 | A1 |
20060022815 | Fischer et al. | Feb 2006 | A1 |
20060038659 | Takano et al. | Feb 2006 | A1 |
20060074896 | Thomas et al. | Apr 2006 | A1 |
20060208853 | Kung et al. | Sep 2006 | A1 |
20060238305 | Loving et al. | Oct 2006 | A1 |
20070001813 | Maguire et al. | Jan 2007 | A1 |
20070008132 | Bellantoni | Jan 2007 | A1 |
20070024424 | Powell | Feb 2007 | A1 |
20070205871 | Posamentier | Sep 2007 | A1 |
20080143482 | Shoarinejad et al. | Jun 2008 | A1 |
20080143485 | Frerking | Jun 2008 | A1 |
Number | Date | Country |
---|---|---|
298 14 988 | Oct 1998 | DE |
1772812 | Apr 2007 | EP |
2002288598 | Oct 2002 | JP |
WO0182213 | Nov 2001 | WO |
WO2004047000 | Jun 2004 | WO |
WO2006123316 | Nov 2006 | WO |
WO2007094868 | Aug 2007 | WO |
Number | Date | Country | |
---|---|---|---|
20070207792 A1 | Sep 2007 | US |
Number | Date | Country | |
---|---|---|---|
60673692 | Apr 2005 | US | |
60712957 | Aug 2005 | US |