Forum: Mikrocontroller und Digitale Elektronik IAR startup code


von godlyblade (Gast)


Lesenswert?

Hallo,

Ich verwende z.Z. die IAR Embedded Workbench IDE V 7.40

Kann mir jemand sagen, wie man bei der IAR Embedded Workbench die 
startup Dateien für einen Kinetis uC automatisch einbinden kann? Nachdem 
ich ein C Projekt für meinen Controller (MK10DX128VLH7) angelegt habe, 
erscheint lediglich eine "nackte" main() Funktion. Diese enthält 
keinerlei Include Dateinen wie z.B. startup.h oder eine Interrupt Vektor 
Tabelle. Gibt es eine einfache Möglichkeit diese Dateien zu integrieren? 
Das sollte doch eigentlich ein Standartproblem prozessor- und 
fabrikatsübergreifend sein?!



Vielen Dank für eure Hilfe!

von Maxx (Gast)


Lesenswert?

Was sollte der Startup code auch in main?
Er wird vor der Main gebarucht.

Bei der EWARM findest du bei Project settings -> Linker die Runtime 
Library Configuration und Default Program Entry (default: 
__iar_program_start)

Das ist der Startup, der sich um die grundsätzliche Einrichtung 
(Segmente kopieren, pointer setzen, etc) kümmert. Danach wird deine Main 
aufgerufen wenn alles schön läuft.

In dem Linker-Script sollten auch Interrupt Vektoren schon auftauchen, 
die, sollte dein Programm sie nicht überschreiben benutzt werden (weak 
link) Einfach die Interrupt Funktion mit diesen vorbereiteten Namen an 
der Stelle definieren, wie du sie brauchst und gut ist.

von godlyblade (Gast)


Lesenswert?

Hi danke für die Antwort!

Ich bin deiner Beschreibung gefolgt und konnte die Daten nachvollziehen. 
Jedoch waren diese Einstellungen bereits als "default Einstellungen" 
aktiviert. Muss ich die dort angegebenen Daten denn niergendwo 
includieren? Das kommt mir etwas komische vor...

p.s. Das Problem äußert sich übrigens beim debuggen. Sobald ich ein 
miniatur Programm auf den Controller flashe und dann versuche zu 
debuggen, erreiche ich meine main Funktion schon gar nicht. Vorher 
bricht der Debugger ab und macht einen reset.


Danke!

von Maxx (Gast)


Lesenswert?

Dann schalte mal unter Properties -> Debugger -> Setup das Run To Main 
aus und steppe durch was passiert.

von godlyblade (Gast)


Lesenswert?

Es folgt das gleiche Phänomen... ein paar Steps funktionieren, bis das 
ganze abbricht und resettet...

von Maxx (Gast)


Lesenswert?

Es ändert natürlich nichts im Ablauf des Programms, aber du siehst nun 
wo es abbricht / resettet und den dann so erkannten Fehler beseitigen. 
(irgendwelche Zugriffe ausserhalb des Speichers? Sprung nach 0? etc)

Bricht es immer woanders ab, würd ich die HW mal prüfen.

von Lothar (Gast)


Lesenswert?

godlyblade schrieb:
> Es folgt das gleiche Phänomen... ein paar Steps funktionieren, bis das
> ganze abbricht und resettet...

Watchdog?

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.