Wie auch schon in anderen Artikeln erwähnt, wird der gesamte Funktionsumfang des Fahrzeuges durch ein Matlab Simulink-Modell realisiert. Dieser wird auf einen Arm7-Mikrocontroller (LPC2388) portiert. Durch ständige Weiterentwicklungen/Verbesserungen wächst der erstellte Programmcode rasch an, so dass auf den ersten Blick unlogische Zustände (insbesondere der Stellsignale) beim Testen des Systems auftraten. Im Allgemeinen kann dies viele Ursachen haben. Fehler im Simulink-Modell, Fehler bei der Einbindung des Simulink C-Codes in das bestehende Rahmenprogramm, falsche Ansteuerung der Aktorik usw.
Ein bedeutendes Problem konnte auf ein Merkmal des Mikrocontroller eingegrenzt werden.
Das Problem
Folgendes wurde beim Debuggen des Controllers beobachtet:
Der Wert mehrerer Variablen ändert sich von einem zum nächsten Debug-Schritt, ohne das in der entsprechenden Programmzeile (s. Programmzeiger) ein Zugriff auf die dargestellten Variablen stattfindet.
Die Lösung
Durch viele Tests hat sich herausgestellt, dass der Userstack des Arm7-Controllers für den im Laufe der Zeit größer gewordenen Simulink-Programmcode zu klein wurde. Eine Vergrößerung dessen im Startupscript behebt das Problem!
Folgende Programmzeile im Startupscript wurde verändert:
USR_Stack_Size EQU 0x00000500