Jump to content

TinyOS: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
link is broken and xubuntos has not been updated since 2007
Website field now contains the official website for TinyOS, rather than their github page.
 
(44 intermediate revisions by 38 users not shown)
Line 1: Line 1:
{{More citations needed|date=December 2006}}
{{Infobox OS
{{Infobox OS
| name = TinyOS
| name = TinyOS
| logo = [[Image:tos-jwall.jpg]]
| logo = [[Image:tos-jwall.jpg|200px]]
| screenshot =
| screenshot =
| caption =
| caption =
| developer = TinyOS Alliance
| developer = TinyOS Alliance
| source_model = [[Open source]]
| source model = [[Open-source software|Open source]]
| kernel_type =
| kernel type =
| supported_platforms =
| supported platforms =
| ui =
| ui =
| family = [[Embedded operating system]]s
| family = [[Embedded operating system]]s
| released = 2000
| released = {{Start date and age|2000}}
| latest_release_version = 2.1.1
| latest release version = 2.1.2
| latest release date = {{Start date and age|2012|08|20}}
| latest_release_date = April, 2010
| latest_test_version =
| latest test version = 2.1.3
| latest_test_date =
| latest test date =
| marketing_target = [[Wireless sensor network]]s
| marketing target = [[Wireless sensor network]]s
| programmed_in = [[nesC]]
| programmed in = nesC
| prog_language = [[nesC]]
| language = English
| language = English
| updatemodel =
| updatemodel =
| package_manager =
| package manager =
| working_state = Current
| working state = Current
| license = [[BSD License]]
| license = [[BSD licenses|BSD]]
| website = [http://www.tinyos.net www.tinyos.net]
| website = {{URL|tinyos.net}}
}}
}}

'''TinyOS''' is a [[free software|free]] and [[open source software|open source]] component-based [[operating system]] and platform targeting [[wireless sensor network]]s (WSNs). TinyOS is an embedded operating system written in the [[nesC]] [[programming language]] as a set of cooperating tasks and processes. It is intended to be incorporated into [[smartdust]]. TinyOS started as a collaboration between the [[University of California, Berkeley]] in co-operation with [[Intel Corporation|Intel]] Research and [[Crossbow Technology]], and has since grown to be an international consortium, the TinyOS Alliance.
'''TinyOS''' is an embedded, component-based [[operating system]] and platform for low-power wireless devices, such as those used in [[wireless sensor network]]s (WSNs), [[smartdust]], [[ubiquitous computing]], [[personal area network]]s, [[building automation]], and [[smart meter]]s. It is written in the [[programming language]] nesC, as a set of cooperating tasks and processes. It began as a collaboration between the [[University of California, Berkeley]], [[Intel Research]], and [[Crossbow Technology]], was released as [[free and open-source software]] under a [[BSD licenses|BSD license]], and has since grown into an international consortium, the [[TinyOS Alliance]].

TinyOS has been used in space, being implemented in [[ESTCube-1]].


==Implementation==
==Implementation==


TinyOS applications are written in the programming language [[nesC]], a dialect of the [[C (programming language)|C language]] optimized for the memory limits of sensor networks. Its supplementary tools are mainly in the form of [[Java (programming language)|Java]] and [[shell script]] front-ends. Associated libraries and tools, such as the nesC compiler and [[Atmel AVR]] binutils toolchains, are mostly written in C.
The Primary WIKI of TinyOS is http://docs.tinyos.net/


TinyOS programs are built of [[component-based software engineering|software components]], some of which present hardware abstractions. Components are connected to each other using [[interface (computer science)|interfaces]]. TinyOS provides interfaces and components for common abstractions such as packet communication, routing, sensing, actuation and storage.
TinyOS applications are written in [[nesC]], a dialect of the [[C (programming language)|C language]] optimized for the memory limits of sensor networks. Its supplementary tools are mainly in the form of [[Java (programming language)|Java]] and [[shell script]] front-ends. Associated libraries and tools, such as the NesC compiler and [[Atmel AVR]] binutils toolchains, are mostly written in C.


TinyOS is fully [[Asynchronous I/O|non-blocking]]: it has one [[call stack]]. Thus, all [[input/output]] (I/O) operations that last longer than a few hundred [[microsecond]]s are asynchronous and have a [[Callback (computer science)|callback]]. To enable the native [[compiler]] 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]] and [[interrupt handler]] bottom halves. A TinyOS component can post a task, which the OS will schedule to run later. Tasks are non-[[Preemption (computing)|preemptive]] and run in [[FIFO (computing and electronics)|first in, first out]] order. This simple [[Concurrency (computer science)|concurrency]] model is typically sufficient for I/O centric applications, but its difficulty with CPU-heavy applications has led to developing a [[Thread (computer science)|thread]] library for the OS, named TOSThreads. TOSThreads are unmaintained and have been deprecated.<ref>{{cite web |title=TinyOS development repository TOSThreads deprecated |url=https://github.com/tp-freeforall/prod/tree/2308921ea2f2a1d48abb24c115a7691e1e400140/deprecated |website=TinyOS current development repository |access-date=3 December 2018}}</ref>
TinyOS programs are built out of [[component-based software engineering|software component]]s, some of which present hardware abstractions. Components are connected to each other using [[interface (computer science)|interfaces]]. TinyOS provides interfaces and components for common abstractions such as packet communication, routing, sensing, actuation and storage.


TinyOS code is statically linked with program code and is compiled into a small binary, using a custom [[GNU toolchain]]. Associated utilities are provided to complete a development platform for working with TinyOS.
TinyOS is completely [[asynchronous I/O|non-blocking]]: it has one [[call stack|stack]]. Therefore, all [[I/O]] operations that last longer than a few hundred [[microsecond]]s are asynchronous and have a [[callback (computer science)|callback]]. To enable the native [[compiler]] 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]] and [[interrupt handler]] bottom halves. A TinyOS component can post a task, which the OS will schedule to run later. Tasks are non-[[preemption (computing)|preemptive]] and run in [[FIFO]] order. This simple [[concurrency (computer science)|concurrency]] model is typically sufficient for I/O centric applications, but its difficulty with CPU-heavy applications has led to the development of a [[thread (computer science)|thread]] 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]]. Associated utilities are provided to complete a development platform for working with TinyOS.


