libpruio-0.2 (D/A - I/O schnell und einfach)
Download
- TAR.BZ2-Archiv (1,29 MB)
- LGPL
- Plattformen:
- FreeBASIC 0.90.1
- Quelltext enthalten
- Angelegt von TJF am 09.05.2014 • Aktueller Dateiupload vom 26.10.2014
- Alle Dateiversionen
Bewertung
Bisher keine Bewertung(Zum Abstimmen auf die Sterne klicken.)
Achtung: Der Download auf dieser Seite ist veraltet und wird nicht mehr aktualisiert! Der Source Code ist jetzt auf https://github.com/dtjf/libpruio zu finden, und das Projekt kann in Form von Paketen über den Paketmanager installiert werden. Details siehe http://users.freebasic-portal.de/tjf/Projekte/libpruio/doc/html/ChaPreparation.html#SecDebPac.
Dieser Download betrifft eine Treiber-Bibliothek, welche die Entwicklung von Software mit Ein- und Ausgabe-Funktionen wesentlich erleichtert.
Software-Entwicklung auf Beaglebone Hardware macht nicht wirklich Spaß, wenn digitale Ein- oder Ausgänge oder analoge Eingänge benötigt werden. Im Falle von digitalem I/O sind Probleme wie
- verteilter Quelltext (Devicetree Overlays und eigenes Programm)
- unterschiedliche Devicetree Kompiler (mit und ohne Option -@)
- spärliche Dokumentation, verteilt über den Kernel Quelltext
an der Tagesordnung. Auch beim Lesen analoger Eingänge ist die Situation nicht besser
- fehlerhafter ADC Kernel Treiber
- keine Kontrolle über die ADC Konfiguration
- langsame Geschwindigkeit
Die meisten Operationen müssen mit Root-Privilegien ausgeführt werden. Oder es macht bedeutenden Aufwand, den Zugriff für einen normalen Benutzer (nach jeder Änderung neu) zu konfigurieren. In jedem Fall ist die Zugriffsgeschwindigkeit durch langsame Datei-Operationen beschränkt.
All diese Fallstricke helfen nicht wirklich, wenn es darum geht sich auf die eigentliche Entwicklungsaufgabe zu konzentrieren.
Hier meine Lösung:
libpruio ist ein Treiber für die AM33xx Prozessor Familie. Er steuert die Systemkomponenten
- Control Module (pinmuxing)
- GPIO 0 to 3 (General Purpose Input and Output)
- TSC_ADC_SS (Touch Screen Controler and Analog to Digital Convertor SubSystem)
- PWMSS 0 to 2 (Pulse Width Modulation SubSystem)
in Echtzeit durch Software, die auf einem PRUSS (Programable Realtime Unit SubSystem) ausgeführt wird. Die Schnittstellen sind für einfache und sichere Handhabung ausgelegt, ermöglichen gleichzeitig aber auch eine vielfach schnellere Programmausführung als alle bisher bekannten Lösungen (Stand Mai 2014). Für die tägliche Arbeit werden keine mystischen Tabellen mit Prozessor-Pincodes oder GPIO-Verschlüsselungen benötigt. Stattdessen wird spezifiziert was sichbar ist (z. B. P8_11 = Header P8, Pin 11).
libpruio steuert
- Aufwecken der Komponenten
- Auslesen der Komponenten-Konfiguration beim Start
- Aktivieren oder Abschalten der Komponenten
- Aktualisieren der GPIO-Konfiguration
- Steuern von GPIO Operationen (Lesen / Schreiben im IO Modus)
- Ausgeben eines gepulsten Signals (PWM: Frequenz und Auslastung)
- Einlesen eines gepulsten Signals (CAP: Frequenz und Auslastung)
- Aktualisieren der ADC-Konfiguration
- Lesen einzelner analog Eingänge (IO Modus, kontrolliert vom Host)
- Lesen analog Eingänge in einem Ringspeicher und Kontrolle digitaler Ein- oder Ausgänge (RB Modus, kontrolliert vom Host)
- Lesen mehrerer analog Eingänge mit exaktem Timing (RB oder MM Modus, kontrolliert vom PRUSS)
- Verwenden von Triggern zum Start van Messungen im MM Modus (GPIO or ADC Eingang)
- Restaurieren der Original-Konfiguration beim Beenden
Die Bibliothek kann unter den Bedingungen der Lesser GNU Public Licence Version 2 (LGPLv2) verwendet werden. Das Paket enthält auch einen Wrapper für die Programmiersprache C und Beispiele (unter GPLv3) in FreeBASIC Syntax (die meisten auch in C Syntax):
Name | Funktion |
---|---|
1.bas | Minimal-Beispiel |
analyse.bas | Ausgabe der Anfangskonfiguration der Komponenten |
button.bas | Statusausgabe eines GPIO Input mit Pullup Widerstand (seit 0.0.2) |
io_input.bas | Ausgabe der digitalen und analogen Kanäle im IO Modus |
pwm_cap.bas | Textausgabe der Messung eines PWM Ausgangs |
sos.bas | Blinken einer User Led im SOS Code |
stepper.bas | Steuern eines Stepper Motors |
pwm_adc.bas | Grafische Anzeige dreier PWM Ausgänge |
oszi.bas | Grafische Anzeige der analogen Eingänge |
rb_oszi.bas | Grafische Anzeige zweier analogen Eingänge aus dem Ringspeicher |
triggers.bas | Starten von Messungen durch Trigger im MM Modus |
Die Dokumentation kann on-line eingesehen werden oder zum lokalen Gebrauch über diesen Verweis bezogen werden.
English
See english forum thread.