Contiki

Contiki è un sistema operativo multitasking leggero, open source e altamente portatile. È stato sviluppato per essere utilizzato su un vasto numero di sistemi

Contiki
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.

Progetto

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

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

Piattaforme

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

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.