====== 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