====== Contiki auf dem cc2538 Board ======
===== Toolchain einrichten =====
==== 1. Benutzung von Instant Contiki ====
Instant Contiki herunterladen und entpacken auf Laufwerk D:
=== Virtual Box starten: ===
- Neue VM erstellen (Neu)
- Linux 32-bit
- Festplatte (vdmk-Datei) von Instant Contiki laden
=== Instant Contiki starten: ===
- Benutzerpassword: user
- VirtualBox => Geräte: Gasterweiterung einlegen + Ausführen bestätigen (Password: user)
- Linux neu starten
- VirtualBox => Geräte: Zwischenablage: bidirektional
- Ubuntu => Text Entry Settings...
- Schwedisch entfernen
- Deutsch hinzufügen: German (eliminate dead keys)
==== 2. Verwendung einer eigenen Linux-Installation ====
=== Installation der ARM Toolchain (bis Ubuntu 16.04): ===
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
# sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded
sudo apt-get install gcc-multilib #(32-bit Libraries)
=== Installation der ARM Toolchain (ab Ubuntu 18.04): ===
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
#sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi
#? erforderlich ?# sudo apt-get install gcc-multilib #(32-bit Libraries)
===== Beispiele herunterladen: =====
- cd ~/contiki-3.0/examples
- git clone git://github.com/tscheffl/Contiki-Examples.git
==== USB-Einrichten: ====
- brltty (Braile-tty) entfernen:
- sudo apt-get remove brltty
- VM mit Board verbinden:
- VirtualBox => Rechtsklick auf Stecker-Symbol an unterer Bildschirmkante (TI Board auswählen)
- Board unter Linux bekannt machen:
- lsusb
- sudo modprobe ftdi_sio
sudo chmod 666 /sys/bus/usb-serial/drivers/ftdi_sio/new_id
sudo echo 0403 a6d1 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
Sollte es bei dem Befehl ''%%sudo modprobe ftdi_sio%%'' zu einer Fehlermeldung kommen, muss eventuell noch der **ftdi_sio** Treiber nachinstalliert werden: sudo apt-get install linux-image-extra-virtual
Der Treiber sollte in /lib/modules/xx_your_linux_version-generic/kernel/drivers/usb/serial/ftdi_sio.ko zu finden sein. Mit **''lsmod''** kann überprüft werden, ob das Modul geladen ist.
==== Installation der Flash-Software: ====
- cd ~
sudo apt-get install python-serial
git clone https://github.com/JelmerT/cc2538-bsl.git
==== Installation und Konfiguration von Minicom (Terminalprogramm): ====
- Install: sudo apt-get install minicom
- Config: sudo minicom -s
- __Serial-Port-Setup__ => (A) /dev/ttyUSB1
- __Save setup as dfl__ => Speichern der Einstellungen
- Anpassung der Bildschirmausgabe
- ''printf()'' erzeugt nur NewLine ohne Carridge Return => ''Ctrl-A z'' danach ''U'' eingeben!
==== Board flashen ====
- Verbindung überprüfen:
- sudo ~/cc2538-bsl/cc2538-bsl.py -b 115200 -p /dev/ttyUSB1
- Bootloader auf dem cc2538dk-Board starten:
- __Select-Button__ gefolgt von __EM-Reset__
- Datei flashen:
- sudo ~/cc2538-bsl/cc2538-bsl.py -b 115200 -p /dev/ttyUSB1 -e -w -v hello_world.bin
===== Beispiele zur Netzwerkprogrammierung =====
==== 1. UDP-client direkt unter Linux, mittels ''minimal-net'' ====
cd $(CONTIKI)/examples/Contiki-Examples/UDP-client
make TARGET=minimal-net
./udp-client.minimal-net
Contiki startet und legt ein neues Interface ''tap0'' an.\\
Dieses Interface muss mit einer globalen IPv6-Adresse konfiguriert werden:
sudo ifconfig tap0 add aaaa::1/64
Anschließend können mittels ''netcat''
die eingehenden UDP-Nachrichten angezeigt werden:
nc -l -u -6 -p 30000
----
==== 2. UDP-client mittels ''6LoWPAN'' ====
Die Einbindung des cc2538dk-Boards in ein 6LoWPAN setzt einen Border-Router voraus.\\
Dieser kann auf einem zweiten cc2538dk-Board installiert werden. Die Software liegt unter
''examples/ipv6/rpl-border-router''. \\
Dazu müssen zwei kleine Änderungen in den Dateien
''border-router.c'' und ''project-conf.h'' vorgenommen werden.\\
Die komplette Anleitung befindet sich
[[https://github.com/contiki-os/contiki/tree/master/platform/cc2538dk#build-a-6lowpan-testbed|hier]].
Weiterhin muss einmalig das Tool für die serielle 6LoWPAN-Anbindung übersetzt werden.\\
Dieses befindet sich unter ''$(CONTIKI)/tools'':
cd $(CONTIKI)/tools
make tunslip6
:!: Bei der Verwendung von zwei cc2538dk-Boards an einem Linux-Rechner ist die genaue Einhaltung der
Abläufe wichtig, da sich sonst die Bezeichnungen der seriellen ''/dev/ttyUSB'' Schnittstellen ändert!
- Zuerst das Board einstecken, auf dem die Beispiel-Software laufen soll: (belegt ''ttyUSB0/1'')
- Boad mit der passenden Software flashen:cd ~contiki-3.0/examples/[your-example-directory]
make TARGET=cc2538dk
sudo ~/cc2538-bsl/cc2538-bsl.py -b 115200 -p /dev/ttyUSB1 -e -w -v your-example.bin
- Minicom mit ''sudo'' auf ''ttyUSB1'' starten, evtl. Board per Reset-Knopf neu starten.
- Danach das Board mit dem Border-Router einstecken (belegt ''ttyUSB2/3'')
- IPv6 Verbindung zwischen Border-Router und Linux-PC starten:
sudo $(CONTIKI)/tools/tunslip6 -s /dev/ttyUSB3 fd00::1/64
- Im Terminal wird die IPv6-Adresse des Border-Routers angezeigt.\\ Damit sollte das Netzwerk konfiguriert und alle Boards im Netz erreichbar sein.
- Die IP-Adressen der verbundenen Boards können über die Web-Seite des Border-Routers angezeigt werden:\\ ''http://[]''
----
==== Backup-Info ====
* Auf fabrikneuen cc2538dk-Boards ist ein Beispielprogramm von TI vorinstalliert und der vorhandene Bootloader deaktiviert.
* Bootloader aktivieren: Uniflash => ''cc2538SF53'' Chip auswählen, Flash-Speicher löschen
* Contiki benutzt für cc2538dk das 802.15.4 **Band 25**, für avr **Band 26**. Die Einstellung kann in ''contiki/platform/contiki.conf'' oder auf dem RZRAVEN USB Stick (Jackdaw) über das Menü geändert werden.
* Minicom: Fehlendes carriage return (CR): ''Ctrl+A Z U''
* Alte Methode für ftdi-Kernelmodul modprobe ftdi_sio vendor=0x403 product=0xa6d1
* Listed aktive Kernelmodule: lsmod
* UDP Pakete an Echo-Server senden: netcat -u fe80::ff:fe00:10%tap0 9999
==== Links ====
* http://processors.wiki.ti.com/index.php/Contiki_setting_up_sw
* https://github.com/contiki-ng/contiki-ng/wiki/Platform-cc2538dk
* https://github.com/tscheffl/Contiki-Examples
* https://github.com/tscheffl/Contiki-Examples/tree/master/TCP-client
* [[https://wiki.ipv6lab.beuth-hochschule.de/contiki/rest-workshop|https://wiki.ipv6lab.beuth-hochschule.de/contiki/rest-workshop (not working with Contiki 3.0)]]
=== cc2531 ===
The cc2338dk development board comes with a cc2531 USB-Stick. Pre-installed on the stick is a 802.15.4 sniffer application, which can be easily used on Windows together with Wireshark.
However, it can also be flashed with other software.
**How to flash the CC2531:** https://github.com/zigbeer/zigbee-shepherd/issues/3