Forum: Mikrocontroller und Digitale Elektronik Workshop/Schulung Cortex M3, Keil


von Marcin R. (Firma: AP) (marcin)


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

von Steffen R. (steffen_rose)


Lesenswert?

Cortex-M4

Die Kurse, die ich so kenne sind zumeist Einsteigerkurse. Ob diese Dir 
bei Fragen weiterhelfen, die Du von deinen Kollegen nicht beantwortet 
bekommst, glaube ich nicht.

Die Manuals und Application notes helfen nicht weiter?
Konkrete Fragen werden hier im Forum beantwortet.

von GB (Gast)


Lesenswert?

Frag' doch mal hier nach:
http://www.microconsult.de/index.shtml

Oder direkt bei Keil (gehören ja jetzt ARM)

von 123 (Gast)


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

von Ralf (Gast)


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

von 123 (Gast)


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.
...

von Lothar (Gast)


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.

von 123 (Gast)


Lesenswert?

Cortex M3 mit MMU? bist du dir da sicher?

von Programmierer (Gast)


Lesenswert?

Er meint bestimmt die MPU.

von Jan K. (jan_k)


Lesenswert?

Es ist ein Cortex M4 !

von Lothar (Gast)


Lesenswert?

Programmierer schrieb:
> Er meint bestimmt die MPU.

Richtig.

Jan K. schrieb:
> Es ist ein Cortex M4

Auch der hat "nur" eine MPU. MPU/MMU ist aber für stack overflow 
protection egal.

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.