Contiki es un sistema operativo para sistemas en red con limitaciones de memoria que se centra en dispositivos inalámbricos de Internet de las cosas de bajo consumo . Los usos existentes de Contiki incluyen sistemas para alumbrado público, monitoreo de sonido para ciudades inteligentes, monitoreo de radiación y alarmas. [1] Es un software de código abierto publicado bajo una licencia BSD .
Desarrollador | Adam Dunkels |
---|---|
Estado de trabajo | Actual |
Modelo fuente | Fuente abierta |
Versión inicial | 10 de marzo de 2003 |
Último lanzamiento | 3.0 / 26 de agosto de 2015 |
Licencia | BSD |
Página web oficial | www |
Contiki fue creado por Adam Dunkels en 2002 [2] y ha sido desarrollado por un equipo mundial de desarrolladores de Texas Instruments, Atmel, Cisco, ENEA , ETH Zurich , Redwire, RWTH Aachen University , Oxford University, SAP, Sensinode, Swedish Institute of Computer Science , ST Microelectronics, Zolertia y muchos otros. [3] Contiki ganó popularidad debido a su pila TCP / IP incorporada y a la programación preventiva liviana sobre el kernel controlado por eventos [4], que es una característica muy motivadora para IoT. El nombre Contiki proviene de la famosa balsa Kon-Tiki de Thor Heyerdahl .
Contiki proporciona multitarea y un conjunto de protocolos de Internet integrado (pila TCP / IP), pero solo necesita alrededor de 10 kilobytes de memoria de acceso aleatorio (RAM) y 30 kilobytes de memoria de solo lectura (ROM). [1] Un sistema completo, incluida una interfaz gráfica de usuario , necesita aproximadamente 30 kilobytes de RAM. [5]
Recientemente se ha creado una nueva rama, conocida como Contiki-NG : el sistema operativo para dispositivos IoT de próxima generación.
Hardware
Contiki está diseñado para ejecutarse en tipos de dispositivos de hardware que están severamente restringidos en memoria , potencia , potencia de procesamiento y ancho de banda de comunicación . Un sistema Contiki típico tiene memoria del orden de kilobytes, un presupuesto de energía del orden de milivatios, velocidad de procesamiento medida en megahercios y ancho de banda de comunicación del orden de cientos de kilobits / segundo. Dichos sistemas incluyen muchos tipos de sistemas integrados y computadoras antiguas de 8 bits .
Redes
Contiki proporciona tres mecanismos de red: la pila uIP TCP / IP, [6] que proporciona redes IPv4 , la pila uIPv6, [7] que proporciona redes IPv6 , y la pila Rime, que es un conjunto de protocolos de red ligeros personalizados diseñados para bajos -Potencia de redes inalámbricas. La pila de IPv6 fue aportada por Cisco y, cuando se lanzó, fue la pila de IPv6 más pequeña que recibió la certificación IPv6 Ready . [8] La pila IPv6 también contiene el protocolo de enrutamiento para redes de baja potencia y pérdidas (RPL) para redes IPv6 con pérdidas de baja potencia y la capa de adaptación y compresión de encabezado 6LoWPAN para enlaces IEEE 802.15.4 .
Rime es una pila de red alternativa que se utiliza cuando la sobrecarga de las pilas IPv4 o IPv6 es prohibitiva. La pila Rime proporciona un conjunto de primitivas de comunicación para sistemas inalámbricos de bajo consumo. Las primitivas predeterminadas son unidifusión de un solo salto, difusión de un solo salto, unidifusión de varios saltos, inundación de red y recopilación de datos sin direcciones. Las primitivas pueden usarse solas o combinadas para formar protocolos y mecanismos más complejos. [9]
Operación de bajo consumo
Muchos sistemas Contiki tienen graves limitaciones de energía. Es posible que los sensores inalámbricos que funcionan con baterías necesiten proporcionar años de funcionamiento sin supervisión y con pocos medios para recargar o reemplazar las baterías. Contiki proporciona un conjunto de mecanismos para reducir el consumo de energía de los sistemas en los que se ejecuta. El mecanismo predeterminado para lograr un funcionamiento de baja potencia de la radio se llama ContikiMAC. [10] Con ContikiMAC, los nodos se pueden ejecutar en modo de bajo consumo y aún pueden recibir y retransmitir mensajes de radio.
Simulación
El sistema Contiki incluye un simulador de sensor llamado Cooja, que simula los nodos Contiki. [11] Los nodos pertenecen a una de las tres clases siguientes: a) nodos Cooja emulados, b) código Contiki compilado y ejecutado en el host de simulación, o c) nodos Java, donde el comportamiento del nodo debe reimplementarse como un Java. clase. Una simulación de Cooja puede contener una combinación de nodos de sensores de cualquiera de las tres clases. Los nodos emulados también se pueden utilizar para incluir nodos que no sean de Contiki en una red simulada.
En Contiki 2.6, se pueden emular plataformas con los microcontroladores TI MSP430 y Atmel AVR .
Modelo de programación
Para ejecutarse eficientemente en sistemas de memoria pequeña, el modelo de programación Contiki se basa en protothreads . [12] [13] Un protothread es una abstracción de programación de memoria eficiente que comparte características tanto de multiproceso como de programación dirigida por eventos para lograr una sobrecarga de memoria baja de cada protothread. El kernel invoca el protothread de un proceso en respuesta a un evento interno o externo. Ejemplos de eventos internos son los temporizadores que se activan o los mensajes que se envían desde otros procesos. Ejemplos de eventos externos son los sensores que activan o los paquetes entrantes de un vecino de radio.
Protothreads se programan de forma cooperativa. Por lo tanto, un proceso Contiki siempre debe devolver explícitamente el control al núcleo a intervalos regulares. Los procesos de Contiki pueden usar una construcción protothread especial para bloquear la espera de eventos mientras ceden el control al kernel entre cada invocación de eventos.
Características
Contiki admite la comunicación entre procesos y multiproceso preventivo opcional por proceso utilizando mensajes que pasan a través de eventos, así como un subsistema de interfaz gráfica de usuario (GUI) opcional con soporte gráfico directo para terminales conectados localmente o pantalla virtual en red con Virtual Network Computing (VNC). ) o por Telnet.
Una instalación completa de Contiki incluye las siguientes características:
- Núcleo multitarea
- Multiproceso preventivo opcional por aplicación
- Protothreads
- Redes de Internet Protocol Suite (TCP / IP) , incluido IPv6
- Sistema de ventanas y GUI
- Visualización remota en red mediante Computación en red virtual
- Un navegador web (se dice que es el más pequeño del mundo)
- Servidor web personal
- Cliente telnet simple
- Salvapantallas
Contiki es compatible con bibliotecas SSL / TLS populares como wolfSSL , que incluye un puerto en su versión 3.15.5. [14]
Puertos
El sistema operativo Contiki está adaptado a los siguientes sistemas:
Microcontroladores
- Atmel - BRAZO , AVR
- Semiconductores NXP - LPC1768, [15] LPC2103, MC13224
- Microchip - dsPIC, PIC32 (PIC32MX795F512L)
- Texas Instruments - MSP430 , CC2430, CC2538 , CC2630, CC2650 , CC2538 : RE-Mote [ enlace muerto permanente ] , Firefly , Zoul (incluye CC2538 y CC1200 en un formato de módulo único)
- STMicroelectronics - STM32 W
Ordenadores
- Apple - Serie II [a]
- Atari : 8 bits , [a] ST , cartera
- Casio - visor de bolsillo
- Comodoro - PET , [a] VIC-20 , [a] 64 , [a] 128 [a]
- Sistemas informáticos mandarina - Oric [a]
- NEC - PC-6001
- Sharp - Mago
- Intel , AMD , VIA , muchos otros: sistemas tipo Unix basados en x86 , sobre GTK + o más directamente usando un sistema X Window [16]
Consolas de juegos
- Atari - Jaguar
- Parque de juegos - GP32
- Nintendo : Game Boy , Game Boy Advance , Entertainment System (NES) [a]
- NEC - SuperSistema de entretenimiento TurboGrafx-16 (motor de PC) [a]
Ver también
- BeRTOS
- ERIKA Enterprise
- ALBOROTO
- SymbOS
- TinyOS
- Ruedas (sistema operativo)
- Comparación de sistemas operativos en tiempo real
Notas
- ^ a b c d e f g h i desarrollo basado en cc65
Referencias
- ^ a b Contiki OS.
- ^ Contiki: Llevando IP a las redes de sensores
- ^ "Comunidad", Contiki OS.
- ^ Dunkels, Adam (2004), "Contiki - un sistema operativo liviano y flexible para pequeños sensores en red", Actas de la 29ª Conferencia Internacional Anual IEEE sobre Redes de Computadoras Locales. , págs. 455–462.
- ^ A la intemperie: el sistema operativo de código abierto poco conocido que gobierna el Internet de las cosas
- ^ Dunkels, Adam (mayo de 2003), "TCP / IP completo para arquitecturas de 8 bits", Actas de la primera conferencia internacional ACM / Usenix sobre sistemas, aplicaciones y servicios móviles (MobiSys) , San Francisco
- ^ Durvy, Mathilde; Abeillé, Julien; Wetterwald, Patrick; O'Flynn, Colin; Leverett, Blake; Gnoske, Eric; Vidales, Michael; Mulligan, Geoff; Tsiftes, Nicolas; Finne, Niclas; Dunkels, Adam (noviembre de 2008), "Preparar las redes de sensores para IPv6", Actas de la Sexta Conferencia de ACM sobre sistemas de sensores integrados en red (SenSys) (sesión de pósteres), Raleigh, NC , EE . UU .: ACM
- ^ Sala de prensa , Cisco, 2008.
- ^ Dunkels, Adam; Österlind, Fredrik; Él, Zhitao (noviembre de 2007), "Una arquitectura de comunicación adaptativa para redes de sensores inalámbricos", Actas de la Quinta Conferencia de ACM sobre sistemas de sensores integrados en red (SenSys) , Sydney, AU.
- ^ Dunkels, Adam, Protocolo de ciclo de trabajo de radio ContikiMAC ( PDF ).
- ^ "Inicio", Contiki OS.
- ^ Dunkels, Adam; Schmidt, Oliver; Voigt, Thiemo; Ali, Muneeb (noviembre de 2006), "Protothreads: Simplificación de la programación impulsada por eventos de sistemas integrados con restricciones de memoria", Actas de la Cuarta Conferencia de ACM sobre sistemas de sensores integrados en red (SenSys) , Boulder, CO , EE.Dunkels, A .; Schmidt, O .; Voigt, T .; Ali, M. (2006). "Protothreads". Actas de la 4ª conferencia internacional sobre sistemas de sensores integrados en red - Sen Sys '06 . pag. 29. doi : 10.1145 / 1182807.1182811 . ISBN 1595933433.( PDF , diapositivas de presentación ).
- ^ "Protothread", Código , Google.
- ^ "puerto OS wolfSSL CONTIKI - wolfSSL" . 2018-12-18 . Consultado el 9 de enero de 2019 .
- ^ http://sourceforge.net/p/contiki/mailman/message/31753844/
- ^ Stein, H, Running Contiki bajo Windows , Trix, archivado desde el original el 2003-12-09.
- C64Web: un sitio web ejecutado desde un Commodore 64 construido en 1982 sin modificaciones
- "Herramientas Contiki", Sicarios , AT : C02: sitio web no oficial para puertos históricos de la versión 1.x.
- "Minimal Contiki OS for LPC2103", Manishshakya , NP, archivado desde el original el 4 de junio de 2014.
- Generador de imágenes de disco y archivo de configuración Contiki 2.5 , sistemas retro A2.
- Contiki portar el PIC32 (Seed-Eye Junta) , TI : SSSUP, Archivado desde el original en 03/18/2013 , recuperada 2013-01-31.
enlaces externos
- Página web oficial