mikrocontroller.net

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


Autor: Andy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.