' schrieb:Hallo!
Ich habe folgendes Problem:
Aufbau: ein RT Rechner wartet auch Befehle von einem Win-Host, die via Shared Variablen bekommt und liefert dann Ergebnisse ebenfalls via SVE zurück oder startet Aktionen via FPGA
Zu den Problemen mit der SVE und dem Datasocket lass mich hier jetzt erstmal nicht aus.
Laut RT System Manager verbraucht er ca. 4-5 KB /s Memory. Ich habe beim vi Start ca. 12900 KB frei und komme so auf ca. 50 Sek. Laufzeit.
Ich lese die SVE Befehlsvariablen in mehreren parallelen Schleifen aus, da manche Vorgänge auch etwas länger dauern können und der RT auch Sachen parallel abarbeitet.
Ich habe schon versucht gewisse Sachen wie Arrays so gut es geht zu vermeiden und den Speicherplatz anschliessend wieder frei zu geben.
Aber irgendwie komme ich auf keinen grünen Zweig.
Vielleicht hat jmd. Rat.?
Wie stelle ich z.B. fest, ob nicht der FPGA Code den Speicherplatz verbraucht?
Bei Bedarf lad ich auch gerne mal das vi hoch, sind allerdings 2,5 MB
Danke schon mal
P.
Der FPGA-Code an sich kann keinen Speicher verbrauchen, der Code läuft ja auf dem FPGA. IMHO kann sich der Speicher-Verbrauch NUR erhöhen, wenn man irgendwo Queues vollschreibt und keine max. Queue Size eingestellt hat oder man z.B. irgendwo eine "build array" Primitive verwendet. Das ständige Öffnen von Referenzen oder so OHNE diese nach Gebrauch wieder zu schließen kann auch eine Ursache sein.
Ansonsten gilt die Regel: Während der Laufzeit sollte unter RT man tunlichst vermeiden neuen Speicher anzufordern (womit auch immer) sondern alles beim Programm-Start zu allocieren und dann auf dem zur Verfügung stehenden Speicher zu arbeiten, also immer Replace Array subset verwenden wenn man was in ein Array schreibt usw ...
Ob das Problem nun durch die Shared Variables auftritt kann ich dir nicht sagen, ich benutz die Dinger nicht ...