Inhaltsverzeichnis
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
Links
- Tracing the packet-processing (über debug-print…?): https://github.com/RIOT-OS/RIOT/issues/10186