Contiki je majhen odprtokodni brezplačni operacijski sistem. Razvit je bil za uporabo v 8-bitnih računalnikih in vgrajenih sistemih. Ima grafični uporabniški vmesnik in za popolno namestitev potrebuje približno 30 kilobajtov pomnilnika RAM.
Ime Contiki izhaja iz slavnega splava Kon-Tiki Thora Heyerdahla.
Osnovno jedro in večino osrednjih funkcij je razvil Adam Dunkels v skupini za omrežne vgrajene sisteme na Švedskem inštitutu za računalništvo.
Ključne lastnosti
- Majhna poraba virov: jedro in osnovne storitve lahko delujejo v redkih desetkih kilobajtov RAM-a, zaradi česar je Contiki primeren za zelo omejene naprave.
- Dogodkovno usmerjeno jedro z lahkimi nitmi (protothreads): Contiki uporablja protothreads — lahek mehanizem za sočasnost, ki omogoča preprosto pisanje neblokirajoče kode brez polnih niti in velikega steka.
- Omrežne zmožnosti: vsebuje lahke TCP/IP rešitve (uIP), lasten komunikacijski sloj Rime in podporo za IPv6/6LoWPAN v novejših različicah.
- Podpora za uporabniški vmesnik: vsebuje preprost grafični nabor orodij (CTK) za naprave z majhnimi zasloni in kontrolniki.
- Dinamično nalaganje programov: omogoča nalaganje in zamenjavo aplikacij med izvajanjem na nekaterih platformah, kar poenostavi razvoj in posodabljanje.
Omrežje in protokoli
Adam Dunkels je v okviru Contikija razvil tudi uIP, minimalistični TCP/IP sklad, zasnovan za delovanje na zelo omejenih napravah. Contiki ponuja tudi Rime — lahek komunikacijski sloj, ki olajša razvoj protokolov za senzorna omrežja. V novejših izvedbah in v projektu Contiki-NG so vključene sodobne tehnologije za Internet stvari (IoT) kot so IPv6, 6LoWPAN, RPL in protokoli aplikacijskega sloja, na primer CoAP.
Primeri uporabe in platforme
Contiki se pogosto uporablja v raziskavah senzornih omrežij, IoT prototipiranju in v izobraževanju. Deluje na različnih arhitekturah in platformah, med njimi so 8-bitni mikrokontrolerji (npr. AVR), TI MSP430, ARM Cortex-M in brezžične radijske platforme (npr. IEEE 802.15.4 čipi). Zaradi majhnih zahtev je primeren za naprave z omejenimi viri, kot so baterijsko napajana senzorika in vgrajeni kontrolerji.
Orodja za razvoj in simulacija
Pri razvoju za Contiki se pogosto uporablja simulator Cooja, ki omogoča simulacijo celih omrežij naprava na osebnem računalniku in testiranje omrežnih protokolov, aplikacij in energetskih profilov brez potrebe po veliki fizični strojni opremi. Contiki vključuje tudi zbirko knjižnic, orodij za debugging in podporo za različne razvojne plošče.
Contiki-NG in sodobni razvoj
Contiki-NG (Next Generation) je sodobnejše nadaljevanje originalnega Contikija, osredotočeno na IoT in IPv6. Ponudi izboljšano podporo za sodobne protokole (6LoWPAN, RPL, CoAP), varnostne izboljšave in aktivno skupnost razvijalcev. Kljub temu ostaja filozofija enaka: minimalna poraba virov in primernost za vgrajene in senzorske naprave.
Licenca in skupnost
Contiki je izdan kot programska oprema z odprto kodo (pod BSD-podobno licenco), kar omogoča prost dostop do izvorne kode, prilagajanje in uporabo v raziskavah in komercialnih projektih. Zanj skrbijo tako univerzitetne skupine kot tudi skupnosti razvijalcev in podjetij, ki ga uporabljajo v IoT rešitvah.
Zaključek
Contiki je primeren za projekte, kjer so omejitve strojne opreme kritične, hkrati pa je potrebna zmogljiva omrežna podpora in možnost hitrega prototipiranja. Zaradi svoje fleksibilnosti, nizke porabe virov in razširljivosti ostaja priljubljena platforma pri raziskovalcih in razvijalcih IoT naprav.