==History==
==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)
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 2012: TinyOS 2.1.2 released
* April 2010: TinyOS 2.1.1 released.
* August 2008: TinyOS 2.1.0 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.
* July 2007: TinyOS 2.0.2 released. Work on TinyOS 2.1, which involves slight changes to a few interfaces, begins.
Line 51: Line 53:
* July 2005: NEST project concludes.
* 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.
* 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.
* 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.
* 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.
* September 2002: TinyOS version 1.0, implemented in nesC, is released.
Line 57: Line 59:
* February 2002: Berkeley distributes 1000 mica nodes to other participants in the NEST project.
* 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.
* 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]] scripts.
* 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]] scripts.
* 1999: First TinyOS platform (WeC) and OS implementations are developed at Berkeley.
* 1999: First TinyOS platform (WeC) and OS implementations are developed at Berkeley.


Line 63: Line 65:


==Integrated development environments==
==Integrated development environments==
As of 2010, three [[integrated development environment]]s (IDEs) are available for TinyOS:
As of 2010, three [[integrated development environment]]s (IDEs) are available for TinyOS, as [[Plug-in (computing)|plug-ins]] for [[Eclipse (software)|Eclipse]]:
* ''YETI 2'', ETH Zürich (development stopped)
*[http://tos-ide.ethz.ch/wiki/index.php TinyOS Eclipse Plugin "YETI 2"], ETH Zürich
*[http://docs.tinyos.net/index.php/NESCDT-_An_editor_for_nesC_in_Eclipse TinyOS Eclipse Editor Plugin by Rasmus Pedersen], Copenhagen Business School
* ''XPairtise'' by Rasmus Pedersen, Copenhagen Business School
*[http://tinydt.sourceforge.net/ TinyDT - TinyOS Plugin for the eclipse platform], Vanderbilt University
* ''TinyDT'', Vanderbilt University

==References==
{{Reflist}}


==External links==
==External links==
* [http://github.com/tinyos/tinyos-main TinyOS on GitHub]
{{External links|date=April 2010}}
*{{Dmoz|Computers/Software/Operating_Systems/Network/TinyOS}}
*{{official website|http://www.tinyos.net/}}
*[http://docs.tinyos.net TinyOS Documentation Wiki]
*[http://www.tinyos.net/tinyos-2.x/doc TinyOS 2.0 Documentation]
*[http://csl.stanford.edu/~pal/pubs/tinyos-programming.pdf TinyOS Programming] by Philip Levis June 28, 2006
*{{dmoz|Computers/Software/Operating_Systems/Network/TinyOS}}
*[http://www.tinyos.or.kr TinyOS Korea Forum Website]
*[http://tinyos.cvs.sourceforge.net/*checkout*/tinyos/tinyos-2.x-contrib/index.html/ TinyOS Contrib] - Contributed projects
*[http://www.tinyos8051wg.net/ www.tinyos8051wg.net] - [http://www.tinyos8051wg.net/ Port of TinyOS to mcs51 (8051) based architectures and CC2430 in particular]
*[http://klueska.doesntexist.com/installing_xubuntos_vm.html XubuntTOS VMWare] - VMWare virtual machine image of XubunTOS
*[http://www.btnode.ethz.ch/Projects/SensorNetworkMuseum SensorNetworkMuseum] - reference data for sensor network platforms
* TinyOS Technology Exchange (TTX): annual developer meeting
**[http://sites.google.com/site/ettx2009 ETTX1] 2009, Cork, Ireland
**[http://www.eecs.berkeley.edu/~culler/tinyos/ttx/ TTX5] 2008, Univ. of California, Berkeley
**[http://tinyos.stanford.edu/ttx/2007 TTX4] 2007, M.I.T.
**[http://www.cs.berkeley.edu/~culler/tinyos/ttx/2006 TTX3] 2006, Stanford University
**[http://www.eecs.berkeley.edu/~culler/tinyos/ttx/2005 TTX2] 2005, Univ. of California, Berkeley
**[http://www.eecs.berkeley.edu/~culler/tinyos/ttx/2004 TTX] 2004, Univ. of California, Berkeley
*[http://mythicalcomputer.blogspot.com/2008/08/installation-of-tinyos-in-ubuntu.html TinyOs 2.1.0 Installation] Blogfor installation of TinyOS 2.10 in Ubuntu. It provides simple examples for testing the installation and running programs using Avrora

===Video===
*Presentation
**[http://vimeo.com/3264574 '''Time to Roll''', ETTX 2009 Keynote, David Culler, UC Berkeley]
**[http://vimeo.com/3284230 '''T2: What the Second Generation Holds''', ETTX 2009 Tutorial, Phil Levis, Stanford]
*TinyOS Demonstration

{{Citations missing|date=December 2006}}

{{Wireless Sensor Network}}
{{Wireless Sensor Network}}


[[Category:Embedded operating systems]]
[[Category:Embedded operating systems]]
[[Category:Software using the BSD license]]

[[de:TinyOS]]
[[es:TinyOS]]
[[fr:TinyOS]]
[[it:TinyOS]]
[[ru:TinyOS]]
[[zh:TinyOS]]

Latest revision as of 13:17, 14 November 2023

TinyOS
DeveloperTinyOS Alliance
Written innesC
OS familyEmbedded operating systems
Working stateCurrent
Source modelOpen source
Initial release2000; 24 years ago (2000)
Latest release2.1.2 / August 20, 2012; 12 years ago (2012-08-20)
Repository
Marketing targetWireless sensor networks
Available inEnglish
LicenseBSD
Official websitetinyos.net

TinyOS is an embedded, component-based operating system and platform for low-power wireless devices, such as those used in wireless sensor networks (WSNs), smartdust, ubiquitous computing, personal area networks, building automation, and smart meters. It is written in the programming language nesC, as a set of cooperating tasks and processes. It began as a collaboration between the University of California, Berkeley, Intel Research, and Crossbow Technology, was released as free and open-source software under a BSD license, and has since grown into an international consortium, the TinyOS Alliance.

TinyOS has been used in space, being implemented in ESTCube-1.

Implementation

[edit]

TinyOS applications are written in the programming language nesC, a dialect of the C language optimized for the memory limits of sensor networks. Its supplementary tools are mainly in the form of Java and shell script front-ends. Associated libraries and tools, such as the nesC compiler and Atmel AVR binutils toolchains, are mostly written in C.

TinyOS programs are built of software components, some of which present hardware abstractions. Components are connected to each other using interfaces. TinyOS provides interfaces and components for common abstractions such as packet communication, routing, sensing, actuation and storage.

TinyOS is fully non-blocking: it has one call stack. Thus, all input/output (I/O) operations that last longer than a few hundred microseconds are asynchronous and have a callback. To enable the native compiler 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 and interrupt handler bottom halves. A TinyOS component can post a task, which the OS will schedule to run later. Tasks are non-preemptive and run in first in, first out order. This simple concurrency model is typically sufficient for I/O centric applications, but its difficulty with CPU-heavy applications has led to developing a thread library for the OS, named TOSThreads. TOSThreads are unmaintained and have been deprecated.[1]

TinyOS code is statically linked with program code and is compiled into a small binary, using a custom GNU toolchain. Associated utilities are provided to complete a development platform for working with TinyOS.

History

[edit]

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)

  • August 2012: TinyOS 2.1.2 released
  • 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 scripts.
  • 1999: First TinyOS platform (WeC) and OS implementations are developed at Berkeley.

Integrated development environments

[edit]

As of 2010, three integrated development environments (IDEs) are available for TinyOS, as plug-ins for Eclipse:

  • YETI 2, ETH Zürich (development stopped)
  • XPairtise by Rasmus Pedersen, Copenhagen Business School
  • TinyDT, Vanderbilt University

References

[edit]
  1. ^ "TinyOS development repository TOSThreads deprecated". TinyOS current development repository. Retrieved 3 December 2018.
[edit]