Man so ne kacke. Da will man mal ausnahmsweise einen Hardfault im STM32 erzwingen und es klappt nicht! Schnell, ich brauche einen GoToHardfault() :>
Alternaria Solani ist die Hartfäule bei Kartoffeln -das will doch Niemand haben... :) MfG Paul
Ach man, die Frage war eigentlich erst gemeint :> Vielleicht sollte ich umformulieren und in n anderes Topic rein :>
Klasse. Ich habs geschafft in den Hardfaulthandler zu kommen. Keine Ahnung was ich gemacht habe. Allerdings komme ich nicht mehr raus.
Reginald L. schrieb: > Da will man mal ausnahmsweise einen Hardfault im STM32 erzwingen und es > klappt nicht! Trage im Linker-Script eine max. Größe für den Stack ein (z.B. 1k), und dann sorge dafür, dass dein Stack größer wird als die max. erlaubte größe. So funktioniert es zumidnestens beim Atmel SAM3X. Alternativ kannst du auch einfach den Stack überlaufen lassen mittels einer endlos rekursion. Dann solltest du auch im Hardfault landen ohne das Linker-Script anfassen zu müssen. Reginald L. schrieb: > Allerdings komme ich nicht mehr raus. "Wie" willst du denn wieder raus? Am einfachsten wäre es einen Watchdog anzustoßen.
Kaj G. schrieb: > Trage im Linker-Script eine max. Größe für den Stack ein Logisch! Danke :) Kaj G. schrieb: > "Wie" willst du denn wieder raus? Am einfachsten wäre es einen Watchdog > anzustoßen. Ach ich hab irgendwas gemacht und wusste nimmer was :>
Kaj G. schrieb: > Trage im Linker-Script eine max. Größe für den Stack ein (z.B. 1k), und > dann sorge dafür, dass dein Stack größer wird als die max. erlaubte > größe. So funktioniert es zumidnestens beim Atmel SAM3X. Wie soll der STM32 erkennen können, ob du deinen Stack gerade gekillt hast? Ja, es wird langfristig irgendwie/irgendwo zu einem schweren Fehler (wenn auch nicht zwingend einem Hard-Fault!) führen, wenn der Stack zu groß wird, aber garantiert ist das meines Wissens nach nicht. Es findet kein Vergleich von Stackaddresse und Speicherbereichen statt. (eventuell lässt sich da was mit der MMU machen aber das würde erst zu einem MMU-Fault führen) Laut Programming Manual des Cortex-M4 (welchem STM32 hast du?), gibt es zwei Gründe für einen Hard Fault: - Bus error on a vector read - Fault escalated to a hard fault (hier gibts nochmal mehr Möglichkeiten, siehe "Programming Manual" des Cortex)
Gerade zufälligerweise in einem anderen Thread ein Top GoToHardfault():
1 | void(*fail) (void); |
2 | fail = 0; |
3 | fail(); |
Funktioniert supi :>
LOL. Ja danke, der Code ist von mir. Eigentlich sollte der auch hier in den Thread, drüben passt er ja gar nicht... Das passiert, wenn man am Handy einen Thread liest, eine Antwort weiß und dann am Computer tippt^^ Freut mich, dass das funktioniert!
Reginald L. schrieb: > ja, ist klein und top, bussi ;D Bussi? Teufel, Teufel... :) Heißt das nicht "Busy"? MfG Paul
tja Paul, wenn man die eigene Suppenschüssel nicht hinter sich lässt können äußere Eindrücke verwirren. Namaste
Winfried J. schrieb: > tja Paul, > wenn man die eigene Suppenschüssel nicht hinter sich lässt können äußere > Eindrücke verwirren. Am Sonntag wurden Klöße gegessen. Die Suppenschüssel blieb im Schrank. MfG Paul
Wie kann einem eigentlich sooooo langweilig sein, und die Beiträge hier im Offtopic negativ bewerten :D Unbekannter - go! Search for life!
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.