Contiki on pieni, avoimen lähdekoodin ilmainen käyttöjärjestelmä, joka on suunniteltu sulautettuihin laitteisiin ja 8-bittisille alustoille. Se tarjoaa kevyen tapahtumapohjaisen ytimen, tuen "protothread"-tyyppisille kevythiloille sekä peruspalvelut kuten ajastimet, tiedostojärjestelmän ja verkko-pinon. Contiki sisältää myös yksinkertaisen graafisen käyttöliittymän (CTK), ja täysi asennus voi toimia jo noin 30 kilotavun RAM-muistilla riippuen käytetyistä ominaisuuksista.
Nimi Contiki tulee Thor Heyerdahlin kuuluisasta Kon-Tiki-lautasta — nimivalinta viittaa järjestelmän kevyyteen ja yksinkertaisuuteen, kuten lautan suunnitteluun.
Perusytimen ja monet ydintoiminnoista kehitti Adam Dunkels Ruotsin tietotekniikan instituutin (SICS) Networked Embedded Systems -ryhmässä. Dunkels on myös kehittänyt Contikin kevyet protothreadit ja uIP-verkkopinon alkuperäiset versiot.
Keskeiset ominaisuudet
- Tapahtumapohjainen ydin, jolla on pieni muistijalanjälki.
- Protothreadit: kevyt, pinottomien säikeiden kaltainen rakenne, joka helpottaa samanaikaisten tehtävien kirjoittamista ilman täysimittaista monisäikeisyyttä.
- Verkkoprotokollat: tuki TCP/IP:lle (uIP), Rime-protokollapino pienimuotoisia verkkoja varten sekä tuesta IPv6/6LoWPAN-tyyppisille teknologioille nykyaikaisemmissa versioissa ja haarukoissa.
- Energiansäästöominaisuudet: radiotaajuuden hallinta, radio duty-cycling -mekanismeja ja keinoja vähentää virrankulutusta langattomissa anturiverkoissa.
- Liitettävyys ja laajennettavuus: sovellusrajapinnat sensorien, aktuaattorien ja ulkoisten moduulien hallintaan.
- Simulointi: Cooja-simulaattori (osa Contiki-ympäristöä) mahdollistaa verkkojen ja laitteiden simuloinnin ja emuloinnin kehityksen ja testauksen aikana.
Verkko ja protokollat
Contiki sisältää useita verkkokomponentteja, joilla toteutetaan kevyitä verkkoratkaisuja sulautetuille laitteille. Alkuperäiseen Contikiin kuuluvat uIP (pieni TCP/IP-pinon implementaatio) ja Rime (modulaarinen protokollapino, joka on suunniteltu sensori- ja sulautettuihin verkkoihin). Myöhemmissä kehitysversioissa ja Contiki-kaarissa on lisätty tuki IPv6:lle, 6LoWPANille, CoAP:lle ja muille IoT-protokollille.
Alustat ja kehitystyökalut
Contikiä on portattu monille sulautetuille alustoille, kuten AVR-, TI MSP430- ja ARM-pohjaisille mikro-ohjaimille. Kehitystä voidaan tehdä myös paikallisella koneella käyttämällä "native"-portausta tai testata verkkoja Cooja-simulaattorissa, joka pystyy emuloimaan useita eri laitearkkitehtuureja ja radio-olosuhteita. Contiki-ympäristöön kuuluu työkaluja käännökseen, virheenkorjaukseen ja verkonprofilointiin.
Käyttökohteet ja vaikutus
Contikiä on käytetty laajasti tutkimuksessa, opetuksessa ja kaupallisissa prototyypeissä, erityisesti anturiverkoissa (WSN), langattomissa IoT-laitteissa ja ympäristön monitoroinnissa. Sen pieni muistivaatimus ja modulaarinen rakenne tekevät siitä suositun valinnan laitteille, joilla on rajalliset resurssit.
Kehitys ja nykysuunta
Alkuperäisen Contikin lisäksi on olemassa aktiivisia haarukoita ja jatkokehitysprojekteja, kuten Contiki-NG (Next Generation), jotka tuovat parempaa tukea modernille IPv6-pohjaiselle IoT-ekosysteemille, tietoturvalisäyksille ja laajemmalle laitevalikoimalle. Yhteisö ja tutkimusryhmät ylläpitävät koodia, dokumentaatiota ja esimerkkisovelluksia, mikä pitää Contikin relevanttina vaihtoehtona kevyille sulautetuille alustoille.
Jos haluat, voin lisätä esimerkkejä Contiki-sovelluksista, kertoa tarkemmin Cooja-simulaattorin käytöstä tai luetella yleisimmin tuetut laitealustat.

