Inhaltsverzeichnis

Contiki auf dem cc2538 Board

Toolchain einrichten

1. Benutzung von Instant Contiki

Instant Contiki herunterladen und entpacken auf Laufwerk D:

Virtual Box starten:

  1. Neue VM erstellen (Neu)
  2. Linux 32-bit
  3. Festplatte (vdmk-Datei) von Instant Contiki laden

Instant Contiki starten:

  1. Benutzerpassword: user
  2. VirtualBox ⇒ Geräte: Gasterweiterung einlegen + Ausführen bestätigen (Password: user)
    1. Linux neu starten
  3. VirtualBox ⇒ Geräte: Zwischenablage: bidirektional
  1. Ubuntu ⇒ Text Entry Settings…
    1. Schwedisch entfernen
    2. 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:

  1. cd ~/contiki-3.0/examples
  2. git clone git://github.com/tscheffl/Contiki-Examples.git

USB-Einrichten:

  1. brltty (Braile-tty) entfernen:
    1. sudo apt-get remove brltty
  2. VM mit Board verbinden:
    1. VirtualBox ⇒ Rechtsklick auf Stecker-Symbol an unterer Bildschirmkante (TI Board auswählen)
  3. Board unter Linux bekannt machen:
    1. lsusb
    2. 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:

  1. cd ~
    sudo apt-get install python-serial
    git clone https://github.com/JelmerT/cc2538-bsl.git

Installation und Konfiguration von Minicom (Terminalprogramm):

  1. Install:
    sudo apt-get install minicom
  2. Config:
    sudo minicom -s
    1. Serial-Port-Setup ⇒ (A) /dev/ttyUSB1
    2. Save setup as dfl ⇒ Speichern der Einstellungen
  3. Anpassung der Bildschirmausgabe
    1. printf() erzeugt nur NewLine ohne Carridge Return ⇒ Ctrl-A z danach U eingeben!

Board flashen

  1. Verbindung überprüfen:
    1. sudo ~/cc2538-bsl/cc2538-bsl.py -b 115200 -p /dev/ttyUSB1
  1. Bootloader auf dem cc2538dk-Board starten:
    1. Select-Button gefolgt von EM-Reset
  1. Datei flashen:
    1. 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!

  1. Zuerst das Board einstecken, auf dem die Beispiel-Software laufen soll: (belegt ttyUSB0/1)
  2. 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
  3. Minicom mit sudo auf ttyUSB1 starten, evtl. Board per Reset-Knopf neu starten.
  1. Danach das Board mit dem Border-Router einstecken (belegt ttyUSB2/3)
  2. IPv6 Verbindung zwischen Border-Router und Linux-PC starten:
    sudo $(CONTIKI)/tools/tunslip6 -s /dev/ttyUSB3 fd00::1/64
  3. Im Terminal wird die IPv6-Adresse des Border-Routers angezeigt.
    Damit sollte das Netzwerk konfiguriert und alle Boards im Netz erreichbar sein.
  4. 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

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