Die Reihenfolge mit der die Definitionen bei der Compilierung eingebunden werden ist die folgende:
contiki-x.x/core/contiki-default-conf.h
contiki-x.x/platform/xy/contiki-conf.h
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:
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
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 */ /*---------------------------------------------------------------------------*/
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_ */
make clean make <TARGET=xyz>
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 */