Linker Problem?

Gast #2597542
Lesenswert?

Hallo,

ich habe Probleme mit meinem Atmel SAM3U (ARM Cortex M-3, gcc 
arm-none-eabi):
Ich habe eine funktionierende Software, mit dem ich den ARM flashe, 
alles läuft, alles gut.
Dann ändere ich irgendwo im Programm eine Kleinigkeit (fernab vom 
Startup-Code, manchmal nur eine LED an/aus) und Peng, nix geht mehr: 
nicht mal der externe Quartz läuft an.

Was passiert da? Macht der Linker da was falsch, so dass der 
Programmzeiger zu Beginn gleich im Nichts landet?
#2597686
Lesenswert?

Sobald du eine vernünftige Fehlerbeschreibung gibst...
Bisher weiß man nur, daß an deinem ARM irgendwas nicht mehr geht, wenn 
du irgendwo irgendwas änderst. Ein passender Rat wäre: Dann änder halt 
nix. ;-)
Woran du erkennst, daß der Quarz nicht mehr anschwingt, bleibt auch 
unbekannt. Da der in der Regel auch nicht vom Programm abhängt, ist es 
auch unwahrscheinlich, daß deine Änderung am Programm sowas auslöst.
Gast #2600280
Lesenswert?

Das ist ja das fatale:
Bei einigen Änderungen, die fernab vom Start-up Code sind, geht 
plötzlich gar nichts mehr.

Der Original Atmel Beispiel-Code beginnt damit, wait states für Flash 
Zugriff auf 2 zu setzen, dann wird der Watchdog ausgeschaltet, dann 
werden die externen Oszillatoren gestartet (32k / 12MHz), dann werden 
die Variablen in den RAM kopiert / initialisiert. Dann erst geht's in 
die Main().
Genau das habe ich auch so übernommen.

Alle funtkioniert wunderbar, nur bewirken kleinste Änderungen im Code, 
dass eben nicht mal mehr der externe Oscillator angeworfen wird (was ich 
mit Hilfe eines Oszis rausfinde). Das Programm hängt also nicht 
irgendwo, sondern springt schon gleich zu Beginn ins Nirvana. Deswegen 
meine Vermutung ob des Linker Problems.

Ich kann das leider nur so allgemein beschreiben, da dieser Fehler 
unabhängig von der Art der Programmänderung auftaucht.
Beispiel: ich ändere was an der UART-Ausgabe, peng, nix geht mehr.
Dann schiebe ich irgendwo in den Programmstart eine LED-an Zeile um zu 
sehen wo er hängt, plötzlich geht's wieder...
Gast #2600518
Lesenswert?

Vielleicht habe ich den Fehler gefunden:

Der SAM3U4 besitzt 2 SRAM Bänke (SRAM0: 32kB, SRAM1: 16kB), und der 
Stack Start _estack steht am Ende der ersten SRAM Bank SRAM0.
Wenn ich nun viel SRAM benötige, könnte somit _estack übergebügelt 
werden?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren