>> Artikelansicht

05.03.2015 /He [Druckansicht]

BeagleBone Black als 14-Kanal 100MHz Logikanalysator

Standalone 100MHz 14-Kanal Logikanalysator mit Netzwerkfähigkeit

BeagleBoneBlack-BeagleLogic Logikanalysator mit WiFi und USB-Powerbank Ein Logikanalysator mit 1Hz bis zu 100MHz Abtastrate(Samplerate) und einem Speicher von bis zu 320 MB(getestet) und 14-Kanal, der über einen Netzwerkanschluss verfügt, ist wirklich eine feine Sache. Besonders wenn die komplette Software auf Open-Source basiert und durch die Verwendung der Sigrok-Decoder Library [http://sigrok.org/wiki/Protocol_decoders] derzeit über 30 Protokolle dekodiert werden können(I2C,SPI,UART,IR etc.).Jetzt kommt die berechtigte Frage, von welcher Hardware-Plattform sprechen wir hier? Die Rede ist vom BeagleBone Black[http://beagleboard.org/black] In diesem Artikel wird bewusst die ältere Version verwendet(Rev A5B/2GB), die sich hauptsächlich in der Größe des auf dem Board befindlichen Flashspeichers(eMMC) 2GB gegenüber Version(Rev C) mit 4GB unterscheidet.Der für das Projekt aber auch nur zu ca. 75% belegt wird, somit bleibt genug Platz für weitere Anwendungen, die die direkte Datenverarbeitung auf dem Board unterstützen können.Der geringe System-Speicherbedarf liegt an dem Betrieb als reine Konsolenversion(Headless), bei der die HDMI Pins für den Analysator genutzt werden und eine grafische Oberfläche nicht benötigt wird, da der Logikanalysator über USB oder das Netzwerk LAN/WLAN kommuniziert.

Beim Betrieb mittels Akku/Batterie über WLAN hat man ein sehr robustes und unabhängiges System, was bei den meisten Logikanalysatoren dieser Klasse nicht gegeben ist, da diese meist über USB kommunizieren und in bestimmten Fällen für Potentialtrennung mit einem USB-Isolator gesorgt werden muss. USB-Isolatoren für USB 2.0 (480Mbps High Speed) sind leider nicht günstig.
Doch ein Nachteil sei hier auch genannt, die Eingänge des BeagleBone Black sind nicht 5V Tolerant und somit muss man durch eine kleine Zusatzschaltung eine Pagelanpassung machen, wenn man auch 5V Logik anschliessen möchte(was meist der Fall ist). Dies kann durch Verwendung eines 74LVCH16T245 [http://www.ti.com/product/SN74LVCH16T245] 16-bit Puffers geschehen oder man verwendet das hierfür vorgesehene "BeagleLogic Cape".
Unter der hier folgenden Adresse findet man einen Schaltplan und weitere Informationen
[https://github.com/abhishek-kakkar/BeagleLogic/wiki/The-BeagleLogic-Cape]

Hinweis: Die Version A4 des BeagleBone Black mit einem AM3352 ARM Cortex-A8 kann nicht verwendet werden, da keine PRU* vorhanden ist.(*Programmable Real-time Unit Sub System)

Installation der Software

BeagleLogic APP

Hier wird die komplette Instsallation der Software beschrieben, inklusive Kernel und Betriebssystem.Somit ist die Installation in 3 Hauptgruppen unterteilt.Die Reihenfolge ist genau so einzuhalten, um ein mehrfaches Booten des Systems zu vermieden.
1) Betriebssystem
2) Logikanalysator Software
3) Kernel und Module

Einleitung

