Jump to content

OpenTag

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Boboskaditdatin (talk | contribs) at 15:46, 23 May 2013 (Design Philosophy). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
OpenTag
DeveloperJP Norair
Written inC
OS familyEmbedded operating system
Working stateCurrent
Source modelOpen source
Initial release2011
Latest release0.4.0 / 08 Nov 2012
Marketing targetWireless sensor networks
Available inEnglish
PlatformsMSP430, STM32
Kernel typeExokernel
LicenseOpenTag License
Official websiteOpenTag wiki

OpenTag is a DASH7 protocol stack and minimal RTOS, written in C. It is designed to run on microcontrollers or radio SoCs. As a result, OpenTag has been engineered to be a very tight and compact package. However, with proper configuration it can also run in any POSIX environment. It is also worth noting that OpenTag can provide all functionality required for any type of DASH7 Mode 2 device, and not only for the eponymous “tag”-type endpoint device.

Design Philosophy

OpenTag implements DASH7 Mode 2, which specifies a monolithic system encompassing OSI layers 1-6 and part of 7 as well as the application layer. OpenTag is designed to be light and compact as it is targeted to run on resource-constrained microcontrollers. As a monolithic system, OpenTag does not implement different layers of the OSI model in a way that will enable them to be deployed on systems that differ from the typical, and nearly universal, MCU+RF transceiver architecture, utilized by WSN and M2M nodes.[1] However, the OpenTag RTOS employs an exokernel architecture (as of version 0.4), so it doesn't at all feature a monolithic kernel. Applications developed for OpenTag may safely reference the library or directly access the hardware, as fits the exokernel design model.

Features

Implementation

OpenTag implements a multitasking real-time kernel designed specifically to implement DASH7. User tasks can be managed by the kernel, and they can pre-empt the kernel, although they must be allocated at compile-time. The scheduling frequency, or kernel resolution, is implementation-dependent, but it must be at least 1024 Hz, and it must be an integer multiple of 1024 Hz.[2]

Kernel events use callbacks to invoke custom application code, which are called "applets." Extensive templating is used to provide callback functionality that is efficient for embedded environments. Thus callbacks in OpenTag may be dynamic (assigned during runtime), or they may be static, which requires assignment at compile-time but reduces overhead. As OpenTag implements an exokernel, user tasks may be managed entirely by the kernel, they may be managed partly by the kernel and partly by external events, or they may be managed entirely by external events. Communication between tasks and the kernel is accomplished through an API of system calls and a message pipe interface.[3]

OpenTag's external API uses a simplified client-server model [4] and NDEF for data wrapping. The NDEF wrapper is particularly used for wireline communication between client and server, where the client is typically a human-interface device and the server is the OpenTag SoC. The internal API is exposed in a 1:1 manner with the external API, allowing the client to act much like an external process of the OpenTag kernel.

Supported Devices

At the time of writing, most OpenTag hardware is implemented on the Texas Instruments CC430 or MSP430 devices, which are endorsed for usage with OpenTag.[5] Current OpenTag source trees support many other MCUs and RF transceivers, however, such as various types of STM32, CC11xx, and Semtech SX12xx components.[6]

References

  1. ^ "OpenTag Features Overview". OpenTag Wiki. Indigresso.com. Retrieved 9 July 2012.
  2. ^ Norair, JP. "Building DASH7 Apps with OpenTag". Retrieved 9 July 2012.
  3. ^ "OpenTag API". OpenTag Wiki. Retrieved 9 July 2012.
  4. ^ "OpenTag Client-Server Architecture". OpenTag Wiki.
  5. ^ "The all new CC430 combines leading MSP430 MCU and low power RF technology". ti.com. Texas Instruments. Retrieved 9 July 2012.
  6. ^ "OpenTag Mainline Repository". Retrieved 9 July 2012.