Inhaltsverzeichnis
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
danachU
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
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
aufttyUSB1
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://[<IPv6-address-inside-the-brackets>]
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
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