Forum: Compiler & IDEs LPC2129 Linker- oder Stack-Problem?


von Andy (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Ich bin gerade von AVR auf ARM umgestiegen und hänge prompt an einem 
extrem doofen Problem.
Im Anhang habe ich mein Prog (WinARM, PN). Nach dem Start ruft das 
Hauptprogramm SetupProcessor() auf, um den Prozessor zu initialisieren.
Die 3 LEDs und die for(;;)-Schleife verwende ich zum Testen, wie weit 
das Prog überhaupt läuft.
Da, wo ich im Code /*geht nicht mehr*/ vermerkt habe, geht gar keine LED 
an. Einen Reset scheint der Prozessor nicht zu machen, zumindest ist der 
Booloader beim setzen des BSL-Jumpers weiterhin nicht erreichbar (erst 
wieder nach einen externen Reset)

Ich schätze mal, für die Profis unter Euch ist da Problem total trivial 
- vom falschen Linkerskript (ich habe schon verschiedene aus den 
ARM-Beispielen probiert, immer das gleiche Symptom) bis zum einfachen 
Denkfehler.
Leider hat Googlen und eine Suche hier im Forum mich nicht 
weitergebracht (oder habe ich etwa das entscheidende übersehen?)
Wäre schön, wenn mir einen einen Tipp geben könnte.

Vielen Dank!
Andy

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Es gibt in dem Projekt keinen startup-code. Das sollte zuerst korrigiert 
werden, ansonsten fehlt zu viel (exeptions-vectoren, data und bss init, 
stack-setup für die verschiedenen modi, sprung zu main()). PLLCFG sieht 
nicht ganz richtig aus, aber auch nicht so genau geschaut. Ich habe bei 
WinARM doch ein paar Beispiele für LPC2129 beigelegt, warum nicht 
erstmal damit "herumspielen"?

Martin Thomas

von Andy (Gast)


Lesenswert?

Danke für den Hinweis und vor allem für die schnelle Antwort!!!

Die Beispiele von WinARM hatte ich mich angeschaut (daher auch die 
Linkerskripte).
Den Startup-Code werde ich mal von einem Beispiel übernehmen und 
ausprobieren. Das mit crt0.s hatte ich nicht so richtig kapiert - auch 
wenn es plötzlich logisch erscheint (bei WinAVR hatte ich das nie 
gebraucht)
Im Nachhinein ist es schon verblüffend, daß main() überhaupt ausgeführt 
wurde...   :(

Die PLL-Konfiguration habe ich aus dem GCC-Tutorial und im Datenblatt 
nachgeschaut. Das Quarz läuft mit 25MHz, die CPU sollte mit 50 laufen. 
Das checke ich aber auch nochmal nach.

Nochmals herzlichen Dank!!!
Andy

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.