Hallo Leute, ich habe mir gestern die OpenSTM32 Workbench mal runtergeladen und ein bisschen angefangen mit CubeMX und dem F7-Disco Board zu spielen. Bei CooCox gab es ja die Möglichkeit von Semihosting. Wirklich hilfreiches dazu finde ich nicht. Weiß jemand wie man das aktiviert? ITM_SendChar habe ich auch schon probiert, aber zeigt nix an in der Eclipse Console. Danke & Gruß
http://www.openstm32.org/forumthread164 Ich habe es nicht selbst getestet, aber schau mal ab: Okey, Dokey, I have this working.
Bei openOCD bzw. gdb wird in den mir bekannten Fällen das Semihosting über einen eincompilierten Breakpunkt ausgelöst, welcher dann den Debugger veranlasst einen Speicherbereich zu lesen. ITM_SendChar() gibt etwas über den SWD port aus. Dies beherrschen nach meinem Wissensstand bisher nur speziell angepasste Debugger.
Semihosting != ITM_Sendchar() ITM_Sendchar() nutzt die ITM periepherie um daten zu senden (ähnlich wie ein UART nur viel besser :) ) Dafür brauchst du einen SWD Debugger (JTAG kann dies nicht). Der ST-Link auf dem STM32F7 Discovery kann dies zwar aber dafür müsstest du noch einen Pin vom F7 mit dem ST-Link verbinden. Ich glaube Out-of-the box ist dieser nicht verbunden. Außerdem brauchst du einen SWO viewer. Z.B. openocd oder das eigene ST-Link Utility. Du kannst ITM_Sendchar direkt aufrufen oder du überschreibst die "_write()" methode aus der system lib, dann werden alle printf aufrufe an ITM gesendet Semihosting nutzt die Debugger peripherie und systemcalls. Es ist bidirektional. Im Grunde machst du bei jedem printf eines semihosting aufrufs einen kompletten break, d.h. die CPU wird angehalten, anschließend werden systemcalls an den PC gesendet oder SystemCalls vom PC empfangen und verarbeitet. Also im Beispiel des printf wird es nicht auf dem F7 ausgeführt sondern auf deinem PC! Achtung dies bedeutet auch das theoretisch ein STM32 mit semihosting mal eben deine festplatte formatieren könnte :) oder einfach mal ein paar programme auf dem PC starten :)
Tobias Fonfara / Es freut mich, dass ich Ihnen helfen knonte. Vielleicht sind die anderen Tutorials im Linux-Bereich auch interessant ffcr Sie?
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.