Ich versuche, Ethernet-Treiber für Linux-Kernel 4.13.x für Banana Pi M2 ultra zu schreiben. Vor einiger Zeit wurde der so genannte "Device Tree" (DT) in der Linux-Kernel-Infrastruktur eingeführt. Ich habe nicht viel Erfahrung mit DT beim Schreiben von Gerätetreibern und deshalb habe ich ein paar Fragen.Linux-Gerätetreiber für Bananen-Pi und Gerät Baum
Soweit ich weiß - im Falle von Bananen-Pi-System - ist es notwendig, einige Clock-Quelle für gegebene Peripheriegerät zur Verfügung zu stellen. Es ist die Funktion der CCU in Banana Pi, eine solche Uhr zu liefern. Die CCU ist speicherplatziert Ressource an einer Adresse im Linux-Kernel. Ich möchte Treiber für Ethernet schreiben, die benötigt einige Uhr von CCU.
Ich weiß, dass die physikalische Adresse der CCU über ioremap() oder ähnliche Funktion zu virtuellen Adresse zugeordnet werden muss.
Meine Frage ist, wie kann ich die virtuelle Adresse der CCU in meinem Ethernet-Treiber holen? Ist es möglich, über Gerätebaum zu tun? Wenn ja - wie geht das? Oder vielleicht kann diese virtuelle Adresse einen anderen Weg gehen?
Ich bin nur nicht sicher, ob es getan wird (Virt-Adresse abrufen) über DT oder nur durch eine Prozedur oder über den globalen Zeiger.
Irgendwelche Ideen oder Vorschläge?
Der Fahrer sollte nicht * „holen die virtuelle Adresse der CCU“ * Analogus zu Plattform Daten in Betracht gezogen werden. Der Kernel verwendet objektorientierte Techniken wie die Datenkapselung, so dass Treiber diese Adresse oder Daten nicht teilen. Es sollte eine Funktion geben, die Ihr Treiber aufrufen kann, um die erforderliche Uhr zu erhalten oder zu aktivieren. – sawdust