Hallo Forengemeinde, ich habe ein Problem beim Programmieren eines ATxmega192A3, bei dem ich langsam echt verzweifle. Ich habe ein Programm mit dem Atmel Studio 6.0-1996 Service Pack 2 geschrieben und kann dieses auch direkt aus der Programmierumgebung heraus, über den angeschlossenen STK600, in den ATxmega192A3 flashen. Das Programm läuft dann anschließend genauso wie erwartet. Im Release Ordner befindet sich dann auch das vom Atmel Studio erzeugte HEX-File. Wenn ich dieses HEX-File jedoch per Kommandozeile mit dem Tool „stk600.exe“ manuell in den Controller flashe, startet das Programm zwar normal aber bei einer bestimmten Funktion, kommt es dann zu einem Absturz. Der Komandozeilenaufruf lautet: stk600.exe –cUSB –ut3.3 –ua3.3 –ub3.3 –dATxmega192a3 –md –e –s –pf –vf -if{release.hex} Ich habe schon alles, jedenfalls das was denke, überprüft, aber es gibt nichts wo ich einen Unterschied finden kann. Die Fuse- und Lock-Bits sind in beiden Fällen identisch. Selbst das aus dem Controller ausgelesene HEX-File ist in beiden Methoden komplett identisch. Wo liegt der Fehler bzw. Unterschied? Ich hoffe Ihr könnt mir helfen.....
OK, habe den Fehler nun gefunden.
Natürlich lag es zwischen den Ohren.
Bei der Initialisierung von EEPROM-Variablen habe ich diesen schon einen
Wert zugewiesen.
>> uint16_t u16_ee_variable EEMEM = 0x1234;
Das Programmieren aus dem Atmel-Studio heraus, welches per ELF-File
geschieht, hat diese Variable im EEPROM des Controllers dann
entsprechend angelegt und den Wert zugewiesen.
Da ich später die Application als HEX-File per Kommandozeile
programmieren möchte, habe ich eine EEPROM-Initialroutine erzeugt, die
meine EEPROM-Variablem beim ersten Start entsprechend setzen soll.
Ein Programmierfehler hatte dies aber an bestimmten Variablen
unterbunden, wodurch die Application falsche Werte bekam und abstürzte.
Damit mir dieser Fehler nicht noch mal vorkommt, werde ich wohl am
besten keine EEPROM-Variablen gleichzeitig anlegen und initialisieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.