Die gesamte Installation der Logikanalysator-Software findet auf dem BeagleBone Black statt, das hat den Vorteil, dass man nur eine Entwicklungsumgebung benötigt(kein Crosscompiling).
Der Entwickler von BeagleLogic selbst beschreibt den Weg des Crosscompilings. Wem das mehr liegt, kann dieser Anleitung folgen.
[https://github.com/abhishek-kakkar/BeagleLogic/wiki/sigrok-Cross-compilation-instructions-for-the-BeagleBone]

Vorbereitung und Installation

Grundlagen

Wer bisher keine Erfahrung mit dem BeagleBone Black hat, sollte diese Einführung lesen(alle Betriebssysteme)
[http://beagleboard.org/static/beaglebone/latest/README.htm]
Software(nicht Linux): Win32 Disk Imager
[http://sourceforge.net/projects/win32diskimager/]
Anleitung(nicht Linux): Win32 Disk Imager
[http://elinux.org/Beagleboard:Win32_Disk_Imager]

Debian(7.8) auf micro-SD Karte(min. 2GB) kopieren

Der erste Schritt finden noch auf einem Linux-Rechner statt, wer ein anderes Betriebssystem verwendet, kann diesen Schritt überspringen und die passende Methode für sein Betriebssystem verwenden, danach geht es bei (1.0) weiter.

Ein geeignetes Debian-Image(7.8) findet man unter dieser Adresse:
[http://elinux.org/Beagleboard:BeagleBoneBlack_Debian]
BBB (All Revs) eMMC Flashers

Hier wird die Version vom 2015-02-15 verwendet, eine neuere Version sollte auch funktionieren.
  1. wget https://rcn-ee.net/rootfs/bb.org/testing/2015-02-15/console/bone-debian-7.8-console-armhf-2015-02-15-2gb.img.xz
  2. unxz bone-debian-7.8-console-armhf-2015-02-15-2gb.img.xz
  3. wget http://beagleboard.org/static/beaglebone/latest/Drivers/Linux/FTDI/mkudevrule.sh
  4. sudo sh ./mkudevrule.sh

Nun die micro-SD Karte über einen Kartenleser auf dem Linux-Rechner einbinden. Die micro-SD Karte darf nicht gemountet sein. Auf dem Linux-Rechner für diese Anleitung ist die micro-SD Karte unter /dev/sdc zu erreichen.

  • Achtung! Vergewissern Sie sich unbedingt, dass Sie das richtige Laufwerk der micro-SD Karte angeben, da im folgenden Schritt die gesamte micro-SD Karte überschrieben wird. Ein falsch angegebenes Laufwerk wäre somit fatal.
Auf korrekte Angabe des Laufwerks /dev/sdX achten!
  1. sudo dd if=./bone-debian-7.8-console-armhf-2015-02-15-2gb.img of=/dev/sd(Laufwerkbuchstabe)


(1.0) Debian von micro-SD Karte auf dem BeagleBone Black installieren

Die micro-SD Karte wird nun im Beagle-Bone Black eingesetzt. Zur Sicherheit sollte der BeagleBone Black über ein 5V Netzteil mit Strom versorgt werden. Nun drückt man den kleinen Taster direkt über der micro-SD Karte und schliesst die Stromversorgung an und wartet ein bisschen, danach lässt man den Taster wieder los.Wenn alles geklappt hat, beginnen nun die 4-LEDs(neben dem LAN-Anschluss) ein Lauflicht-Programm abzuspielen, bis das Betriebssystem auf dem eMCC-Flash-Speicher installiert ist.Danach sollten alle 4-LEDs dauerleuchten, nun kann man die Stromversorgung trennen und die micro-SD Karte entfernen.Über ein USB-Kabel wird nun die Verbindung zum Rechner hergestellt, es empfieht sich auch noch einen Router an den LAN-Anschluss anzuschliessen, dass der BeagleBone Black Zugriff auf das Interner hat. Unmittelbar danach schliesst man auch die Stromversorgung wieder an.

(1.1) Betriebssystem aktuallisieren

Der BeagleBone Black ist standardmäßig unter 192.168.7.2 per ssh zu erreichen.Die folgende Installation geht davon aus, dass man als superuser (root) eingeloggt ist, das Standardpasswort für root ist root.

  • Die folgende Installation wird per Superuser : root mit dem Passwort: root durchgeführt.
    Sollte man den Standarduser: debian mit dem Passwort: temppwd verwenden, muss bei Befehlen die Superuserrechte benötigen der Befehl sudo vorangestellt werden.
Verbindung per ssh mit dem BeagleBone Black herstellen Superuser: root Passwort: root
  1. ssh -p22 root@192.168.7.2

Ein Netzwerkzugang mit Internetzugriff ist für die weitere Installation notwendig.Man kann entweder einen USB-WLAN-Adapter verwenden oder den LAN-Anschluss des BeagleBone Black mit einem einen Router verbinden.Bei der Verwendung eines USB-WLAN-Adapter (als geeignet haben sich Adapter mit Realtek RTL8188 Chip herausgestellt)
muss man noch die Zusgangsdaten in der Datei /etc/network/interfaces eintragen.

Bei Verwendung eines USB-WLAN-Adapter, werden noch die Zugangsdaten eingetragen.
  1. nano /etc/network/interfaces
  2. auto wlan0
  3. iface wlan0 inet dhcp
  4. wpa-ssid "MY_ESSID"
  5. wpa-psk "MY_WPA"
Netzwerk neu starten und aktuelle Uhrzeit und Datum einstellen(Beispiel)
  1. /etc/init.d/networking restart
  2. date --set="Wed Mar 2 02:17:38 CET 2015"
System aktuallisieren und notwendige Pakete einspielen.
  1. #System-Aktuallisierung
  2. apt-get update
  3. apt-get upgrade
  4. #Zeit und Datum über Netzwerk holen
  5. apt-get install ntp
  6. #Compiler und Tools installieren
  7. apt-get install build-essential
  8. apt-get install glib2.0-dev
  9. apt-get install automake
  10. apt-get install autogen
  11. apt-get install pkg-config
  12. apt-get install libtool
  13. apt-get install subversion
  14. apt-get install flex
  15. apt-get install bison -y --force-yes
  16. #für Sigrok Libraries
  17. apt-get install libssl-dev
  18. apt-get install autoconf-archive
  19. apt-get install libzip-dev
  20. apt-get install libusb-1.0-0-dev
  21. apt-get install libudev-dev
  22. apt-get install check
  23. apt-get install libftdi1
  24. apt-get install python3
  25. apt-get install python3-dev
  26. apt-get install liblz-dev
  27. apt-get install libbz2-dev
  28. #firmware compiler
  29. apt-get install am335x-pru-package
  30. apt-get install ti-pru-cgt-installer
  31. #nodejs installieren(kann auch von Quellcode aus übersetzt werden, dauer ~2 Stunden)
  32. apt-get install npm

(2.0) BeagleLogic-Software herunterladen und installieren

Nun kann man die BeagleLogic-Software herunterladen.

  1. git clone https://github.com/abhishek-kakkar/BeagleLogic.git
  2. cd ./BeagleLogic
  3. git clone git://sigrok.org/libserialport
  4. git clone git://sigrok.org/libsigrok
  5. git clone git://sigrok.org/libsigrokdecode
  6. git clone git://sigrok.org/sigrok-cli

Die Software kann nun übersetzt und installiert werden.

  1. #Firmware compilieren und installieren
  2. cd ./beaglelogic-firmware
  3. export PRU_C_DIR="/usr/share/ti/cgt-pru/include;/usr/share/ti/cgt-pru/lib"
  4. make
  5. cp beaglelogic-pru0 beaglelogic-pru1 /lib/firmware/
  6. cd ..
  7. #device tree overlay compilieren
  8. cd ./beaglelogic-kernel-driver
  9. #device tree compiler (dtc) installieren
  10. wget -c https://raw.githubusercontent.com/RobertCNelson/tools/master/pkgs/dtc.sh
  11. chmod +x ./dtc.sh
  12. ./dtc.sh
  13. dtc -O dtb -o BB-BEAGLELOGIC-00A0.dtbo -b 0 -@ BB-BEAGLELOGIC-00A0.dts
  14. cp ./BB-BEAGLELOGIC-00A0.dtbo /lib/firmware/
  15. cd ..
  16. #libserialport compilieren und installieren
  17. cd ./libserialport
  18. ./autogen.sh
  19. ./configure
  20. make
  21. make install
  22. cd ..
  23. #libsigrok compilieren und installieren
  24. cd ./libsigrok
  25. ./autogen.sh
  26. ./configure --disable-glibtest
  27. make
  28. make install
  29. cd ..
  30. #Info: -> benötigt g++ >=4.7 (kann ignoriert werden)
  31. #
  32. #Warning: AX_CXX_COMPILE_STDCXX_11 macro not found.
  33. #--- You won't be able to build the language bindings!
  34. #--- More info: http://sigrok.org/wiki/Building#FAQ
  35. #
  36. #libsigrokdecode compilieren und installieren
  37. cd ./libsigrokdecode
  38. ./autogen.sh
  39. ./configure --disable-glibtest
  40. make
  41. make install
  42. cd ..
  43. #sigrok-cli compilieren und installieren
  44. cd ./sigrok-cli
  45. ./autogen.sh
  46. ./configure --disable-glibtest
  47. cd ..
  48. #beaglelogic-server compilieren und installieren
  49. cd ./beaglelogic-server
  50. npm install --unsafe-perm

(3.0) Kernel installieren

Nun wird der korrekte Kernel gewählt, der das Kermelmodul "beaglelogic" enthält.Man könnte den Kernel auch vom Kernel-Quellcode(3.8.13) aus übersetzen, was jedoch sehr lange dauern würde. Hier empfiehlt sich doch mittels Crosscompiler den Kernel zu übersetzen oder einen passenden vorübersetzten Kernel zu installieren, was hier gewählt wurde.

Kernel mit Kernel-Update-Script installieren
  1. cd /opt/scripts/tools
  2. #scripts aktualisieren
  3. git pull
  4. #Kernel und Module installieren
  5. ./update_kernel.sh --kernel v3.8.13-bone70
  6. #Fehlermeldung (kann ignoriert werden)
  7. #{
  8. #Get:1 http://repos.rcn-ee.net/debian/ wheezy/main
  9. #Unable to locate package ti-sgx-es8-modules-3.8.13-bone70
  10. #}

Nun wird noch die Datei /boot/uEnv.txt angepasst, um das HDMI-Cape auszuschalten.

Die Datei /boot/uEnv.txt anpassen und wieder speichern
  1. nano /boot/uEnv.txt
  2. #Zeile Anpassen und dann Datei speichern
  3. cmdline=quiet init=/lib/systemd/systemd capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN

(3.1) System neu starten

Nach einem Neustart des Systems werden alle gemachten Änderungen aktiviert.

  1. #System neu starten, danach werden alle Änderungen aktiviert
  2. reboot

(3.2) Kernelmodul laden und Logikanalysator aktivieren

  1. #Load the BeagleLogic device tree overlay using:
  2. echo BB-BEAGLELOGIC > /sys/devices/bone_capemgr.*/slots
  3. modprobe beaglelogic
  4. echo 33554432 > /sys/devices/virtual/misc/beaglelogic/memalloc
  5. dmesg | tail -10
  6. #Die Ausgabe des Kernellogs sollte so ähnlich aussehen.
  7. [ 66.091774] remoteproc1: PRU#0 bootcnt=0
  8. [ 66.091803] remoteproc1: PRU#0 entry-point 0x310
  9. [ 66.091829] remoteproc1: remote processor 4a300000.prurproc is now up
  10. [ 66.091969] pru-rproc 4a300000.prurproc: Loaded OK
  11. [ 66.093525] bone-capemgr bone_capemgr.9: slot #7: Applied #2 overlays.
  12. [ 120.877667] BeagleLogic loaded and initializing
  13. [ 120.880030] misc beaglelogic: BeagleLogic PRU Firmware version: 0.2
  14. [ 120.883097] misc beaglelogic: Device supports max 128 vector transfers
  15. [ 120.883186] misc beaglelogic: Valid PRU capture context structure found at offset 0000
  16. [ 120.883254] misc beaglelogic: Default sample rate=50000000 Hz, sampleunit=1, triggerflags=0. Buffer in units of 4194304 bytes each

Wenn alles funktioniert hat, wechselt man in das Verzeichniss cd ./BeagleLogic/beaglelogic-server
und startet den BeagleLogic-Server mit nodejs app.js der auf Port 4000 hört.
Dieser kann nun Lokal(wenn der BeagleBone Black über USB verbunden ist) unter http://192.168.7.2:4000 aufgerufen werden oder der dem BeagleBone Black vom Router zugewiesene IP-Adresse(im WLAN/LAN Betrieb).

BeagleLogic-Server starten
  1. cd ./BeagleLogic/beaglelogic-server
  2. nodejs app.js
  3. #Ausgabe nach Verbindung mit dem Client(Webbrowser)
  4. Express server listening on port 4000
  5. GET / 200 219ms - 21.64kb
  6. GET /bower_components/bootstrap/dist/css/bootstrap-theme.css 200 88ms - 20.87kb
  7. GET /stylesheets/beaglelogic.css 200 75ms - 1.27kb
  8. GET /bower_components/bootstrap/dist/js/bootstrap.js 200 48ms - 59.26kb
  9. GET /bower_components/wavedrom/skins/default.js 200 27ms - 23.91kb
  10. GET /bower_components/wavedrom/skins/narrow.js 200 67ms - 23.01kb
  11. GET /bower_components/jquery/dist/jquery.min.js 200 532ms - 82.3kb
  12. GET /bower_components/bootstrap/dist/css/bootstrap.css 200 797ms - 129.44kb
  13. GET /bower_components/wavedrom/src/JsonML.js 200 46ms - 10.83kb
  14. GET /bower_components/wavedrom/src/WaveDrom.js 200 57ms - 37.04kb
  15. GET /bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff 200 46ms - 22.77kb

Links für weitere Anwendungsbeispiele und Informationen

Homepage BeagleLogic

Your BeagleBone. Now a Logic Analyzer.
[http://beaglelogic.net/]
[https://github.com/abhishek-kakkar/BeagleLogic/wiki]
BeagleLogic: Building a logic analyzer with the PRUs
[http://theembeddedkitchen.net/beaglelogic-building-a-logic-analyzer-with-the-prus-part-1/449]

Wer mehr über den Einsatz und die Möglichkeiten des Logikanalysators erfahren möchte, sollte diesen Artikel lesen.
[https://github.com/abhishek-kakkar/BeagleLogic/wiki/Using-BeagleLogic:-Post-processing]

Einstellungen und Parameter werden hier erklärt.
[https://github.com/abhishek-kakkar/BeagleLogic/wiki/sysfs-attributes-Reference]



nächster Artikel