STM32F10x mit Eclipse, yagarto (GCC) und J-Link (GDB)

Gast #1537223
Lesenswert?

Hallo Zusammen,

ich arbeite mit einem Eval-Board von ST (STM3210E-Eval). Seit einigen 
Tagen versuche ich die neue Lib von ST (ARM-based 32-bit MCU STM32F10xxx 
standard peripheral library Version 3.1.2 mit CMSIS) zum Laufen zu 
bekommen. Beim Aufsetzen bin ich davon ausgegangen, dass es aufgrund der 
recht ausführlichen Beschreibung von ST nicht schwer werden würde. Da 
habe ich mich getäuscht...
Ich versuche mich am GPIO-Beispiel zum toggeln von LEDs. Meine 
Entwicklungsumgebung (siehe Betreff) kompiliert und linkt auch alles. 
Das makefile ist im Anhang zu finden.
Danach lade ich das Programm mittels J-Link-GDB-Server auf den Rechner 
(das Script dazu und die Konsolenausgabe ist ebenfalls im Anhang zu 
finden).

Hiernach komme ich nicht mehr weiter. Wie im "GDB-Script_Konsole.txt" zu 
sehen ist, wird ein "SIGTRAP" empfangen und es kann nicht weiter 
gedebuggt werden.
Interessanterweise läuft ein älteres Projekt mit der alten Lib von ST 
(ARM-based 32-bit MCU STM32F10xxx standard peripheral library Version 
2.0.3) auf gleicher Hardware mit der gleichen Toolchain.
Mittlerweile gehe ich davon aus, dass eine Startup-Datei zur 
Vektor-Initialisierung fehlt. Diese wird aber in der Anleitung zum 
Beispiel von ST nicht erwähnt. Im CMSIS-Pfad ist eine 
"startup_stm32f10x_hd.s" zu finden. Allerdings kommt "make" damit nicht 
zurecht. Hat jemand eine solche Datei als *.c-Datei und würde sie zur 
Verfügung stellen?

Oder denke ich in die falsche Richtung?

Ich hoffe auf Unterstützung.

Guten Rutsch,
Arne
Angehängte Dateien:
#1537350
Lesenswert?

Ja dir fehlt auf jedenfall die Startup-Datei. In der Lib 3.0.0 war sie 
noch in C. Hab sie angehangen. Die Unterschiede zur Assemblerversion 
kenne ich nicht.

Bin mir nicht sicher wie das mit den IRQ-Vektoren ist, wenn du sie ins 
Ram packst. Ob das so ohne weiteres läuft? Hab es noch nicht probiert 
und die Funktion mit den Vektoren nicht im Kopf.
Angehängte Dateien:
Gast #1538484
Lesenswert?

Hallo 900ss,

vielen Dank für das startup-File. Damit bin ich wieder einen Schritt 
weiter.
Du hast nicht zufällig auch noch das dazu passende Linker Skript? Bin 
gerade dabei mich einzulesen, wie man die Linker Skripts anpasst. Das 
ist allerdings für einen GNU-Anfänger nicht besonders einfach.

Ich habe hier eine Anleitung gefunden (Info für alle, die mit einem 
ähnlichen Problem wie ich kämpfen...):
"Building Bare-Metal ARM Systems with GNU: Part 1 - Getting Started" 
http://www.embedded.com/design/opensource/200000632?_requestid=556334

Gruß
Arne
#1538542
Lesenswert?

Wieso kommt make nicht mit der Startup zurecht?
Hast du die Startup aus dem GCC Verzeichnis verwendet? Bei mir gibt es 
keine Probleme damit.

In deiner Make file fehlt bei ASFLAGS das "-mthumb" vielleicht liegts ja 
daran.

Ein Linker Skript ist übrigends im "Project Template/Ride" Verzeichnis 
zu finden. Das musst du nur noch an deinen Controller anpassen.
#1538544
Lesenswert?

Arne schrieb:
> Du hast nicht zufällig auch noch das dazu passende Linker Skript?

Ist angehangen.

> gerade dabei mich einzulesen, wie man die Linker Skripts anpasst. Das
> ist allerdings für einen GNU-Anfänger nicht besonders einfach.

Stimmt. :-)

Hilfe:
- Linker Manual
- Suchen hier im Forum (es sind einige Threads zum Thema)
- Beispiellinkerscripts zu Boards (Controller), die man evtl. kennt.
  (z.B. AVR)
- Google
- Probieren

Arne schrieb:
> Building Bare-Metal ARM Systems with GNU: Part 1 - Getting Started"

Im Anhang auch ein PDF, was alle Parts dazu enthält.
Angehängte Dateien:
#1610242
Lesenswert?

Moin,

voweg ein dickes Danke schön an alle, die hier gepostet haben!

Ich habe die Ansätze von Arne weiter verfolgt und auch schon einige 
Zwischenerfolge erzielt:
Das Programm lässt sich sowohl auf dem SRAM debuggen (eher unwichtig) 
als auch auf den Flash-Speicher schreiben und ausführen :D . Das Flashen 
mache ich mit dem j-link JTAG von SEGGER mit Zusatzlizenz und 
zugehöriger Software J-Flash-ARM.
Es gibt allerdings noch das Problem, dass ich das Programm immer mit 
"Start Application" manuell anschubsen muss. Danach läuft es 
selbstständig bis ein Reset erfolgt.
An dem Punkt weiss ich im Moment noch nicht weiter.
Mein Lösungsansatz war vorerst die Firmware von ST zu installieren und 
anschliessend das Blinkerprogramm erneut zu flashen. Problem hier: Mein 
PC erkennt das Board nicht über direkten USB-Anschluss und das 
Flash-Programm unterstützt das Format nicht. :( Die Dateien hab ich mit 
angehängt und User Manual dazu ist dieses hier: 
http://www.st.com/stonline/products/literature/um/14703.pdf

An diesem Punkt werd ich jetzt aber erst einmal weiterarbeiten. Wer dazu 
hilfreiche Hinweise hat: Immer sehr gerne genommen :)

An makefile und startup habe ich effektiv nicht viel geändert. ABER: 
Durch meine Experimente in den Dateien sehen diese im Moment nicht sehr 
übersichtlich aus. Ich bearbeite diese noch und poste sie anschliessend.

Beste Grüße
#1613105
Lesenswert?

Moin zusammen,

endlich läuft alles wie gewollt :D . Jetzt muss ich nur noch mal genau 
gucken woran es genau lag. Im Moment kann ich noch nicht genau 
beantworten warum, aber es läuft.
Ich hatte mir noch das "GNU ARM Eclipse plugin" 
Beitrag "GNUARM Eclipse Plugin" installiert.

Einen abschliessenden Bericht mit komplettem Projekt und allen 
verwendeten Ressourcen folgt dann spätestens am Montag!

Beste Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren