stringtranslate.com

Контики

Contiki — это операционная система для сетевых систем с ограниченной памятью, ориентированная на маломощные беспроводные устройства Интернета вещей (IoT). Contiki используется для систем уличного освещения , звукового мониторинга для умных городов , радиационного мониторинга и сигнализации. [1] Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD-3-Clause .

Contiki был создан Адамом Данкельсом в 2002 году [2] и в дальнейшем развивался международной командой разработчиков из Texas Instruments, Atmel, Cisco, ENEA , ETH Zurich , Redwire, RWTH Aachen University , Oxford University, SAP, Sensinode, Swedish Institute of Computer Science , ST Microelectronics, Zolertia и многих других. [3] Contiki приобрел популярность благодаря встроенному стеку TCP/IP и легковесному упреждающему планированию через событийно-управляемое ядро ​​[4], что является очень мотивирующей функцией для IoT. Название Contiki происходит от знаменитого плота Тура Хейердала «Кон-Тики» .

Contiki обеспечивает многозадачность и встроенный набор протоколов Интернета (стек TCP/IP), при этом требует всего около 10 килобайт оперативной памяти ( ОЗУ) и 30 килобайт постоянной памяти (ПЗУ). [1] Полная система, включая графический интерфейс пользователя , требует около 30 килобайт оперативной памяти. [5]

Недавно была создана новая ветка, известная как Contiki-NG: ОС для устройств Интернета вещей следующего поколения.

Аппаратное обеспечение

Contiki разработан для работы на типах аппаратных устройств, которые сильно ограничены в памяти , мощности , вычислительной мощности и пропускной способности связи . Типичная система Contiki имеет память порядка килобайт, бюджет мощности порядка милливатт, скорость обработки измеряется в мегагерцах, а пропускная способность связи порядка сотен килобит/секунду. Такие системы включают в себя множество типов встроенных систем и старые 8-битные компьютеры.

Нетворкинг

Contiki предоставляет три сетевых механизма: стек uIP TCP/IP, [6] который обеспечивает сетевое взаимодействие IPv4 , стек uIPv6, [7] который обеспечивает сетевое взаимодействие IPv6 , и стек Rime, который представляет собой набор пользовательских облегченных сетевых протоколов, разработанных для беспроводных сетей с низким энергопотреблением. Стек IPv6 был предоставлен Cisco и на момент выпуска был самым маленьким стеком IPv6, получившим сертификацию IPv6 Ready . [8] Стек IPv6 также содержит протокол маршрутизации Routing Protocol for Low power and Lossy Networks (RPL) для сетей IPv6 с низким энергопотреблением и потерями и уровень сжатия и адаптации заголовков 6LoWPAN для соединений IEEE 802.15.4 .

Rime — это альтернативный сетевой стек, используемый в случаях, когда накладные расходы стеков IPv4 или IPv6 являются непомерными. Стек Rime предоставляет набор примитивов связи для маломощных беспроводных систем. Примитивами по умолчанию являются одноадресная одноадресная передача, одноадресная широковещательная передача, многоадресная одноадресная передача, сетевая лавинная передача и сбор данных без адреса. Примитивы могут использоваться по отдельности или в сочетании для формирования более сложных протоколов и механизмов. [9]

Работа в режиме низкого энергопотребления

Многие системы Contiki имеют серьезные ограничения по мощности. Беспроводным датчикам на батарейном питании может потребоваться обеспечить годы автономной работы с небольшими средствами для подзарядки или замены батарей. Contiki предоставляет набор механизмов для снижения энергопотребления систем, на которых он работает. Механизм по умолчанию для достижения маломощной работы радиостанции называется ContikiMAC. [10] С ContikiMAC узлы могут работать в режиме маломощной работы и по-прежнему иметь возможность принимать и ретранслировать радиосообщения.

Моделирование

Система Contiki включает в себя симулятор датчиков под названием Cooja, который имитирует узлы Contiki. [11] Узлы принадлежат к одному из трех следующих классов: a) эмулированные узлы Cooja, b) код Contiki, скомпилированный и выполненный на хосте симуляции, или c) узлы Java, где поведение узла должно быть переопределено как класс Java. Одна симуляция Cooja может содержать смесь узлов датчиков из любого из трех классов. Эмулированные узлы также могут использоваться для включения не-Contiki узлов в имитируемую сеть.

В Contiki 2.6 возможна эмуляция платформ с микроконтроллерами TI MSP430 и Atmel AVR .

Модель программирования

