====== Contiki SNMP auf dem AVR Zigbit Modul ====== Um Contiki SNMP auf dem Zigbit Modul verwenden zu können, sind einige Anpassungen nötig.\\ Natürlich müssen zuvor die Anpassungen in [[contiki:snmp_contiki_25_install|SNMP auf Contiki 2.5 Installation]] durchgeführt worden sein.\\ Weil die Konstanten des AES Algorithmus und die BER kodierten OIDs um Speicherplatz zu sparen vom Daten Speicher in den Programmspeicher verschoben werden sollen, kommen innerhalb des Quellcodes //AVR-GCC// spezifische Funktionen zum Einsatz. Diese können natürlich nur verwendet werden, wenn auch ein AVR Microcontroller verwendet wird. Aus diesem Grund ist im Quellcode immer dann, wenn AVR spezifische Programm Speicher Funktionen verwendet werden, die Präprozessor Direktive #if CONTIKI_TARGET_AVR_RAVEN zu finden. Da aber bei der Kompilierung für das Zigibt Modul diese Bedingung nicht wahr ist, wird anstatt dem Programmspeicher der Datenspeicher verwendet. Dadurch erhält man eine Auslastung des Datenspeichers von 99,3%. Dies ist selbstverständlich nicht wünschenswert. Deshalb müssen die Präprozessor Direktiven angepasst werden. Dazu genügt es, die oben genannte Direktive durch #if CONTIKI_TARGET_AVR_RAVEN || CONTIKI_TARGET_AVR_ZIGBIT zu ersetzen. Dies ist in den Dateien //utils.c//, //aes_cfb.c// und //mib.c// notwendig.\\ Außerdem werden in der Datei //snmpd.c// weitere Präprozessor Direktiven verwendet. Hier muss #if DEBUG &&- CONTIKI_TARGET_AVR_RAVEN durch #if DEBUG && (CONTIKI_TARGET_AVR_RAVEN || CONTIKI_TARGET_AVR_ZIGBIT) ersetzt werden. Um Zeile 197 innerhalb des //snmpd process// für das Zigbit Modul kompilierbar zu machen, muss #ifndef CONTIKI_TARGET_AVR_RAVEN durch #if !(CONTIKI_TARGET_AVR_RAVEN || CONTIKI_TARGET_AVR_ZIGBIT) ersetzt werden, da //ifndef// den Ausdruck nicht auswertet und somit bei mehreren Bedingungen nicht verwendet werden kann muss die //if !// Anweisung verwendet werden.\\ Durch diese Änderungen kann die Nutzung des Datenspeichers auf 44% reduziert werden.\\ Um die serielle Schnittstelle zu Nutzen, muss diese unter Contiki noch eingerichtet werden. Dazu muss die Datei //contiki-avr-zigbit-main.c// im Contiki Verzeichnis //\platform\avr-zigbit\// editiert werden. In Zeile 98 kann die serielle Schnittstelle konfiguriert werden. Die hier eingetragenen Parameter müssen danach beim verwendeten Terminalprogramm natürlich übereinstimmen. Empfohlen werden laut der Contiki Developers Mailing List die folgenden Einstellungen. rs232_init(RS232_PORT_1, USART_BAUD_57600, USART_PARITY_NONE | USART_STOP_BITS_1 | USART_DATA_BITS_8); Um im Anschluß den neuen Quellcode für das AVR Zigbit Modul zu kompilieren, muss das Makefile angepasst werden, dieser Vorgang ist in [[contiki:mib_contiki25_snmp|Erstellung einer eigenen MIB für den Contiki 2.5 SNMP Agent]] im Abschnitt **Kompilierung mit neuer MIB** allgemein beschrieben. Damit das AVR Zigbit Modul genutzt werden kann muss das Kompilierungsziel TARGET=avr-raven durch TARGET=avr-zigbit ersetzt werden.