====== RIOT OS ======
* http://doc.riot-os.org/index.html#the-quickest-start
=== Vorbereitung des Boards ===
Auf fabrikneuen Boards ist ein Beispielsprogramm vorinstalliert und dadurch der Bootloader deaktiviert.
Mittels [[http://processors.wiki.ti.com/index.php/Category:CCS_UniFlash|UniFlash]] kann der Flash-Speicher des Boards gelöscht werden. Dadurch wird der Bootloader automatisch aktiviert.\\
RIOT installiert eine [[http://processors.wiki.ti.com/index.php/CC2538_Bootloader_Backdoor|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)
* https://github.com/RIOT-OS/RIOT/wiki/Board:-CC2538DK
* [[http://www.ti.com/tool/cc2538dk|CC2538 Development Kit (TI)]]
* http://processors.wiki.ti.com/index.php/Category:CCS_UniFlash
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
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
===== Links =====
* https://riot-os.org/api/group__net__ieee802154__conf.html#ga7b61c8fd89eb278ddfcc3556fcbf8812
* https://github.com/RIOT-OS/RIOT/tree/master/examples/gnrc_networking
* https://materials.dagstuhl.de/files/16/16353/16353.OliverHahm.Slides1.pdf
* https://www.codeproject.com/Articles/840499/RIOT-Tutorial
* https://morschi.com/2017/04/05/setup-a-riot-os-6lowpan-border-router/
* Tracing the packet-processing (über debug-print...?): https://github.com/RIOT-OS/RIOT/issues/10186