ZigBeeRouter Jan Gampe, Sebastian Flothow 1
Übersicht Ziel Ausgangslage / Hardware Router ZigBee Status Ausblick Fragen dürfen jederzeit gestellt werden 2
Ziel DSL-Router um ZigBee-Hardware erweitern Programmierschnittstelle für ZigBee bereitstellen Router soll als ZigBee-Coordinator (also Full Function Device) agieren können 3
ARM-Target steht als Ersatz bereit, wird aber höchstwahrscheinlich nicht benötigt werden Router gewählt wegen OpenWrt-Untertützung, großem Flash (8 MiB), seriellem Port 4 MIPSel-CPU (Broadcom), 32 MiB RAM, USB 2.0, WLAN, Kernel 2.4 (mit 2.6 kein WLAN und evtl. Segfaults) v1!, v2 leider noch nicht vollständig durch OpenWrt unterstützt Quelltexte für Asus-Firmware verfügbar, jedoch für OpenWrt entschieden wegen Modularität
Router Asus ist nett UARTs beschriftet *und* 3,3 V abgreifbar 5 Serielle Ports haben TTL-Pegel
ZigBee-Board Oberseite: MSP430, Taster, LEDs, Lichtsensor 6
ZigBee-Board Unterseite: CC2480, Antenne 7 CC2480 hat integrierte Sensoren für Spannung, Temperatur sowie einen Zufallsgenerator und 4 Timer (außerdem 2 AD-Wandlereingänge, 4 GPIOs, aber bei diesem Board nicht zugänglich)
ZigBee-Board Battery Board macht u.a. seriellen Port des MSP430 zugänglich 8
ZigBee-Board USB-Dongle ermöglicht flashen und debuggen per Spy-bi-wire (zweidrahtiger JTAG-Abkömmling); mehr dazu später 9
ZigBee-Board MSP CC UART 430 SPI 2480 Wesentliche Funktionseinheiten des Boards 10 MSP430 frei programmierbar CC2480 könnte auch UART, aber nicht auf unserem Board => (wahrscheinliches) Ziel: MSP transparent machen, um später auch mit CC2480 direkt arbeiten zu können UART mit TTL-Pegeln -> passt zu Router Stromversorgung durch Router möglich
Gesamthardware WL- 500gP UART MSP 430 SPI CC 2480 ZigBee-Board wird an Router angeschlossen - hardwaremäßig sogar gar nicht schwer. 11
Serielle Kommunikation Asynchronous Request Synchronous Request Synchronous Response - AREQ kann durch beide Seiten jederzeit gesendet werden, bleibt unbeantwortet - SREQ wird nur durch Host gesendet, CC2480 antwortet mit SRSP - manche SREQ werden zusätzlich verzögert mit einem AREQ beantwortet - bei SPI außerdem POLL 12
APIs SYS Config Simple API Application Framework ZigBee Device Objects - SYS: Hilfsfunktionen (Reset, Ping, GPIO-Zugriff etc.) - Config: Setzen von Nodetyp, Netz-ID, Retransmit- und Poll-Intervallen etc. - Simple API: Vereinfachte ZigBee-API - AF / ZDO: Komplette ZigBee-API 13
SYS_VERSION Kurzes Beispiel: Synchroner Aufruf SYS_VERSION 14
Status Router Läuft stabil unter OpenWrt Serielle Ports benutzbar können C-Programme für Router kompilieren und darauf ausführen Toolchain unter Linux vorhanden WLAN / Routing noch nicht getestet... 15 Zumindest der UART1, 0 ist mit Konsole belegt
Status ZigBee-Board können C-Programme für MSP430 kompilieren und darauf ausführen inklusive Zugriff auf Kontrollregister und IO-Pins Es gibt mehr als ein Dutzend MSP430 Compiler. Alle bis auf GCC sind kommerziell und in Demos eingeschränkt. 16 Drei Alternativen hier genauer betrachtet
IAR Embedded Workbench IAR Compiler Freeware, max. Codegröße 4 K Usability suboptimal kein Flasher enthalten nur Windows Flasher separat erhältlich 17 So ziemlich alle Beispielapplikationen für den MSP430 sind IAR-Projekte. Desweiteren erinnert es an schaurige Zeiten in Informationselektronik
Code Composer Essentials CCE Compiler Freeware, max. Codegröße 16 K Eclipse-basiert kann flashen und debuggen nur Windows 18 CCE ist ein Eclipse-Bastard aus dem Hause TI. Dadurch sehr intuitiv in der Handhabung. Bislang unser Favorit, die Codebegrenzung sollte uns auch nicht stören. Könnte theoretisch auch mit anderen Compilern zusammenarbeiten. CCE ist zwar Eclipse, aber nicht linuxtauglich, da CCE auf Windowstools setzt und keine Alternative bietet
GNU it yourself GNU Compiler (msp-gcc) Open Source, Codegröße unbegrenzt flashen mit gdbproxy / msp-jtag Windows / Linux, siehe auch nächste Folie 19 Der GCC hat in früheren Versionen den Ruf gehabt, ineffizienten Code zu erzeugen, was aber seit den späten 3.x Versionen nicht mehr der Fall sein sollte.
Linux-Toolchain MSP-GCC funktioniert auch mit Eclipse Flashen macht Probleme TI: nur Windows supported Linux enthält Treiber von Brimson Labs FET = Flash Emulation Tool. Was wir im Demokit haben, nennt sich nur z430 USB Dongle. Ist eigentlich dasselbe, aber TI weigert sich, da Klarheit in ihre Terminologie zu bringen. Die MSP-GCC wird besonders unter Windows und weniger unter Linux eingesetzt. 20 Brimson-Treiber dabei seit 2.6.11. Die Linux FET-Treiber machen aber unter größeren Distributionen wie Fedora, Ubuntu und sogar Gentoo Probleme, die nur unter viel Handarbeit, wenn überhaupt zu lösen sind.
Status Integration Hardware grundsätzlich fertig Software-Arbeit noch am Anfang - Gehäuseeinbau fehlt noch, aber genug Platz da 21
Nächste Schritte Programmierung des MSP430 als transparente Brücke UART SPI Implementierung des seriellen Protokolls des CC2480 in einer C-Bibliothek Entwurf einer Beispielanwendung 22
Herausforderungen Protokoll des CC2480 ist asynchron Entwicklung robusten Codes für den MSP430 - Asynchronität: CC2480 kann jederzeit AREQ senden - muss sauber mit gleichzeitigen Ereignissen auf beiden Kanälen umgehen - Umsetzung vollduplex halbduplex 23
Potential C-Lib für Linux-Targets allgemein verwendbar OpenWrt-Package Java-Anbindung - Java: JNI; evtl. OSGi-Fähigkeiten - Verknüpfung von ZigBee mit nahen Applikationen (Home Automated Living, Ambient Assisted Living) sowie fernen Diensten (Notrufe/Statusabfragen per Telefon/Internet) ist sehr gut denkbar. 24
ZigBeeRouter Jan Gampe, Sebastian Flothow Ende, es folgt das Bonusmaterial 25
26
27