Для эффективной работы в системах с небольшим объемом памяти модель программирования Contiki основана на протопотоках . [12] [13] Протопоток — это абстракция программирования с эффективным использованием памяти, которая разделяет возможности как многопоточности , так и программирования, управляемого событиями, для достижения низких накладных расходов памяти каждого протопотока. Ядро вызывает протопоток процесса в ответ на внутреннее или внешнее событие. Примерами внутренних событий являются срабатывающие таймеры или сообщения, отправляемые другими процессами. Примерами внешних событий являются срабатывающие датчики или входящие пакеты от соседа по радио.

Protothreads кооперативно планируются. Таким образом, процесс Contiki всегда должен явно возвращать управление ядру через регулярные интервалы. Процессы Contiki могут использовать специальную конструкцию protothread для блокировки ожидания событий, одновременно передавая управление ядру между вызовами каждого события.

Функции

Скриншот сервера VNC, работающего на порту Atmel AVR Contiki

Contiki поддерживает опциональную вытесняющую многопоточность для каждого процесса, межпроцессное взаимодействие с использованием передачи сообщений через события, а также опциональную подсистему графического пользовательского интерфейса (GUI) с прямой графической поддержкой локально подключенных терминалов или сетевого виртуального дисплея с помощью Virtual Network Computing (VNC) или через Telnet.

Полная установка Contiki включает в себя следующие функции:

Contiki поддерживается популярными библиотеками SSL/TLS , такими как wolfSSL , которая включает порт в своей версии 3.15.5. [14]

Порты

Контики на Commodore 64

Микроконтроллеры

Компьютеры

Игровые консоли

Смотрите также

Примечания

  1. ^ abcdefghi разработка на основе cc65

Ссылки

  1. ^ ab Contiki OS.
  2. ^ Contiki: внедрение IP в сенсорные сети
  3. ^ "Сообщество", Contiki OS.
  4. ^ Данкелс, Адам (2004), «Contiki – легкая и гибкая операционная система для крошечных сетевых датчиков», Труды 29-й ежегодной международной конференции IEEE по локальным компьютерным сетям. , стр. 455–462.
  5. ^ Открыто: малоизвестная ОС с открытым исходным кодом, которая правит Интернетом вещей
  6. ^ Данкелс, Адам (май 2003 г.), «Полный протокол TCP/IP для 8-битных архитектур», Труды первой международной конференции ACM/Usenix по мобильным системам, приложениям и услугам (MobiSys) , Сан-Франциско{{citation}}: CS1 maint: location missing publisher (link)
  7. ^ Дурви, Матильда; Абейе, Жюльен; Веттервальд, Патрик; О'Флинн, Колин; Леверетт, Блейк; Гноске, Эрик; Видалес, Майкл; Маллиган, Джефф; Цифтес, Николас; Финне, Никлас; Данкелс, Адам (ноябрь 2008 г.), «Подготовка сенсорных сетей к IPv6», Труды Шестой конференции ACM по сетевым встраиваемым сенсорным системам (SenSys) (стендовая сессия), Роли, Северная Каролина , США : ACM
  8. ^ Новости, Cisco, 2008.
  9. ^ Данкельс, Адам; Остерлинд, Фредрик; Хе, Чжитао (ноябрь 2007 г.), «Адаптивная архитектура связи для беспроводных сенсорных сетей», Труды Пятой конференции ACM по сетевым встраиваемым сенсорным системам (SenSys) , Сидней, Австралия{{citation}}: CS1 maint: location missing publisher (link).
  10. ^ Данкелс, Адам, Протокол циклического переключения радиосигналов ContikiMAC (PDF).
  11. ^ "Старт", Contiki OS.
  12. ^ Данкельс, Адам; Шмидт, Оливер; Фойгт, Тимо; Али, Муниб (ноябрь 2006 г.), «Протопотоки: упрощение событийно-управляемого программирования встраиваемых систем с ограниченной памятью», Труды Четвертой конференции ACM по встраиваемым сетевым сенсорным системам (SenSys) , Боулдер, Колорадо , США{{citation}}: CS1 maint: location missing publisher (link) Данкельс, А.; Шмидт, О.; Фойгт, Т.; Али, М. (2006). "Protothreads". Труды 4-й международной конференции по встраиваемым сетевым сенсорным системам - Sen Sys '06 . стр. 29. doi :10.1145/1182807.1182811. ISBN 1595933433. S2CID  983128.(PDF, слайды презентации).
  13. ^ "Прототред", Код.
  14. ^ "wolfSSL CONTIKI OS port - wolfSSL". 2018-12-18 . Получено 2019-01-09 .
  15. ^ "Операционная система Contiki / [Contiki-developers] Порт Contiki для процессора ARM LPC1768". 19 декабря 2020 г.
  16. ^ Stein, H, Запуск Contiki под Windows, Trix, архивировано из оригинала 2003-12-09.

Внешние ссылки