Översikt

Contiki är ett litet operativsystem med öppen källkod avsett för minnes- och processorbegränsade inbyggda system. Det designades för att fungera på enkla 8-bitars och senare 16/32-bitars mikrocontrollers och används ofta i sensornät, trådlösa infrastrukturkomponenter och andra IoT-enheter. Systemet erbjuder ett grundläggande grafiskt gränssnitt, nätverksstöd och en modulär kärna som kan anpassas för olika hårdvarukonfigurationer.

Egenskaper och komponenter

Contiki kännetecknas av ett litet minnesavtryck och en flexibelt uppbyggd nätverksstack. Huvuddrag inkluderar:

  • Låg minnesanvändning: En full installation kan köras med mycket begränsat RAM (ett komplett system kan arbeta med tiotusentals byte, ofta angivet runt 30 KB beroende på konfiguration).
  • Nätverksstöd: Inbyggda TCP/IP- och IPv6-implementationer (inklusive stöd för 6LoWPAN och protokoll för trådlösa sensor­nät).
  • Protothreads och händelsestyrning: Ett eventdrivet kärnparadigm kompletteras av protothreads — en lättviktig mekanism som ger enklare, linjärt skrivna trådliknande rutiner utan full stack per tråd.
  • Modulär arkitektur: Applikationer och nätverksprotokoll kan köras som fristående moduler som laddas och styrs av kärnan.
  • Verktyg och exempel: Contiki innehåller enkla webbtjänster, demonstrationer för sensornät och ett litet grafiskt toolkit (för plattformar som stöder skärm).

Historia och utveckling

Contiki togs fram i slutet av 1990-talet och början av 2000-talet med betydande bidrag från Adam Dunkels vid Swedish Institute of Computer Science (SICS). Namnet hämtades inspirerande från Thor Heyerdahls Kon-Tiki-expedition. Projektet har spridits och vidareutvecklats i en öppen källkodsmodell; källkod, dokumentation och projektinformation finns publicerat av projektgemenskapen och på projektets webbplats. För vidareutveckling och modernisering finns även efterföljare och grenar av projektet som syftar till att möta nya krav inom IoT och säkerhet.

Användning och betydelse

Contiki används i utbildning, forskningsprototyper och kommersiella inbyggda produkter där resurssnålhet och nätverksförmåga är centrala. Exempel på tillämpningar är trådlösa sensorsystem, hemautomationsnoder, mätinstrument och experimentella IoT-lösningar. Den lätta nätverksstacken och stödet för lågströmsradio gör Contiki särskilt lämpat för batteridrivna enheter i stora nätverk.

Skillnader, begränsningar och varianter

Jämfört med andra system för små enheter, såsom TinyOS, fokuserar Contiki på att erbjuda en mer traditionell C-baserad programmeringsmodell med stöd för både eventdriven logik och enklare trådstruktur genom protothreads. Contiki är inte ett hårt realtidsoperativsystem och lämpar sig inte alltid för applikationer som kräver strikt deterministiska tidskrav. Projektgemenskapen har också utvecklat modernare varianter och uppdaterade versioner för att hantera nya nätverksstandarder och säkerhetskrav.

För mer information om projektets källkod och dokumentation se projektets webbplats: Contiki-projektet. Information om kärnens ursprung och utvecklingsgrupp finns publicerad via relevanta arkiv och forskningspublikationer: kärnutveckling och bakgrund.