Forum: Mikrocontroller und Digitale Elektronik STM32F7-Disco + CubeMX + OpenSTM32 Semihosting?!


von Ralf (Gast)


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ß

von hp-freund (Gast)


Lesenswert?

http://www.openstm32.org/forumthread164

Ich habe es nicht selbst getestet, aber schau mal ab:
Okey, Dokey, I have this working.

von Steffen R. (steffen_rose)


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.

von Beitragstitel (Gast)


Lesenswert?

Google: Serial Wire Output, Serial Wire Viewer

von Ben W. (ben_w)


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 :)

von Chuoi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.