FB prussdrv Kit (BBB)
Download
- TAR.BZ2-Archiv (91 kB)
- LGPL
- Plattformen:
- FreeBASIC 0.90.1
- Quelltext enthalten
- Angelegt von TJF am 25.04.2014
Bewertung
Bisher keine Bewertung(Zum Abstimmen auf die Sterne klicken.)
Achtung: Der Download auf dieser Seite wird nicht mehr aktualisiert! Neue Updates sind ab sofort unter https://github.com/DTJF/fb_prussdrv verfügbar.
Der gegenständliche Download betrifft die Bibliothek libprussdrv aus dem Paket am335x_pru_package (en), welche zur Steuerung des Programmable Realtime Unit SubSystem (= PRUSS) von ARM Prozessoren dient. Die Bibliothek bietet Funktionen zum Laden von Instruktionen, Austausch von Daten und Starten von Programmen. Weitere Einzelheiten, der Source Code, sowie Anwendungsbeispiele können dem Originalpaket entnommen werden.
Manche ARM Prozessoren verfügen über (meist zwei) PRUSS Co-Prozessoren, welche bei einer Taktung von üblicherweise 200 MHz sehr effektiv für die Bearbeitung von Echtzeitaufgaben eingesetzt werden können.
Dieses Packet ist vorgesehen zur Verwendung auf Beaglebone Hardware unter einem Debian basierten Betriebssystem (z. B. Ubuntu 13.10) und stellt eine (eigenständig verwendbare) Ergänzung des Originalpaketes dar, durch welche der Einsatz der Bibliothek unter FreeBASIC möglich wird. Es enthält
- die Binärdateien der Bibliothek (bin/libprussdrv.*)
- Header-Dateien für die Verwendung der Bibliothek unter FreeBASIC (include/pruss*.bi)
- angepassten Source Code des PRU Assemblers (im Ordner utils/pasm_source)
- eine vor-kompilierte Binärdatei des PRU Assemblers (bin/pasm)
- ein Minimal-Device-Tree-Overlay zur Aktivierung der PRUSS (bin/PRUSSDRV-00A0.dtbo)
- Anwendungsbeispiele (im Ordner examples)
Der Assembler pasm wurde um eine weitere Option (-y) ergänzt. Diese ermöglicht die Ausgabe der Instruktionen in Form einer FreeBASIC Header-Datei, zur direkten Einbindung in den FB Quelltext.
Zur Installation sind folgende Befehle notwendig (im Basisverzeichnis des entpackten FB prussdrv Kit mit Passwort für Root Privilegien auf dem Beaglebone [Black] ausführen):
sudo su
cp bin/libprussdrv.* /usr/local/lib
ldconfig
mkdir /usr/local/include/freebasic/BBB
cp include/* /usr/local/include/freebasic/BBB
cp bin/pasm /usr/local/bin
exit
Zum Kompilieren eigener Programme wird eine ARM-Version des FreeBASIC Kompilers benötigt (welche z. B. über diesen Link bezogen werden kann).
Zum Ausführen der Beispiele müssen die PRUSS aktiviert werden. Dazu benötigt man ein entsprechendes Device-Tree-Overlay im Ordner /lib/firmware. Dieses Paket enthält ein Minimal-Overlay (Source Code examples/PRUSSDRV.dts), welches wie folgt einsatzbereit gemacht werden kann (einmalig):
sudo cp bin/PRUSSDRV-00A0.dtbo /lib/firmware
Anschließend wird das Overlay folgendermaßen aktiviert (nach jedem Boot-Vorgang, ggf. in der Boot-Sequenz des Betriebssystems)
sudo echo PRUSSDRV > /sys/devices/bone_capemgr.9/slots
(Alternativ kann auch eines der vorinstallierten Overlays verwendet werden, wie z. B. ... echo BB-BONE-PRU-01 > ...)
Außerdem benötigt man Lese- und Schreibberechtigung für den Interrupt /dev/uio0. Die Beispiele werden also entweder als Benutzer root ausgeführt. Oder es wird dauerhaft eine Zugriffsberechtigung angelegt. Für letztere wird eine neue Benutzergruppe anlegt (z. B. mit dem Namen pruss), in welche alle vorgesehenen PRUSS Benutzer als Mitglied aufgenommen werden. Dann folgende Befehle ausführen (nach jedem Boot-Vorgang, ggf. in der Boot-Sequenz des Betriebssystems)
sudo /bin/chgrp pruss /dev/uio0
sudo /bin/chmod g+rw /dev/uio0
Hier noch ein Hinweis: Software, die auf einem der PRUSS ausgeführt wird, hat Zugriff auf jeden Bereich der Hardware und kann vom Betriebssystem nicht überwacht werden. Die Aktivierung der PRUSS stellt deshalb ein Sicherheitsrisiko dar.
Und ein Zitat aus der Datei README.txt des Originalpaketes:
AM335x PRU PACKAGE
The hardware / software modules and descriptions referred
to in this package are *NOT SUPPORTED* by Texas Instruments
(www.ti.com / e2e.ti.com).
These materials are intended for do-it-yourself (DIY) users
who want to use the PRU at their own risk without TI support.
"Community" support is offered at BeagleBoard.org/discuss.
English
See english forum thread.