Benutzer-Werkzeuge

Webseiten-Werkzeuge


iot:riot-os

RIOT OS

Vorbereitung des Boards

Auf fabrikneuen Boards ist ein Beispielsprogramm vorinstalliert und dadurch der Bootloader deaktiviert. Mittels UniFlash kann der Flash-Speicher des Boards gelöscht werden. Dadurch wird der Bootloader automatisch aktiviert.
RIOT installiert eine Bootloader-Backdoor nach erfolgreichem Aufspielen von RIOT kann der Bootloader durch Drücken der Taste SELECT gefolgt von RESET aktiviert werden.

Installation von RIOT auf dem CC2538DK-Board von Texas Instruments

Die folgende Anleitung basiert auf Ubuntu 16.04 LTS (64 Bit)
(funktioniert leider nicht mit früheren LTS Versionen, da der C-Compiler zu alt ist: Fehler in c11-Code)

sudo apt-get git

Installation der ARM Toolchain:

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 Python-Tools:

Ubuntu:

sudo apt-get install python-serial
sudo apt-get remove --auto-remove bratty

Mac:

sudo port install py-serial

Download RIOT

git clone git://github.com/RIOT-OS/RIOT.git # assumption: git is pre-installed
git checkout <LATEST_RELEASE>
cd RIOT
./dist/tools/tapsetup/tapsetup              # create virtual Ethernet
                                            # interfaces to connect multiple
                                            # RIOT instances
cd examples/default/
make all
make term                                   # stellt eine Terminalverbindung zu RIOT her

Compilieren

Beim Compilieren muss das Board mit angegeben werden:

make all BOARD=cc2538dk

Flashing:

Das Board wurde bei mir nicht automatisch erkannt: http://e2e.ti.com/support/wireless_connectivity/zigbee_6lowpan_802-15-4_mac/f/158/p/443766/1593119

:!: Für eine permanente Lösung: https://unix.stackexchange.com/a/165845

* From Kernel 3.12 run the command below:

modprobe ftdi_sio
echo 0403 a6d1 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
# modprobe ftdi_sio vendor=0x403 product=0xa6d1
make flash BOARD=cc2538dk
# liefert Fehler, möglicherweise ist der Port nicht korrekt

Port muss angegeben werden, sonst flasht es nicht [ttyUSB1] sind möglich… (ERROR: Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)')
Sollte der Fehler dennoch auftreten, dann ist das Board nicht im Bootloader-Modus (s.o.)

# Flashen
sudo make flash BOARD=cc2538dk PORT=/dev/ttyUSB1
# Interaktiver Zugriff auf die Shell (funktioniert nicht mit Minicom)
sudo make term BOARD=cc2538dk PORT=/dev/ttyUSB1

6LoWPAN & Contiki

Es wurde versucht ein RIOT-Boad mit einem Contiki-BorderRouter zu verbinden.

 cd examples/gnrc_networking/

Contiki auf cc2538dk nutzt einen anderen RF-Channel (25) und eine andere PANid (0xabcd). Die Default-Werte für RIOT werden in dieser Datei geführt. Das Makefile setzt den Channel allerdings immer auf 26 (ändern!): https://riot-os.org/api/sys_2include_2net_2ieee802154_8h.html

:!: Auffälligkeiten/Bemerkungen:

  • RIOT sendet nur einmal eine einzige DODAG Solicitation. Wechselt man den Kanal auf dem Board wird nicht erneut eine Solicitation gesendet. (rpl-Kommando auf dem Board ausprobieren!)
  • RIOT schickt ständig eine Router Solicitation, Contiki antwortet darauf nicht.
  • Ping zwischen RIOT & Contiki-Board funktioniert, zwischen RIOT und LINUX TUN0-Interface nicht. (Wenn von RIOT zu Linux gepingt wird ist ein Request/Reply auf der Luftschnittstelle zu sehen, RIOT antwortet nicht
  • :!: Es sieht so aus, als ob der RIOT Border-Router kein RPL aktiviert hat. Es wird mit normalen RouterSolicitations/Advertisements gearbeitet. In der Shell ist kein RPL zu sehen!
  • Wie schaltet man Packet-Dumps ein? https://api.riot-os.org/group__net__gnrc__pktdump.html
iot/riot-os.txt · Zuletzt geändert: 2019/01/17 07:06 von admin