Forum: Mikrocontroller und Digitale Elektronik Nach umstieg von RAM auf Flash gehen die Interrupts nicht mehr


von Star K. (starkeeper)


Lesenswert?

Hi,
ich arbeite hier an einem STR710, das ist ein ARM7. Auf meinem Board ist 
ein externes RAM untergebracht. In diesem habe ich bisher immer den Code 
geladen und debuggt.
Nun ist eigentlich alles soweit fertig, dass ich umsteigen möchte auf 
das Flash. Dazu habe ich das Linker-file angepasst, sodass die 
Code-Section nun im Flash liegt. Außerdem habe ich noch eine weitere 
Section angelegt für das externe RAM.

Das ganz sieht jetzt so aus:
1
MEMORY
2
{
3
  CODE (rx) : ORIGIN = 0x40000000, LENGTH = 0x00040000
4
  DATA (rw) : ORIGIN = 0x20000000, LENGTH = 0x00010000
5
  EXTDATA (rw) : ORIGIN = 0x60000000, LENGTH = 0x00400000
6
}

In den Bereich EXTDATA habe ich nur die Section .bss geschoben. Also die 
nicht zu initialisierenden Daten. Alles andere ist im Flash oder dem 
internen RAM.

Das programm kann ich mit OpenOCD auch flashen und nach einem reset 
ausführen. Scheinbar funktionieren die Interrupts aber nicht.
Die UART funktioniert (ohne Interrupts) aber sonst geht eigentlich 
nichts. Sobald irgendetwas einen Interrupt auslöst ist Schluß. Es gibt 
keine Reaktion mehr, der Controller resettet sich aber auch nicht.

Hat jemand eine Ahnung was da schief geht? hat jemand nen Plan, wie ich 
mit OpenOCD im Flash debuggen kann?

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Genau kann ichs nicht sagen, aber ich würde vermuten, dass die 
Interrupts noch immer ins RAM zeigen? Dort ist aber kein Code und so 
hängt sich das Programm auf?

Ich hab von ARM noch nicht so viel Ahnung, bin noch am einarbeiten aber 
das klingt für mich plausibel ;)

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.