LabVIEWForum.de - Probleme beim erzeugen der Intermediate Files

LabVIEWForum.de

Normale Version: Probleme beim erzeugen der Intermediate Files
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

Ich habe gerade mein Abitur gemacht und bin mit Hochtouren dabei mein Projekt für den Jugend-Forscht-Wettbewerb fertigzustellen.
Allerdings habe ich so meine Probleme mit dem Compilieren der FPGA-VIs.

Zu meinem Projekt:
Ich habe mit zwei Klassenkameraden letztes Jahr angefangen ein kugelförmiges Display zu bauen. Zuerst auf Basis eines normalen FPGA-Dev.Boards und Arduinos und sind dann dieses Jahr auf einen myRio umgestiegen.
Bis zum Regionalwettbewerb sind wir dann soweit gekommen: http://youtu.be/wyryOee_t4o (nicht mein Video, hab keine Ahnung wie der Name zustande gekommen ist Blink)
Das entwickeln mit LabView habe ich mir dann im Hauruck verfahren selber beigebracht, dementsprechend entspricht der Code nicht bedingt den Best-Practices Blush . Tipps sind gern gesehen...

Theoretisch sind jetzt auch alle VIs fertig um das Display in Betrieb zu nehmen, die FPGA-VIs sind auch schon auf dem PC simuliert und verhalten sich so wie sie sollen.
Wenn ich jetzt allerdings versuche die VIs zu kompillieren bekomme ich beim Erzeugen der Intermediate Files eine Fehlermeldung das mein PC zu wenig Speicher hat.
Ich vermute das es einfach daran liegt, dass das Projekt einfach zu komlex/verpfuscht ist sodas unnötig Speicher beim erzeugen der Dateien verbraucht wird.

Wär cool wenn ihr mir helfen könntet.

Grüße Boggy
Hallo Boggy,

nicht schlecht…

Zitat:Wenn ich jetzt allerdings versuche die VIs zu kompillieren bekomme ich beim Erzeugen der Intermediate Files eine Fehlermeldung das mein PC zu wenig Speicher hat.
Quick&Dirty: Neueren/besseren PC verwenden? Speicher nachrüsten?

Ansonsten wirklich erst noch etwas aufräumen! Genereller Tipp: AutoCleanup-Tool oder Ctrl-U…
Spezielle Tipps:
TicksProUmdrehung: Warum hast du eine endlos laufende Schleife innerhalb einer anderen endlos laufenden Schleife? Die äußere ist zwecklos…
Zustand.vi: Hier hast du zwei kleinere Loops innerhalb einer äußeren. Die zweite dieser kleinen Loops verwendet die selbe Stop-Bedingung wie die erste Loop und ist damit zwecklos: es funktioniert ohne diese zweite Loop genau gleich!
die drei CLK-VIs: hier der gleiche Unsinn mit endlos laufenden Schleifen innerhalb anderer endlos laufender Schleifen…
CLK.vi: wozu die Select-Funktion, wenn immer nur der TRUE-Case ausgewählt wird?
Blank.vi: Der Vergleich mit 4095 wird zweimal durchgeführt, einmal davon ließe sich sicherlich einsparen…
Main-FPGA: um die "einzelnen" Funktionen fehlt eine Schleife (nicht um die subVIs). Ansonsten wird "LED Power" etc. nur genau einmal zu Beginn der Ausführung aufgerufen, alle späteren Kommunikationsversuche vom RT-Host landen im Nirwana… Deine SIN1/2 müssen auch mit den genau einmal zu FPGA-Start eingelesenen Daten arbeiten - und zwar "ewig" aufgrund endlos laufender Schleifen!

Allgemein: THINK DATAFLOW!

Edit:
Das TicksProZustand in MainCPU ist ebenfalls eine Endlos-Schleife, die für Stillstand in MainCPU sorgt. THINK DATAFLOW!
"myRIO customized FPGA" ist schon ziemlich groß…
ExpandSortInsert ist sowohl ziemlich umständlich als auch buggy…
Hallo Boggy,

auch ich muss sagen, nicht schlecht!

Gerd hat ja schon viele Kleinigkeiten kritisiert, denen kann ich nur zustimmen. Ich nehme mal an, vieles stammt noch aus der Testphase (z.B. die unnötigen doppelten Loops).

Dein "kein Speicher" Problem kann ich leider nur bestätigen. Ich befürchte, der Tipp mit Speicher-Aufrüsten bringt da auch nicht viel, solange die Xilinx Tools unter Windows noch 32bit sind.

Dafür habe ich mir ein wenig Arbeit gemacht, und schrittweise die Ursachen des Speicherproblems eingegrenzt.
Diese sind:
- der riesige DMA Host->Target FIFO: ein Array mit 26880 Boolean Elemente!
- das riesige Boolean-Array im FPGA, auf dessen Elemente du auch noch in 2 verschiedenen SCTL parallel und dynamisch zugreifen willst.

Das bringt den armen kleinen FPGA im myRIO zum Überlauf.

Meine Empfehlung:
-FIFO kleiner machen und Daten in Blöcken an den FPGA übertragen.
-Block-Memory anstatt Boolean-Array verwenden.

Als erster Verbesserungsschritt, der auch wieder kompilierbar ist, kommt dann das hier raus:
[attachment=49137]
Ich hoffe, ich habe beim Auflösen der SubVIs und Zusammenfassen in weniger SCTLs keinen Copy-Paste Fehler gemacht. Wink

Gruß, Jens
Vielen vielen vielen Dank für die Antworten und die Mühe meinen Code zu verstehen und umzuarbeiten.

Ich werd mich jetzt mal Stück für Stück durcharbeiten und eure Tipps umsetzen und alles testen.
So Techniken wie z.B. das Verwenden von Block Memory sind mir neu. Mit "Learning by doing" verpasst man halt den ein oder anderen ganz nützlichen Trick.
Referenz-URLs