Linker Problem?

Gast #2597542
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.