Forum: Mikrocontroller und Digitale Elektronik STM32 Projekte für gcc + make / Portierung von IAR


von Sven (Gast)


Lesenswert?

Hallo,

ich bin noch relativ neu in der ARM Welt und versuche gerade, ein 
Beispielprojekt von ST (in-application-programming over ethernet) zum 
Laufen zu kriegen.
Allerdings basieren alle ST Beispiele auf IAR, ich möchte aber die 
gcc+make Toolchain nutzen (möglichst ohne Eclipse).

Mittlerweile compiliert und linkt das ganze, aber vermutlich fehlt der 
Startup Code. Die Interrupt Vector Table hab ich manuell eingehängt, der 
Stack wird also initialisiert, er hat den Einsprungpunkt in main() und 
die ISR für den SysTick.

Trotzdem hängt sich der Code kurz nach dem Start auf. Die 
Initialisierung der Clocks, WaitStates etc. funktioniert.

Aber wo werden z.B. Variablen initialisiert, wenn bei deren Definition 
ein Initwert angegeben ist? Der Original Assemblercode von IAR springt 
im Resetvector in __main. Ich springe in main().

Ist das denn unüblich, mit reinem gcc und make zu arbeiten, ganz ohne 
IDE? Ich tue mich schwer, Beispiele zu finden.

Ich würde mich über Links zu Beispielen freuen, und natürlich über 
konkrete Hinweise, was mein Code im Startup alles tun muss, was 
normalerweise von IAR hinter den Kulissen erledigt wird.

Danke, Sven

von ReinerL (Gast)


Lesenswert?

Hi,
hatte auch so meine Startschwierigkeiten aber mit dem Beispiel von 
Martin Thomas hatte ich eine m.E. ausgezeichnete Vorlage.

http://gandalf.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32

von Sven (Gast)


Lesenswert?

Danke, werd ich mir näher ansehen.
Was ich gerade gefunden habe und auch interessant klingt:

http://www.eetimes.com/design/embedded/4007119/Building-Bare-Metal-ARM-Systems-with-GNU-Part-1--Getting-Started

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.