2016-06-19 35 views
1

Ich schreibe einen GPIO-Treiber für mein RPI2 OS. Und ich surfte sehr lange darüber, aber ich habe nur Linux-Daten gefunden. Wie soll ich solche Funktionen machen?Arbeiten mit GPIO auf bcm2836

void gpio_set(int pin); 
void gpio_clr(int pin); 

in C für den Treiber. Oder kann es vielleicht aufgrund der Inline-Montage getan werden?

Antwort

2

Wie erläutert here

Die zugrunde liegende Architektur in BCM2836 ist identisch mit BCM2835. Der einzige wesentliche Unterschied besteht in der Entfernung des ARM1176JZF-S-Prozessors und der Ersetzung durch einen Quad-Core-Cortex-A7-Cluster.

In der verfügbaren Dokumentation für das BCM2836 wird nicht das periphere Hardare beschrieben, sondern nur das A7. Stattdessen benötigen Sie die Dokumentation für die BCM2835. Der Abschnitt peripheral specification Abschnitt 6 befasst sich mit dem GPIO. Die Register sind speicherplatziert, so dass Sie direkt in C schreiben können.

+0

Vielen Dank! –

0

Es ist sehr einfach in C zu implementieren. Beachten Sie, dass die Peripherieadresse RPi2 0x3F000000 statt 0x20000000 (RPi) ist. Die verfügbare Dokumentation gilt für RPi (BCM2835), ist aber auch auf RPi2 anwendbar, mit einigen Änderungen der Speicheradresse und Prozessorwechsel (Cortex-A7). Für einen schnellen Sprung können Sie valver's blog für Bare-Metal-Entwicklung sehen.