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.
Frag' doch mal hier nach: http://www.microconsult.de/index.shtml Oder direkt bei Keil (gehören ja jetzt ARM)
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
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
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. ...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.