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
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.
Gast
#3774039
Frag' doch mal hier nach: http://www.microconsult.de/index.shtml Oder direkt bei Keil (gehören ja jetzt ARM)
Gast
#3774061
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
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
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
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.
Gast
#3774329
Cortex M3 mit MMU? bist du dir da sicher?
Gast
#3774341
Er meint bestimmt die MPU.
Es ist ein Cortex M4 !
Gast
#3774434
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.