SoC FPGA Linux Kernel-Versionen 4.17 Juni 2018 und neuer und 4.18 und neuer:
- Nur die Referenztaktfrequenzen der obersten Ebene für die Intel® Stratix® 10 SX werden im Linux Gerätebaum angegeben.
- Der Taktbaum, der auf der Stratix 10-HPS-Komponente im Intel® Quartus® Prime Pro Platform Designer-Design eingerichtet ist, wird vom Taktmanagertreiber aus dem FPGA Bitstrom geladen.
Für SoC FPGA Linux Kernel Version 4.17 (vor Juni 2018) und früher:
Der Linux Gerätebaum enthält Informationen zur vollständigen Taktungsstruktur der Intel® Stratix® 10 SX und muss die Instandsetzung der Taktfrequenz in der Stratix 10 HPS Komponente im Intel® Quartus® Prime Pro Platform Designer Design berücksichtigen.
Wenn die Taktungsstruktur nicht entsprechend Mainboard und Design aktualisiert wird, können Peripheriegeräte unter Linux falsch funktionieren.
Der Linux Kernel enthält einen allgemeinen Gerätebaum der obersten Ebene und einen Beispiel-Gerätebaum für das Intel Stratix 10 SX Development Kit:
arch/arm64/boot/dts/altera/
socfpga_stratix10.dtsi #Generic Gerätebaum der obersten Ebene
Socfpga_stratix10_socdk.dts # Beispiel-Gerätebaum für das Intel Stratix-10-SX-Entwicklungskit, Gold Hardware Reference Design (GHRD) und Gold Software Reference Design (GSRD)
Hinweis:
- Das Goldene Hardware-Referenzdesign (GHRD) wird mit Intel FPGA SoC EDS in den Beispielen/Hardware/Ordner geliefert
- Das Gold Software Reference Design (GSRD) kann von Rocketboards.org https://rocketboards.org/foswiki/Documentation/GSRD
Dieses Problem wurde in späteren Kernel-Versionen (5.X) behoben
SoC FPGA Linux Kernel-Versionen 4.17 Juni 2018 und neuer und 4.18 und neuer:
Nur die Referenztaktfrequenzen der obersten Ebene für die Intel® Stratix® 10 SX werden im Linux Gerätebaum angegeben.
clkmgr@ffd10000 {
Taktfrequenzen {
osc1 { clock-frequency = ; };
};
};
Für SoC FPGA Linux Kernel Version 4.17 (vor Juni 2018) und früher:
Im socfpga_stratix10.dtsi werden die möglichen Einstellungen für die einzelnen Taktbaumkomponenten angezeigt.
peri_emacb_clk: peri_emacb_clk@ec {
#clock zellen = ;
compatible = "altr,socfpga-s10-perip-clk";
Taktfrequenzen = , , , , ;
reg = ;
};
Unten sehen Sie einen Teil des Baums, der die Uhr zeigt, die UART und I2C liefert. Beachten Sie, dass die Quellentakte für die IP standardmäßig eingestellt sind, ihre Verbindung zum Baum jedoch nicht eingestellt ist. Die dort festgelegte IP wird l4_sp_clock, was von noc_clk angetrieben wird, aber noc_clk und noc_free_clk keinen definierten Treiber haben:
:
main_noc_base_clk: main_noc_base_clk {
...
Taktfrequenzen = ;
...
};
noc_free_clk: noc_free_clk@4c {
...
Taktfrequenzen = , ,
, ,
< und f2s_free_clk>;
...
};
noc_clk: noc_clk@30 {
...
Taktfrequenzen = , < und boot_clk>;
...
};
l4_sp_clk: l4_sp_clk {
...
Taktfrequenzen = ;
...
};
i2c1: i2c@ffc02900 {
...
Taktfrequenzen = ;
...
};
uart0: serial0@ffc02000 {
...
Taktfrequenzen = ;
...
};
Die erforderlichen Einstellungen können über die .dts-Datei für Ihr Mainboard mithilfe der unten aufgeführten Datei angewendet werden:
SoC {
clkmgr@ffd10000 {
Taktfrequenzen {
OSC1 {
Taktfrequenz = ;
};
periph_pll@e4 {
peri_emaca_clk@e8{
Taktfrequenz = ;
};
peri_emacb_clk@ec {
Taktfrequenz = ;
};
};
noc_free_clk@4c {
Taktfrequenzen = ;
};
noc_clk@30 {
Taktfrequenzen = ;
};
emaca_free_clk {
Taktfrequenzen = ;
};
emacb_free_clk {
Taktfrequenzen = ;
};
emac0_clk {
Taktfrequenz = ;
};
emac1_clk {
Taktfrequenz = ;
};
emac2_clk{
Taktfrequenz = ;
};
};
};
};
};
Die oben genannten Behebung des Problems für die UART/I2C und definiert auch einige Ethernet-Takte. Der Taktbaum ist jetzt von UART / I2C bis zur Haupt-PLL vollständig. Dies bedeutet, dass die Logik, die UART und I2C basierend auf der Quellen-Taktfrequenz einrichtet, die richtige Berechnung durchführen kann.
Weitere Informationen zum Gerätebaum finden Sie in der Dokumentation zum Linux Kernel.