bschraud - 2024-05-06

Aufgrund einer Schnittstellenänderung muss ich meine Messagebuffer erheblich vergrößern.
U.g. Konstante bestimmt die Größe einer Byte-Array-Definition, die in einer Struktur für 9 Botschaften verwendet wird.
Ich benötige also 177372byte zusätzlichen Speicher in dem Modul in dem die Struktur als lokale Variable angelegt wird.

Dynamisches Allokieren zur Laufzeit möchte ich vermeiden, damit ich nicht während des Betriebes Fehler
aus dem Allokieren behandeln muss.
Für ein Reservieren des Speicherbereiches habe ich in Codesys keine Einstellmöglichkeiten gefunden.
Die Applikation läßt sich ohne weitere Modifikation kopilieren, scheitert aber bei der Ausführung.
Welche Lösungs- oder Einstellmöglichkeiten gibt es?

Bei
c_w_process_result_content_len_max: WORD := 292;

[INFORMATION] Größe des lizenzierten Benutzercodes: 363304 Bytes
[INFORMATION] Speicherverbrauch auf dem Gerät, nicht für Lizenzierung verwendet:
[INFORMATION] Speicherbereich 0 enthält Daten, Eingang, Ausgang, Speicher und Nicht-sichere Daten: Größe: 2807632 Bytes , höchste verwendete Adresse: 2159712, größte zusammenhängende Speicherlücke: 647920 Bytes (23 %)
[INFORMATION] Speicherbereich 3 enthält Code: Größe: 7267784 Bytes , höchste verwendete Adresse: 5590600, größte zusammenhängende Speicherlücke: 1677184 Bytes (23 %)
Übersetzung abgeschlossen -- 0 Fehler, 10 Warnungen : Bereit für Download

Speicherprüfung:
[WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag GVL.htFactory._itfInstList.__Interface in Area 0, Offset 0x000033BC (0x71C15414)
[WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag __datasourcesInstancesGVL.__datasourcesInstances.dsInst._allItemsHashtable._ht.__Interface in Area 0, Offset 0x00128904 (0x71D3A95C)
[WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_L_Instance._IIoDrv.__Interface in Area 0, Offset 0x0018EC00 (0x71DA0C58)
[WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_S_DAC_Instance._IIoDrv.__Interface in Area 0, Offset 0x0018F090 (0x71DA10E8)
[INFORMATION] PAC: Überprüfter Speicher für 21336 Objekte. 4 Prüfung(en) fehlgeschlagen.
[INFORMATION] PAC: Check took 00:00:13.9743220.

Applikation lässt sich downloaden und funktioniert auf dem Gerät.

Nach der Vergrößerung:
c_w_process_result_content_len_max: WORD := 20000;

[INFORMATION] Größe des lizenzierten Benutzercodes: 363304 Bytes
[INFORMATION] Speicherverbrauch auf dem Gerät, nicht für Lizenzierung verwendet:
[INFORMATION] Speicherbereich 0 enthält Daten, Eingang, Ausgang, Speicher und Nicht-sichere Daten: Größe: 4114264 Bytes , höchste verwendete Adresse: 3164816, größte zusammenhängende Speicherlücke: 949448 Bytes (23 %)
[INFORMATION] Speicherbereich 3 enthält Code: Größe: 7267832 Bytes , höchste verwendete Adresse: 5590640, größte zusammenhängende Speicherlücke: 1677192 Bytes (23 %)
Übersetzung abgeschlossen -- 0 Fehler, 10 Warnungen : Bereit für Download

Speicherprüfung: (gleiches Ergebnis wie vorher)
[WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag GVL.htFactory._itfInstList.__Interface in Area 0, Offset 0x000033BC (0x71C15414)
[WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag __datasourcesInstancesGVL.__datasourcesInstances.dsInst._allItemsHashtable._ht.__Interface in Area 0, Offset 0x0021DF38 (0x71E2FF90)
[WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_L_Instance._IIoDrv.__Interface in Area 0, Offset 0x00284238 (0x71E96290)
[WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_S_DAC_Instance._IIoDrv.__Interface in Area 0, Offset 0x002846C8 (0x71E96720)
[INFORMATION] PAC: Überprüfter Speicher für 21336 Objekte. 4 Prüfung(en) fehlgeschlagen.
[INFORMATION] PAC: Check took 00:00:14.0491831.

Applikation lässt sich downloaden. Ausführen mündet in Ausnahmefehler

Die Applikation läuft auf der Runtime CODESYS Control for Raspberry Pi MC SL.
Die Codesys Version ist 3.5 SP20 mit allen Updates.

Kennt jemand eine Speichergrenze für lokale Variablen bzw. eventuelle Einstellmöglichkeiten?
Vielen Dank