Contiki on väike, avatud lähtekoodiga tasuta operatsioonisüsteem. See on välja töötatud kasutamiseks 8-bitistes arvutites ja manussüsteemides. Sellel on graafiline kasutajaliides ja täielik installeerimine vajab umbes 30 kilobaiti RAM-i.
Nimi Contiki pärineb Thor Heyerdahli kuulsast Kon-Tiki parvest.
Põhilise tuumiku ja enamiku põhifunktsioonidest töötas välja Adam Dunkels Rootsi Arvutiteaduse Instituudi Networked Embedded Systems grupis.
Funktsioonid
- Väike mälunõudlus: tuumik ja põhilised teenused mahuvad väga piiratud ressursiga seadmetesse (tavaliselt kümned kilobaidid RAM‑i ja mõned sadad kilobaidid ROM/flash‑mälu).
- Sündmuspõhine arhitektuur ja protothreads: Contiki kasutab sündmuspõhist tuumikku ning pakub kerget "protothread" mehhanismi, mis võimaldab kirjutada järjestikust kontrollvoogu ilma täisväärtuslike lõimede (threads) suure mälukasuta.
- Võrgustandardid: sisaldab kergeid TCP/IP-pinu (uIP) ja traadita võrgule mõeldud Rime‑stakki ning toetab IPv6/6LoWPANi, mis teeb selle sobivaks IoT ja traadita sensorivõrkude rakendusteks.
- Energiahaldused: võimalused madalaks energiatarbimiseks ning ärkveloleku ja une režiimide haldus väikekõlblikel mikroprotsessoritel.
- Tööriistad ja simuleerimine: Contiki on tihedalt integreeritud võrguemulaatoriga Cooja, mis võimaldab simuleerida pärisriistvara ja võrke arenduse ja testimise ajal.
Arhitektuur ja tööpõhimõtted
Contiki tuumik on sündmuspõhine: protsessid reageerivad sündmustele ja ajastitele, mis aitab hoida mälukasutuse minimaalsena. Kui soovitakse lihtsamat, järjestikust programmeerimisstiili, pakub süsteem protothreads – kergesti kasutatavaid, virnastamata "lõime", mis ei nõua eraldi kõvakettaruumi igale lõimele. Võrgukomponendid on üles ehitatud modulaarsetena: uIP (kerge TCP/IP), Rime (local communication stack) ja toetused IPv6/6LoWPAN jaoks.
Tugi, platvormid ja tööriistad
- Tugev platvormivalik: Contiki on kohandatav mitmele arhitektuurile – populaarsemad mikrokontrollerid nagu Atmel AVR, TI MSP430, erinevad ARM‑tuumikuga seadmed jm (sõltub versioonist ja portidest).
- Simulaator Cooja: pakub võimalust käivitada ja testida Contiki rakendusi emuleeritud riistvaral ja võrkudes, mis on kasulik nii arendajatele kui teadlastele.
- Arenduse ökosüsteem: sisaldab kogu kettastandardseid tööriistu (kompilaatorid, flash‑tööriistad, debuggereid) ning näiteid protokollidest ja rakendustest (CoAP, RPL, UDP/TCP näited jpm).
Ajaloost ja arengust
Algselt arendatud Adam Dunkels'i poolt, on Contiki olnud laialdaselt kasutatud akadeemilises uurimistöös ja varajastes IoT/protokolli katsetustes. Hiljem on tekkinud ka järgmine arengusuund Contiki‑NG (Next Generation) – kaasaegsem haru, mis täiustab IPv6, turvalisuse ja kaasaegsete riistvarade toe. Contiki ja selle järglased on avaldatud vaba/avatud litsentsiga, mis võimaldab neid vabalt kohandada ja kasutada teaduslikes ning kommertsrakendustes.
Rakendused ja kasutusvaldkonnad
Contiki sobib eelkõige:
- traadita sensorivõrkude uuringutesse ja prototüüpimisse,
- madala energiatarbega IoT seadmetesse,
- õppe- ja teadustöödesse, kus on vaja taasluua ja katsetada võrguparadigmasid (nt RPL, 6LoWPAN),
- projektidesse, kus riistvaralised ressursid on väga piiratud, kuid vajalik on võrguühendus või lihtsad teenused.
Kokkuvõte
Contiki on kerge, ressursisäästlik ja paindlik operatsioonisüsteem väikestele manussüsteemidele ning traadita sensoriseadmetele. Selle tugevus on kombinatsioon väga madalast mälukasutusest, võrgutoest (sh IoT ja 6LoWPAN) ning arendajat toetavatest tööriistadest nagu Cooja. Tänu avatusele on Contiki leidnud laialdast kasutust nii akadeemilises maailmas kui praktilistes IoT‑lahendustes.

