-
-
Erfahrener Benutzer
Begeisterter Techniker
Danke für die Antwort. Das die Funktion nichts macht ist eigentlich nebensächlich. Da es egal ist welche funktion ich Aufrufe und ich kann halt im Debugger sehen, dass er irgendwie abstürzt, da er die Funktion (egal welche ich nehme) nicht ausführt. Das mit dem Stack ist auch noch sehr eigenartig. Ich hab etwas geforscht und hab iwo gelesen, dass es an mangelndem startup code liegt. Ich hab daraufhin mal den startup code aus einem Beispielprogramm kopiert. Aber geholfen hat das auch nich. Hat da vielleicht nochmal jemand ne Idee?
mfg
Erik
-
Erfahrener Benutzer
Begeisterter Techniker
So inzwischen bin ich mir sicher, dass das Problem mit dem Programmaufruf nur durch das Stackproblem bedingt ist. Ich hab ein wenig das Datenblatt durchforstet und bin auf das CONTROL register gestoßen bei dem man zwischen dem mainstack und dem process stack wählen kann. Nun stellt sich mir die Frage wo genau liegt der unterschied. Und Handler und Thread mode ist mir auch noch ein wenig suspekt. Und wie und wo initialisiere ich am besten den Stackpointer?
-
Schau in den Startup Code und in dein Linker command-file. Nach einem reset wird der Stackpointer mit dem Wort initialisiert, das an Adresse 0 im Flash steht. Danach wird der Program Counter mit dem 2. Wort (ab Adresse 4) geladen. An dieser Adresse sollte sich der Reset-Handler befinden. Der Reset Handler initialisiert die Variablen und ruft dann irgendwann main() auf.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen