TinyOS
Encyclopedia
TinyOS is a free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 and open source component-based operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 and platform targeting wireless sensor network
Wireless sensor network
A wireless sensor network consists of spatially distributed autonomous sensors to monitor physical or environmental conditions, such as temperature, sound, vibration, pressure, motion or pollutants and to cooperatively pass their data through the network to a main location. The more modern...

s (WSNs). TinyOS is an embedded operating system written in the nesC
NesC
nesC , pronounced "NES-see", is a component-based, event-driven programming language used to build applications for the TinyOS platform. TinyOS is an operating environment designed to run on embedded devices used in distributed wireless sensor networks...

 programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

 as a set of cooperating tasks and processes. It is intended to be incorporated into smartdust
Smartdust
Smartdust is a hypothetical system of many tiny microelectromechanical systems such as sensors, robots, or other devices, that can detect, for example, light, temperature, vibration, magnetism or chemicals; are usually networked wirelessly; and are distributed over some area to perform tasks,...

. TinyOS started as a collaboration between the University of California, Berkeley
University of California, Berkeley
The University of California, Berkeley , is a teaching and research university established in 1868 and located in Berkeley, California, USA...

 in co-operation with Intel
Intel Corporation
Intel Corporation is an American multinational semiconductor chip maker corporation headquartered in Santa Clara, California, United States and the world's largest semiconductor chip maker, based on revenue. It is the inventor of the x86 series of microprocessors, the processors found in most...

 Research and Crossbow Technology
Crossbow Technology
Crossbow Technology, Inc. is a California-based company with two distinct product lines. One is based on MEMS and Fibre optic gyroscope inertial sensor systems. This includes inertial measurement units, AHRS systems, Digital Inclinometers and INS/GPS GN&C units. The other is based on GPS and...

, and has since grown to be an international consortium, the TinyOS Alliance.

Implementation

TinyOS applications are written in nesC
NesC
nesC , pronounced "NES-see", is a component-based, event-driven programming language used to build applications for the TinyOS platform. TinyOS is an operating environment designed to run on embedded devices used in distributed wireless sensor networks...

, a dialect of the C language
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 optimized for the memory limits of sensor networks. Its supplementary tools are mainly in the form of Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 and shell script
Shell script
A shell script is a script written for the shell, or command line interpreter, of an operating system. It is often considered a simple domain-specific programming language...

 front-ends. Associated libraries and tools, such as the NesC compiler and Atmel AVR
Atmel AVR
The AVR is a modified Harvard architecture 8-bit RISC single chip microcontroller which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other...

 binutils toolchains, are mostly written in C.

TinyOS programs are built out of software component
Component-based software engineering
Component-based software engineering is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system...

s, some of which present hardware abstractions. Components are connected to each other using interfaces
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...

. TinyOS provides interfaces and components for common abstractions such as packet communication, routing, sensing, actuation and storage.

TinyOS is completely non-blocking
Asynchronous I/O
Asynchronous I/O, or non-blocking I/O, is a form of input/output processing that permits other processing to continue before the transmission has finished....

: it has one stack
Call stack
In computer science, a call stack is a stack data structure that stores information about the active subroutines of a computer program. This kind of stack is also known as an execution stack, control stack, run-time stack, or machine stack, and is often shortened to just "the stack"...

. Therefore, all I/O
I/O
I/O may refer to:* Input/output, a system of communication for information processing systems* Input-output model, an economic model of flow prediction between sectors...

 operations that last longer than a few hundred microsecond
Microsecond
A microsecond is an SI unit of time equal to one millionth of a second. Its symbol is µs.A microsecond is equal to 1000 nanoseconds or 1/1000 millisecond...

s are asynchronous and have a callback
Callback (computer science)
In computer programming, a callback is a reference to executable code, or a piece of executable code, that is passed as an argument to other code. This allows a lower-level software layer to call a subroutine defined in a higher-level layer....

. To enable the native compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 to better optimize across call boundaries, TinyOS uses nesC's features to link these callbacks, called events, statically. While being non-blocking enables TinyOS to maintain high concurrency with one stack, it forces programmers to write complex logic by stitching together many small event handlers. To support larger computations, TinyOS provides tasks, which are similar to a Deferred Procedure Call
Deferred Procedure Call
A Deferred Procedure Call is a Microsoft Windows operating system mechanism which allows high-priority tasks to defer required but lower-priority tasks for later execution...

 and interrupt handler
Interrupt handler
An interrupt handler, also known as an interrupt service routine , is a callback subroutine in microcontroller firmware, operating system or device driver whose execution is triggered by the reception of an interrupt...

 bottom halves. A TinyOS component can post a task, which the OS will schedule to run later. Tasks are non-preemptive
Preemption (computing)
In computing, preemption is the act of temporarily interrupting a task being carried out by a computer system, without requiring its cooperation, and with the intention of resuming the task at a later time. Such a change is known as a context switch...

 and run in FIFO
FIFO
FIFO is an acronym for First In, First Out, an abstraction related to ways of organizing and manipulation of data relative to time and prioritization...

 order. This simple concurrency
Concurrency (computer science)
In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...

 model is typically sufficient for I/O centric applications, but its difficulty with CPU-heavy applications has led to the development of a thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

 library for the OS, named TOSThreads.

TinyOS code is statically linked with program code, and compiled into a small binary, using a custom GNU toolchain
GNU toolchain
The GNU toolchain is a blanket term for a collection of programming tools produced by the GNU Project. These tools form a toolchain used for developing applications and operating systems....

. Associated utilities are provided to complete a development platform for working with TinyOS

History

TinyOS began as a project at UC Berkeley as part of the DARPA NEST program. It has since grown to involve thousands of academic and commercial developers and users worldwide. (list in reverse chronological order)
  • April 2010: TinyOS 2.1.1 released.
  • August 2008: TinyOS 2.1.0 released.
  • July 2007: TinyOS 2.0.2 released. Work on TinyOS 2.1, which involves slight changes to a few interfaces, begins.
  • April 2007: TinyOS 2.0.1 released at the 4th TinyOS Technology Exchange in Cambridge, MA.
  • November 2006: TinyOS 2.0 released at the SenSys conference in Boulder, CO.
  • July 2006: TinyOS 2.0 beta2 released.
  • February 2006: TinyOS 2.0 beta1 released at the 3rd TinyOS Technology Exchange in Stanford, CA.
  • December 2005: TinyOS 1.1.15, the last 1.1 version, is released.
  • July 2005: NEST project concludes.
  • June 2004: Working group forms on next steps for TinyOS, based on experiences porting to new platforms. Group agrees to start work on 2.0.
  • September 2003 – December 2005: TinyOS begins a periodic minor release process.
  • August 2003: TinyOS version 1.1 is released, which includes new nesC features including data race detection.
  • September 2002: TinyOS version 1.0, implemented in nesC, is released.
  • April 2002: Work on the nesC programming language begins as a collaboration between Intel Research and UC Berkeley.
  • February 2002: Berkeley distributes 1000 mica nodes to other participants in the NEST project.
  • 2001: Berkeley develops the mica platform and releases TinyOS version 0.6.
  • 2000: Berkeley designs the rene platform and partners with Crossbow, Inc., who mass produces the hardware. TinyOS version 0.43 is made available to the public via SourceForge. Pre-1.0 versions of TinyOS are a mix of C and Perl
    Perl
    Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

     scripts.
  • 1999: First TinyOS platform (WeC) and OS implementations are developed at Berkeley.

Integrated development environments

As of 2010, three integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

s (IDEs) are available for TinyOS:

External links


Video

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK