Vai al contenuto

Contiki

Da Wikipedia, l'enciclopedia libera.
Disambiguazione – Se stai cercando l'impresa di viaggi neozelandese, vedi Contiki Tours.
Contiki
sistema operativo
Immagine del server VNC con in esecuzione il porting di Contiki per i sistemi AVR
SviluppatoreAdam Dunkels
Release corrente2.7 (15 novembre 2013)
Tipo di kernelevent-driven monolitico multitasking
Piattaforme supportatemultipiattaforma
Tipo licenzaSoftware libero
LicenzaLicenze BSD
Stadio di sviluppoattivo
Sito webwww.contiki-os.org/

Contiki è un sistema operativo multitasking leggero, open source e altamente portatile. È stato sviluppato per essere utilizzato su un vasto numero di sistemi che vanno dai computer a 8-bit fino ai sistemi embedded su microcontroller. Il nome Contiki deriva dalla zattera Kon-Tiki con la quale Thor Heyerdahl fece una spedizione per dimostrare che i polinesiani erano in grado di ritornare dal Sud America al loro arcipelago.

Benché sia in grado di gestire il multitasking, Contiki ha bisogno solo di pochi kilobyte di codice e di poche centinaia di byte di RAM. Il sistema completo, comprensivo di GUI, utilizza circa 30 kilobyte di RAM.

Il kernel di base e la maggior parte delle funzioni del nucleo sono state sviluppate da Adam Dunkels al "Networked Embedded Systems group" dell'Istituto svedese di Informatica.

Contiki è scritto in linguaggio C, ed è particolarmente adatto per sistemi embedded con poche risorse hardware. Una configurazione tipica di Contiki è di 2 kilobyte di RAM e 40 kilobytes di ROM. È stato progettato appositamente per la Internet of Things per estendere la Internet globale agli oggetti.

Contiki è costituito da un kernel ad eventi, sul quale le applicazioni vengono caricate e scaricate dinamicamente a runtime. Lo scheduling è di tipo non-preemptive, dunque la CPU viene liberata dal processo solo quando termina o si blocca in attesa di un evento. I processi di Contiki sono protothread che consentono uno stile di programmazione a thread alquanto lineare.

Per il networking è stata implementata la pila protocollare uIP che è uno stack TCP/IP appositamente progettato per sistemi ad 8 e 16 bit. Dall'ottobre 2008, uIP è compatibile con il protocollo IPv6. È implementato anche il protocollo 6LoWPAN (IPv6 over Low-Power Wireless Personal Area Networks) che permette di utilizzare il protocollo IPv6 in reti WPAN, grazie alla compressione dell'header IPv6. Inoltre è implementato RPL, un protocollo di routing per reti a bassa potenza.

Programmazione

[modifica | modifica wikitesto]

Per sviluppare un'applicazione Contiki, prima di tutto bisogna definire un processo. La struttura base di una applicazione è la seguente:

#include "contiki.h"  //deve essere sempre incluso

PROCESS(Example, "Example process");  // Definizione del processo
AUTOSTART_PROCESSES(&Example); // Avvio al boot

PROCESS_THREAD(Example, ev, data)
{
  PROCESS_BEGIN(); // Definisce l'inizio del processo
  while(1){
    PROCESS_WAIT_EVENT ();
      // applicazione
  }
  PROCESS_END();
}

Il Makefile ha la seguente struttura:

CONTIKI = ../..    // dipende dalla posizione del progetto
all: app-name
include $(CONTIKI)/Makefile.include

Contiki è in grado di girare su una vasta varietà di piattaforme, dai microcontroller come il TI MSP430 e il Atmel AVR fino ai vecchi home computer.
Il sistema è stato portato (o è in fase di porting) per i seguenti sistemi:

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica