Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

tasklokale GVL, max-stack-size, Error C0427

gnotoix
2019-12-27
2024-03-12
  • gnotoix - 2019-12-27

    Ich bitte um eine kurze Bestätigung, ob mein Lösungsansatz, d.h. die von Hand eingestellte Stack-Größe so richtig ist !

    Bei Verwendung einer tasklokalen, globalen Variablenliste erhielt ich beim Raspberry Pi stets den Fehler: C0427

    Zitat:
    Der Zugriff auf Informationen über die aktuell ausgeführte Task erfordert Kenntnisse über die maximale Größe des Stacks, die vom Zielsystem unterstützt wird.

    Anscheinend ist der __CURRENTTASK-Operator die Ursache, denn der

    Zitat:
    ...wird nur auf Zielsystemen unterstützt , bei denen die Zielsystemeinstellung auf einen Wert > 0 gesetzt ist.

    Derlei Einstellungen sind in der CoDeSys-IDE nirgends zu finden, wohl aber in der Gerätebeschreibungsdatei des Raspberry-Pi, und dort steht 0

    Ich war so frech und habe einfach die Linux-übliche Stackgröße von 8 MB eingetragen (8388608). Jetzt scheint alles zu funktionieren.

    Ist das so richtig ?

     
  • eschwellinger

    eschwellinger - 2019-12-28

    Hi,
    also einfacher gehts wenn du es in

    /etc/CODESYSControl_User.cfg
    einstellst:
    Beispiel:

    [SysTask]
    StackSize=0x512000

    Habe aber noch nicht verstanden warum du es überhaupt machen musst...
    Grüße
    Edwin

     
  • gnotoix - 2019-12-29

    Hallo Mr. Schwellinger,

    der Fehler wird bereits beim Compilieren angezeigt - zu einem Zeitpunkt also, wo es noch gar keine Verbindung zur RTE gibt. Trotz dieser Logik habe ich Ihren Vorschlag getestet, doch es half nichts.

    Das Problem ist grundsätzlicher Natur und ich habe es nicht eilig, denn ich könnte die Aufgabe wie bisher mit Semaphoren lösen. Das erscheint mir jedoch bei Variablen in Visualisierungen als recht umständlich. Tasklokale Variablenlisten werden in der F1-Hilfe für Multicore-Systeme angepriesen, um dort zykluskonsistent Variablen über mehrere Tasks hinweg auszutauschen, wobei nur eine Task das Schreibrecht hat - sofern ich das richtig verstanden habe. Und genau das möchte ich mit meinem Raspberry mit MC-Lizenz einfach mal ausprobieren.

    Abgesehen von diesem Compiler-Error fehlt mir bislang das Wissen bzw. eine tiefergehende Dokumentation der Raspberry-RTE und deren Konfigurationsmöglichkeiten. Ebensowenig besitze ich das CODESYS Static Analysis Tool. Ich denke, es geht auch gar nicht um die absolute Stack-Größe, sonder um einen Maximalwert für den Compiler, richtig Und warum ist diese Obergrenze nicht schon in der Gerätebeschreibungsdatei vorgegeben ? Viele interessante Fragen, aber ehrlich gesagt möchte ich Ihre freundliche Hilfe nicht überstrapazieren.

    Einen Guten Rutsch in Neue Jahr wünscht Ihnen
    G. Nennemann

     

Log in to post a comment.