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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren