Workshop/Schulung Cortex M3, Keil

OP (Firma: AP) #3773921
Lesenswert?

Hallo,

könnt ihr mir eine Schulung oder Workshop zu Cortex M3 oder Keil 
Compiler empfehlen? Ich habe bis jetzt 8 Jahre C/C++ programmiert, aber 
nur für PC und DSP. Seit über einem Jahr programmiere ich für STM32F407. 
Am Anfang war habe ich von meinen Kollegen viel gelernt, aber jetzt 
haben wir z.B. Probleme mit stack overflow und hier können sie nicht 
mehr helfen. Mir fehlt einerseits das basis Wissen, anderseits das 
Experten Wissen und Erfahrung.

Grüsse,
Marcin
Gast #3774061
Lesenswert?

Ja ja

Stack probleme in Verbindung mit multitasking im embededberich macht 
laune. vorallem dann wenn sie sich noch sporadisch auftreten.

Wobei was landet auf dem Stack und was nicht, ist eigentlich Grundlage. 
Nur kümmert sich am PC keiner darum da der Stack dynamisch verwaltet 
wird und bis zu 2GB und mehr anwachsen darf. Was also am PC absolut kein 
Problem darstellt macht im Embedded ganz schnell aua. (z.B. in einer 
Funktion als Hilfvariable ein grosse Arrays deklarieren)

gruss
Gast #3774115
Lesenswert?

Im Workshop bekommst du wahrscheinlich auch nicht die passende Lösung 
für dein Problem, höchstens den Ansatz vermittelt, wie du ihm auf die 
Schliche kommen könntest - das kannst du hier im Forum kostenlos haben 
=)

Solche Workshops dienen hauptsächlich dazu, mit der IDE und dem Compiler 
vertraut zu machen und nicht um Probleme zu lokalisieren - dafür gibt's 
zwar auch spezielle Firmen bzw deren Workshops (welche i.d.R. auch 
zeigen, wie man bestimmte Probleme vermeidet), aber das kostet 
vermutlich n bisschen mehr als n normaler Workshop...

Zu deinem konkreten Problem: Es wäre hilfreich, wenn du so viel wie 
möglich über das Programm etc schilderst.
Desweiteren wäre es interessant zu wissen, ob man es reproduzieren kann 
oder ob es nur sporadisch auftritt und ggf. ob es immer bei 
gleichen/ähnlichen Funktionen auftritt.
Dann wär's noch gut zu wissen, ob dein Stack einfach zu klein ist (ja, 
auch das kam schon vor), weil zuviele calls etc gemacht wurden.
Hmmm... ansonsten bietet es sich manchmal an, diverse Funktionen erstmal 
aus dem Programm zu nehmen, um zu schauen, ob eben diese Funktionen die 
Übeltäter sind (vielleicht verbiegt eine Funktion einfach die 
Rücksprungadresse).
Was gibt's noch? Ah, ich hab mal bei einem Programm im Sekundentakt den 
Stackpointer ausgeben lassen, um zu sehen, ob das Problem erst nach 
einer gewissen Laufzeit auftritt.

Ralf
Gast #3774128
Lesenswert?

Was mag der embeded stack nicht:
- Grosse Arrays in Funktionen
- Nicht oder falsch behandelte Arrayindexe zB -1
- Recursieve Implementierungen
- Zu hohe Interrupt last, Funktion wird vor eintritt des nächsten 
Ereignisses nicht abgearbeitet.
...
Gast #3774230
Lesenswert?

Marcin Rosner schrieb:
> Probleme mit stack overflow

Unbedingt zu empfehlen das Buch:

Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors

Optimale Lösung wäre die MMU zu nutzen, um stack overflow abzufangen, 
und dann einen memory fault handler zu nutzen, um rauszufinden, was das 
Problem war. Außerdem mindestens 2 Stacks nutzen: PSP für tasks, MSP für 
das Hauptprogramm. Bei größerem Hauptprogramm eventuell eine Library 
machen und die Funktionen im SVC laufen lassen.

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