Forum: Mikrocontroller und Digitale Elektronik AVR32 / AP7000 GPIOs unter LINUX


von Claude (Gast)


Lesenswert?

Kennt sich hier schon jemand mit dem AP7000 aus?

Folgendes Problem :
Ich hab mir das Grasshopper Board von Benedikt Sauter gekauft und würde 
dort gerne einen FPGA anflanschen.
Das G.H. Board hat leider keinen EBI nach aussen,
aber recht viele GPIOs.
Aus dem AP7000 Datenblatt lese ich das die CPU 2 Clockzyklen für GPIO 
Operationen benötigt. Also recht schnell das ganze !
Bisher hab ich bei ähnlichen Schaltungen (ARM+FPGA) das FPGA an den 
Memory Bus gehängt und konnte so schöne sachen wie memcpy(),pointer etc. 
auf das FPGA machen.

Mein Gedanke ist jetzt den fehlenden EBI mit den GPIOs nachzubilden , 
z.b. als einen 16bit Gemultiplexten Adr./Daten Bus. Gibt es unter Linux 
Tricks solch einen Bus/Konstruktion in den virtuellen Speicherbreich 
einzublenden?

von lucem (Gast)


Lesenswert?

Ob man das in den virtuellen Speicher einhängen kann weiß ich nicht, 
vermute aber mal eher nein, wenn ich an die Struktur des Pagers im 
Linux-Kernel denke. Beim AP7000 kommt noch die eingebaute MMU dazu, die 
vom Pager auch verwendet wird, so dass hier allerhöchstens ein 
MMIO-Mechanismus in Frage kommt.

Was aber in jedem Fall geht, ist eine Gerätedatei und ein dazugehöriges 
Kernelmodul, dass die Kommunikation mit dem FPGA über GPIO 
implementiert, zu verwenden, das geht (mit Hilfe einer zusätzlichen 
Bibliothek) sogar bidirektional.
Eine Anwendung würde also nur noch Schreib/Lesezugriffe auf diese Datei 
durchführen, was ganz im Sinne der Unix-Philosphie (alles ist eine 
Datei) wäre.

von Claude (Gast)


Lesenswert?

Danke für die Antwort.
Naja die Anzahl der von mir verwendbaren GPIOs ist inzwischen sehr 
geschrumpft. Werde wohl den SPI Bus für die Kommunikation mit dem FPGA 
nehmen -> Gerätedatei und Kernelmodul :-)

von Dirk (Gast)


Lesenswert?

Ich möchte auf einem AVR32 unter Linux die GPIO's ansprechen.

Allerdings nicht auf die langsame sys/class-Variante wie sie z.B. hier 
beschrieben ist:

http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO

In dem AN von Atmel 
http://www.atmel.com/dyn/resources/prod_documents/doc32073.pdf ist der 
Zugriff über ein Kernel-Modul beschrieben. Ich bekomme aber den Code 
nicht zum laufen, da die Header-files (z.B. linux/gpio.h) nicht gefunden 
werden.

Die Dokumentation in der gpio.txt in der Buildroot-Toolchain haben mich 
auch nicht viel weiter gebracht.

Es müssten ja einige MHz über die Pins zu realisieren sein.

Könnt Ihr mir bitte weiterhelfen. Ein funktionsfähiges Beispiel wäre 
auch gut.

MfG Dirk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.