====== Contiki als Linux Prozess ====== ===== Verwendung einer projektspezifischen Grundkonfiguration in Contiki ===== Die Reihenfolge mit der die Definitionen bei der Compilierung eingebunden werden ist die folgende: - Definitionen in ''contiki-x.x/core/contiki-default-conf.h'' \\ - Definitionen in ''contiki-x.x/platform/xy/contiki-conf.h'' \\ - Definitionen in ''contiki-x.x/examples/your_working_folder/project-conf.h'' Es ist meistens sinnvoll projektspezifische Änderungen über eine projektspezifische Konfigurationsdatei hinzuzufügen, statt Änderungen direkt in ''core'' oder ''platform'' vorzunehmen. Ein Contiki Projekt kann dazu die optionale Konfigurationsdatei ''project-conf.h'' verwenden. Die Benutzung dieser Datei ist allerdings nicht voreingestellt sonder muss noch aktiviert werden. Zur Aktivierung sind die folgenden Schritte notwendig: ==== Schritt 1: Füge die project-conf.h Datei zum Makefile hinzu ==== Dazu muss die folgende Zeile zum ''Makefile'' des Projekts hinzugefügt werden: DEFINES+=PROJECT_CONF_H=\"project-conf.h\" Weiterhin ist es sinnvoll im ''Makefile'' einen Default-Wert für das Target anzugeben:\\ # Project specific config file - start DEFINES+=PROJECT_CONF_H=\"project-conf.h\" # Project specific config file - end all: udp-server udp-client # Project specific compile target - start ifndef TARGET TARGET = minimal-net CFLAGS += -DPROJECT_TARGET="minimal-net" endif # Project specific compile target - end CONTIKI = ../.. CONTIKI_WITH_IPV6 = 1 include $(CONTIKI)/Makefile.include ==== Schritt 2: Integriere die Datei project-conf.h in die Plattform ==== Die Datei ''contiki/platform/minimal-net/contiki-conf.h'' muss angepasst werden.\\ In den meisten Plattformen werden projektspezifische Einstellungen gar nicht, oder erst am Ende der Plattformkonfiguration geladen. Diese müssen aber bereits am Anfang bekannt sein, damit die Abhängigkeiten korrekt aufgelöst werden. ... #ifndef CONTIKI_CONF_H #define CONTIKI_CONF_H /*---------------------------------------------------------------------------*/ /* Include project specific config */ /* PROJECT_CONF_H might be defined in the project Makefile */ #ifdef PROJECT_CONF_H #include PROJECT_CONF_H #endif /* PROJECT_CONF_H */ /*---------------------------------------------------------------------------*/ ==== Schritt 3: Anpassen der Datei project-conf.h ==== ''contiki-x.x/examples/your_working_folder/project-conf.h'' /* * My project-conf.h file * for TARGET=minimal-net */ #ifndef PROJECT_CONF_H_ #define PROJECT_CONF_H_ #ifdef UIP_CONF_IPV6_RPL #undef UIP_CONF_IPV6_RPL #define UIP_CONF_IPV6_RPL 0 #endif /*UIP_CONF_IPV6_RPL*/ #ifdef RPL_BORDER_ROUTER #undef RPL_BORDER_ROUTER #define RPL_BORDER_ROUTER 0 #endif /*RPL_BORDER_ROUTER*/ UIP_CONF_BUFFER_SIZE 1300 #endif /* PROJECT_CONF_H_ */ ==== Schritt 4: Recompile ==== make clean make ===== Erkunden und Dokumentieren der Grundfähigkeiten des Systems ===== Da Contiki Programme meistens nicht interaktiv erkundet werden können, ist es ratsam wichtige Einstellungen direkt anzeigen zu lassen um Vergleiche zwischen verschiedenen Versionen von Binärprogrammen zu ermöglichen. Dazu wird der folgende Code an einer passenden Stelle im Programm eingefügt: PRINTF("Build --- %s\n",__DATE__); /*Compile-Datum*/ PRINTF(" --- %s\n",__TIME__); /*Compile-Zeit*/ PRINTF(" --- %s\n",__FILE__); /*Compile-Datei*/ printf(" --- " CONTIKI_VERSION_STRING "\n"); printf("\nUIP_APPDATA: %u\nUIP_CONF_BUFFER: %u\n", UIP_APPDATA_SIZE, UIP_CONF_BUFFER_SIZE); #if PROJECT_TARGET != minimal-net printf(" --- " BOARD_STRING "\n"); printf(" Net: "); printf("%s\n", NETSTACK_NETWORK.name); printf(" MAC: "); printf("%s\n", NETSTACK_MAC.name); printf(" RDC: "); printf("%s", NETSTACK_RDC.name); #endif /* PROJECT_TARGET */