Forum: FPGA, VHDL & Co. PCIe Quartus QSYS


von Donni D. (Gast)


Lesenswert?

Hey Leute,

hat von euch schon einmal jemand ein PCIe System erstellt mit 
Quartus/QSYS? Ich sitze gerade dran und habe noch eine kleine Baustelle. 
Ich nutze das DE5-Net Entwicklungsboard von Terasic: 
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=526

Erst einmal vorweg, das System funktioniert an sich schon sehr gut, ich 
kann Daten lesen/schreiben, auch per DMA, sowohl in On-Chip Speicher 
aber auch in DDR3 Speicher. Meine Probleme betreffen das flashen.

Problem 1:
Wenn ich die Karte flashe und schon ein System drauf war was PCIe nutzt, 
stürtzt mein Windows mit einem Bluescreen ab. Gut, ich habe ihm ja auch 
während dem Betrieb eine PCIe Karte "geklaut".
Nun die Frage: geht es auch ohne Bluescreen? Treiber deaktivieren etc. 
hat leider nichts gebracht. Kann ich Windows dazu bringen, das Gerät 
komplett zu deaktivieren? Gleiches gillt dann für das erneute flashen, 
dann muss man Windows einmal neustarten damit es die Karte wieder 
erkennt, ich denke es wird nur beim booten nach PCIe Geräten gesucht.
Es muss vorerst alles unter Windows laufen, weil nur für Windows ein 
Treiber mit der gewünschten funktionalität zur Verfügung steht.

Problem 2:
Nachdem ich neu geflasht habe wird das Gerät laut ConfigurationSpace nur 
noch als PCIe 1.0 Gerät erkannt. Ohne entfernen der Karte aus dem Server 
sowie einmal alles vom Strom nehmen ist sie auch nicht mehr auf PCIe 3.0 
zu bekommen. Das wird aber vermutlich am Server und weniger an der Karte 
liegen oder? Die Karte steckt in einem Lenovo Rackserver drin. Neustarts 
dauern aufgrund des Servers sehr lang, weshalb es schön wäre wenigstens 
Problem 1 lösen zu können.

Achso, ich nutze diesen IP-Core:
V-Series Avalon-MM DMA Interface for PCIe Solutions
https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_pcie_avmm_dma.pdf

Grüße

von Jim M. (turboj)


Lesenswert?

Donni D. schrieb:
> Nun die Frage: geht es auch ohne Bluescreen?

Zu dem Thema hat Linux Tech Tips vor kurzem ein Video gemacht.

Zusammenfassung: Selbst auf hotplug-fähigem Serverboard muss alles 
stimmen, inklusive BIOS. Auf Desktop Boards sehe ich keine ernsthafte 
Chance.

von cfgardiner (Gast)


Lesenswert?

Donni D. schrieb:
> Wenn ich die Karte flashe und schon ein System drauf war was PCIe nutzt,
> stürtzt mein Windows mit einem Bluescreen ab

Geht es ein Bisschen genauer, wie du hier vorgehst? Für Intel/Altera 
habe ich es noch nicht gemacht aber für Lattice ECP3, ECP5, ECP-5G 
mindestens ein halbes Dutzend Designs.

1) Wenn du den Konfigurationsbaustein (SPI Flash?) über PCIe 
programmierst, muss natürlich PCIe noch am leben sein.

2) Danach gibt es verschiedene Möglichkeiten:
a) PC Power Cycle (POFF, WoL) muesste eigentlich immer klappen.
b) Karte nach dem Update über Power Managament zuerst nach D3, ggfs 
Treiber entladen, dann FPGA Reload, dann Warm Start muesste eigentlich 
auch klappen. Dein Board muss das aber unterstützen, z.B. D3 Detektion 
um vom Flash neu zu booten. Hier ist es hilfreich wenn du Zugriff auf 
den Inhalt des PMCSR Register des Config Spaces hast.

Hot Plug habe ich bei Windows nie zum laufen gebracht. Bei Linux auch 
nicht wirklich, jedenfalls nicht wirklich zuverlässig. Zum Glück waren 
die andere Lösungen in 2) immer ausreichend.

Sollte ich dein Posting völlig falsch verstanden haben und du über JTAG 
o.ä. im Live System programmierst, dann muesste es ausreichen den 
Treiber vorher zu entladen. Danach dann entweder Power Cycle oder Warm 
Start.

von Donni D. (Gast)


Lesenswert?

Also ich programmiere den ganzen FPGA neu, heißt also ich schiebe das 
.sof File über den Programmer in den FPGA rein. Deshalb fehlt natürlich 
das gesamte PCIe Gerät beim Flashvorgang und Windows stürzt ab.

Ob das Mainboard die beschriebene Funktionalität unterstützt muss ich 
dann mal schauen, auf jeden Fall ein guter Hinweis. Einfach das Gerät 
deaktivieren (im Gerätemanager) hat leider nicht geklappt und führte 
trotzdem zu einem Absturz.

Kannst du die Möglichkeit 2 nochmal genauer beschreiben? Habe noch nicht 
ganz verstanden. Ich denke das Problem ist, dass ich den gesamten FPGA 
neu beschreibe und nicht über PCIe mein Programm in den Flash bringe, 
oder?

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.