[LINUX] Ich habe die Gerätebaumüberlagerung untersucht

1. Zuallererst

Beim Ausführen eines FPGA mit einer ARM-CPU unter Linux fand ich es nützlich, zusätzlich zum Gerätebaum einen Mechanismus namens Gerätebaum-Overlay zu verwenden (z. B. das FPGA konfigurieren zu können). Ich möchte darüber schreiben, wie man den Gerätebaum ** Overlay ** verwendet. (Hauptsächlich für diejenigen, die Linux für FPGA entwickeln, überprüfen wir den Betrieb auf dem tatsächlichen Computer nur mit Intel FPGA: [FPGA-Konfiguration mit DeviceTree Overlay (DE10nano)](https://qiita.com / eofz / items / 884b37e401c07a264d38)).

Der Inhalt des "Gerätebaums" ist hier nicht enthalten. Siehe dazu eine andere Quelle (auch Ich habe in den Gerätebaum geschaut).

Was Sie mit Devicetree Overlay tun können

Der Kernel lädt den angegebenen Gerätebaum beim Booten aus dem Bootloader (Basisbaum). Normalerweise können die Gerätebauminformationen nicht ohne Neustart geändert werden. Wenn Sie jedoch den Gerätebaum ** Overlay ** verwenden, kann der Inhalt des Basisbaums geändert werden.

Das Lesen und Löschen von Overlay-Dateien ändert den Inhalt des Gerätebaums, und der Inhalt des Gerätebaums an diesem Punkt wird als Live-Baum bezeichnet. Wenn die Gerätebaumüberlagerung nicht ausgeführt wird, ist der Livebaum = Basisbaum.

So schreiben Sie eine Devicetree Overlay-Datei

Die Gerätebaum-Overlay-Datei hat auch eine Textquelle und eine Binärdatei und wird wie der Gerätebaum mit dtc kompiliert. Um es von der Gerätebaumdatei zu unterscheiden, lautet die Erweiterung der Overlay-Quelle .dtso und die Erweiterung der Overlay-Binärdatei .dtbo.

Die minimal erforderliche Overlay-Datei lautet wie folgt.

minimum.dtso



/dts-v1/;
/plugin/;
/ {
    fragment@0 { /*Der Knotenname kann beliebig sein*/
        target = <phandle>; /*Phandle des zu überlagernden Knotens*/
    /*Oder*/
     target-path="/path"; /*Pfad des Knotens zur Überlagerung*/

        __overlay__ {
            /*Zu überlagernde Eigenschaftsdefinitionen*/
            /*Zu überlagernde Knotendefinitionen*/
        };
    };
};

Alles was Sie brauchen ist einfach

--/ plugin /;nach / dts-v1 /; am Anfang --Wurzelknoten --Kindknoten des Wurzelknotens. Der Name des Knotens kann beliebig sein

Es wird sein. Mit dem / plugin /; am Anfang können Sie beim Schreiben der Overlay-Datei auf die Bezeichnung verweisen, die im zuvor geladenen Gerätebaum (Live-Baum) definiert ist. Beispielsweise können Sie den im Basisbaum definierten Beschriftungsnamen als Wert für "Ziel" verwenden (auch wenn in dieser Datei in der Überlagerungsdatei keine Beschriftung definiert ist, verursacht dtc keinen Fehler). Der Basisbaum muss jedoch die Option- @ haben, um beim Kompilieren mit dtc Symbolinformationen in .dtb aufzunehmen (mit - @ für .dtb, erstellt mit Kernel Source im Git-Repository für FPGAs). Ich denke es wurde zusammengestellt).

Ausführen von Devicetree Overlay

Die Kernelquelle des vom FPGA-Anbieter verwalteten Git-Repositorys enthält einen Treiber namens ConfigFs, der standardmäßig verfügbar ist (aus den Referenzen 1 und 2). Daher verwenden wir diesen Mechanismus.

Im Folgenden lautet der Pfad von configfs für die Gerätebaumüberlagerung $ OVL_PATH.

X-Serie: OVL_PATH = / configfs / Gerätebaum / Overlays Serie I: OVL_PATH = / sys / kernel / config / Gerätebaum / Overlays (Für die X-Serie scheint es notwendig zu sein, mkdir / configfs; mount -t configfs configfs / configfs im Voraus festzulegen.)

Overlay-Implementierung

Dies erfolgt in zwei Schritten:

--Erstellen Sie ein Verzeichnis mit einem beliebigen Namen im Verzeichnis $ OVL_PATH.

Das folgende Beispiel zeigt das Erstellen eines Verzeichnisses my_overlay1_dir und das Laden einer Overlay-Datei mit dem Namen my_overlay1.dtbo. (Annahme der Ausführung als Root-Benutzer)

# mkdir $OVL_PATH/my_overlay1_dir
# cat my_overlay1.dtbo > $OVL_PATH/my_overlay1_dir/dtbo 

Overlay entfernen

Das Löschen erfolgt in einem Schritt.

Wenn Sie den überlagerten Inhalt im obigen Beispiel löschen möchten,

# rmdir $OVL_PATH/my_overlay1_dir

Andere Eigenschaften

Zusätzlich zu "dtbo" werden die Dateien "Pfad" und "Status" automatisch in dem für die Überlagerung erstellten Verzeichnis generiert. path ist eine Schnittstelle, die Overlay wie dtbo ausführen kann, aber die Overlay-Datei, die sich unter / lib / firmware / und abc. Under / lib / firmware / befindet, mit dem folgenden Befehl liest. Überlagerung mit dtbo.

# echo "abc.dtbo" > $OVL_PATH/my_overlay1_dir/path

status ist eine Schnittstelle, über die Sie den Status des Overlay-Verzeichnisses ermitteln können. Mit cat können Sie mithilfe von dtbo oder dem Pfad dieses Verzeichnisses herausfinden, ob Overlay ausgeführt wird.

# cat $OVL_PATH/my_overlay1_dir/status
 /*angewendet oder nicht angewendet wird gedruckt*/

Referenzmaterial

[Referenz 1: Lösung der Zynq PL-Programmierung mit FPGA Manager](https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841645/Solution+Zynq+PL+Programming+With+FPGA+Manager# Test + Prozedur-Verwenden + Gerät + Baum + Überlagerung :) Referenz 2: Rockeboards.org HowToCreate a DeviceTree Ich habe Device Tree Overlay mit FPGA + SoC + Linux ausprobiert: @ ikwzms Artikel, ich beziehe mich immer darauf m (--- ) m

Recommended Posts

Ich habe die Gerätebaumüberlagerung untersucht
Ich habe den Gerätebaum untersucht
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Ich habe untersucht, wie das Zielfernrohr aussieht
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Ich habe untersucht, wie das Zielfernrohr aussieht
Ich habe die Gerätebaumüberlagerung untersucht
Ich habe die Körner gezählt
Ich habe die Vorbehandlung untersucht, die mit PyCaret durchgeführt werden kann
Ich habe PYNQ (2) -Overlay self-made- gestartet
Ich habe vom Terminal getwittert!
Ich habe versucht, die Qiita-API zu berühren
Ich habe die Python-Quelle heruntergeladen
Ich habe SHAPs Zeitung gelesen
Überprüfen Sie die Verwendung des Server-E / A-Geräts mit dem Linux-Befehl iostat
Ich habe die X-Means-Methode untersucht, mit der die Anzahl der Cluster automatisch geschätzt wird
Ich untersuchte das Verhalten bezüglich des Unterschieds zwischen Hard Link und Symbolic Link
Ich untersuchte die Beziehung zwischen Keras 'zustandsbehaftetem LSTM und verstecktem Zustand