STM32F7-Disco + CubeMX + OpenSTM32 Semihosting?!

Gast #4354963
Lesenswert?
• ▲
▼
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ß
#4355047
Lesenswert?
• ▲
▼
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.
#4361852
Lesenswert?
• ▲
▼
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 :)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.