Forum: Mikrocontroller und Digitale Elektronik Linker Problem?


von ARMer Kerl (Gast)


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?

von Essex (Gast)


Lesenswert?

Der Fehler licht ganz einfach beim Relais. Wenn das Blinkrelais kaputtet 
ist, dann blinkt der Blinker nicht mehr.

von Agdschn (Gast)


Lesenswert?

jo oder ne Sicherung is hin, bzw. der Marder war dran.

von Thomas (Gast)


Lesenswert?

Das liegt bestimmt an den Sonnenstürmen.

von ARMer Kerl (Gast)


Lesenswert?

Es ist nicht wetterabhängig, und mit dem Blinker hat'a auch nix zu tun.

Hat jemand bitte vielleicht noch einen vernünftigen Vorschlag?

von Rolf M. (rmagnus)


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.

von ARMer Kerl (Gast)


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...

von Rangi J. (rangi)


Lesenswert?

vllt ein allign problem?

von ARMer Kerl (Gast)


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?

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
Noch kein Account? Hier anmelden.