Введение
TinyOS — это встроенная операционная система и платформа, основанная на компонентном подходе, для беспроводных устройств с низким энергопотреблением, таких как те, что используются в беспроводных сенсорных сетях (WSN), системах "умной пыли" (smartdust), повсеместных вычислениях, персональных сетях, автоматизации зданий и интеллектуальных счетчиках. Она написана на языке программирования nesC в виде набора взаимодействующих задач и процессов. Разработка TinyOS началась как совместный проект Калифорнийского университета в Беркли, Intel Research и Crossbow Technology, затем была выпущена как свободное программное обеспечение с открытым исходным кодом под лицензией BSD и впоследствии превратилась в международный консорциум TinyOS Alliance. TinyOS применялась в космических проектах, в частности, была реализована в ESTCube 1.
Реализация
Приложения TinyOS написаны на языке программирования nesC, диалекте языка C, оптимизированном для ограничений по памяти сенсорных сетей. Вспомогательные инструменты представлены в основном Java и shell-скриптами. Связанные библиотеки и инструменты, такие как компилятор nesC и цепочки инструментов Atmel AVR binutils, в основном написаны на C.
Программы TinyOS строятся из программных компонентов, некоторые из которых предоставляют аппаратные абстракции. Компоненты соединяются друг с другом посредством интерфейсов. TinyOS предоставляет интерфейсы и компоненты для общих абстракций, таких как пакетная связь, маршрутизация, сенсорика, управление и хранение данных. TinyOS полностью неблокирующий: он использует один стек вызовов. Следовательно, все операции ввода/вывода (I/O), занимающие более нескольких сотен микросекунд, выполняются асинхронно и используют механизм обратного вызова. Чтобы обеспечить возможность оптимизации компилятором через границы вызовов, TinyOS использует возможности nesC для статической привязки этих обратных вызовов, называемых событиями. Неблокирующий характер TinyOS позволяет поддерживать высокую степень параллелизма при использовании одного стека, но требует от программистов написания сложной логики путем соединения множества небольших обработчиков событий. Для поддержки более сложных вычислений TinyOS предоставляет задачи, аналогичные Deferred Procedure Call и нижним половинам обработчиков прерываний. Компонент TinyOS может запланировать задачу, которую ОС выполнит позже. Задачи не являются прерываемыми и выполняются в порядке поступления (FIFO). Эта простая модель параллелизма обычно достаточна для приложений, ориентированных на ввод/вывод, но трудности с ресурсоемкими приложениями привели к разработке библиотеки потоков для ОС под названием TOSThreads. TOSThreads больше не поддерживаются и признаны устаревшими. Код TinyOS статически связывается с программным кодом и компилируется в небольшой исполняемый файл с использованием специализированной цепочки инструментов GNU. Дополнительные утилиты предоставляются для создания полноценной платформы разработки для работы с TinyOS.
История
TinyOS началась как проект в Калифорнийском университете в Беркли в рамках программы DARPA NEST. С тех пор она привлекла тысячи академических и коммерческих разработчиков и пользователей по всему миру. (перечень в обратном хронологическом порядке)
Август 2012: TinyOS 2.1.2 выпущена.
Апрель 2010: TinyOS 2.1.1 выпущена.
Август 2008: TinyOS 2.1.0 выпущена.
Июль 2007: TinyOS 2.0.2 выпущена. Началась работа над TinyOS 2.1, включающая незначительные изменения в нескольких интерфейсах.
Апрель 2007: TinyOS 2.0.1 выпущена на 4-й конференции TinyOS Technology Exchange в Кембридже, штат Массачусетс.
Ноябрь 2006: TinyOS 2.0 выпущена на конференции SenSys в Боулдере, штат Колорадо.
Июль 2006: TinyOS 2.0 beta2 выпущена.
Февраль 2006: TinyOS 2.0 beta1 выпущена на 3-й конференции TinyOS Technology Exchange в Стэнфорде, Калифорния.
Декабрь 2005: TinyOS 1.1.15 выпущена, последняя версия 1.1.
Июль 2005: Проект NEST завершен.
Июнь 2004: Сформирована рабочая группа для определения дальнейших шагов по развитию TinyOS, основываясь на опыте переноса на новые платформы. Группа приняла решение начать работу над версией 2.0.
Сентябрь 2003 – Декабрь 2005: TinyOS переходит к периодическому выпуску минорных версий.
Август 2003: Выпущена TinyOS версии 1.1, включающая новые функции nesC, в том числе обнаружение гонок данных.
Сентябрь 2002: Выпущена TinyOS версии 1.0, реализованная на nesC.
Апрель 2002: Началась работа над языком программирования nesC в сотрудничестве между Intel Research и UC Berkeley.
Февраль 2002: Беркли распространила 1000 узлов mica среди других участников проекта NEST.
2001: Беркли разработала платформу mica и выпустила TinyOS версии 0.6.
2000: Беркли спроектировала платформу RENE и сотрудничала с компанией Crossbow, Inc., которая занималась массовым производством оборудования. TinyOS версии 0.43 стала доступна для общественности через SourceForge. Версии TinyOS до 1.0 представляют собой смесь скриптов на C и Perl.
1999: Первая платформа TinyOS (WeC) и реализация ОС были разработаны в Беркли.
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.