Hallo, Kann man den RAM eines STM32F auslesen während der Mikrocontroller läuft? Oder kann man den Kern anhalten, und den RAM dann auslesen? Gruß.
Leute, ich weiß ja dass ihr euch damit alle spitze auskennt, für mich ist das aber absolutes Neuland, ich hab zwar schon mal STMs programmiert aber noch die von einem den RAM während er läuft ausgelesen, also bitte seid doch so nett und erklärt das ein bisschen mehr...
@Bastler: Sie wollen darauf hinaus, dass dein Controller eine JTAG Schnittstelle hat. Du kannst mit JTAG Debugger Hardware und entsprechenden Tools per JTAG Zugriff auf den RAM bekommen und kannst ihn auslesen und manipulieren. JTAG Debugger gibt's z.B. von der Firma Segger. Von denen bekommst du auch die Tools. Alternative gibt es Open Source Tools wie OpenOCD oder ähnliches.
Bastler schrieb: > ich hab zwar schon mal STMs programmiert Lass mich raten mit der Arduino IDE? Jeder ST-Link hat einen Debugger mit drin. Falls nicht schon vorhanden kauf dir ein Nucleo Board und lad dir bei ST Atollic oder die CubeIDE runter. Damit hast du für wenig Geld alles was du brauchst.
Bastler schrieb: > Kann man den RAM eines STM32F auslesen während der Mikrocontroller > läuft? Die Frage ist unsinnig gestellt. Wer ist "man"? Während der µC läuft, kann er natürlich jederzeit auf das RAM zugreifen. Und die meisten Programme tun das auch auf die eine oder andere Art. Wenn der µC (bzw. das auf ihm laufende Programm) kooperiert, dann kann er natürlich das RAM zur Laufzeit auslesen und z.B. über den UART ausleiten. Oder - um ein anderes Beispiel zu bringen - am USB ein /mass storage device/ implementieren und darüber den Zugriff auf das RAM erlauben. > Oder kann man den Kern anhalten, und den RAM dann auslesen? Die JTAG und SWD Schnittstellen sind zwar in erster Linie zum Programmieren und Debuggen gedacht, aber das beinhaltet auch Funktionen, um vom Host PC aus auf das RAM des µC zuzugreifen. Und ja, dazu muß i.d.R. der µC-Kern angehalten werden.
Kann mir vielleicht dann noch einer sagen ob und wenn ja, wie das mittels STlink V2 und dem STM32 Stlink Utility geht?
Mit ST-Link-Utility habe ich mich lange nicht beschäftigt. Mit der aktuellen Version 2.4 vom CubeProgrammer geht es. Der kann jetzt ein Programm direkt auf dem µC ausführen. Dazu gibt es: Run, Halt, Reset, Step ... Dabei kann auch der aktuelle RAM Inhalt gelesen werden. Es ist nicht mal der Quelltext erforderlich. Allerdings alles auf Registerebene. Wenn es um ein eigenes Projekt geht, ist es natürlich einfacher z.B. mit CubeIDE ein Projekt zu erstellen und anschliessend zu debuggen. Dabei ist die Live Darstellung von Variablen, Registern oder das Auslesen des RAM möglich.
Voraussetzung ist natürlich das du den ST-Link mit der SWD Schnittstelle verbindest. Du brauchst mindestens NRST, SWCLK, SWDIO, GND und Target Voltage (3,3V). SWO ist nicht notwendig, das ist eine unidirektionale serielle Schnittstelle für ein Terminal.
pegel schrieb: > Jedenfalls der China ST-Link V2 nicht. Jeder offizielle ST-Link hat den. Den China kram nutze ich nicht.
Ich glaube die Frage war eher "kann man RAM auslesen während der Cortex-M Core läuft". Das ist nicht selbstverständlich weil bei vielen Cores derselbige dafür angehalten werden muss. Beim Cortex-M gibt es aber einen Background Memory Access, sprich man kann über JTAG/SWD Speicher lesen/schreiben während der Core läuft. Damit kann man z.B. so lustige Sachen wie SEGGER RTT machen: https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/
Til S. schrieb: > Ich glaube die Frage war eher "kann man RAM auslesen während der > Cortex-M Core läuft". Das ist nicht selbstverständlich weil bei vielen > Cores derselbige dafür angehalten werden muss. Beim Cortex-M gibt es > aber einen Background Memory Access, sprich man kann über JTAG/SWD > Speicher lesen/schreiben während der Core läuft. Damit kann man z.B. so > lustige Sachen wie SEGGER RTT machen: > https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/ Achtung: Werbung eines Mitarbeiters.
Til S. schrieb: > Ich glaube die Frage war eher "kann man RAM auslesen während der > Cortex-M Core läuft". Das ist nicht selbstverständlich weil bei vielen > Cores derselbige dafür angehalten werden muss. Beim Cortex-M gibt es > aber einen Background Memory Access, sprich man kann über JTAG/SWD > Speicher lesen/schreiben während der Core läuft. Damit kann man z.B. so > lustige Sachen wie SEGGER RTT machen: > https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/ Achtung: Werbung eines Mitarbeiters bzw. Influencers.
Martin schrieb: > Achtung: Werbung eines Mitarbeiters bzw. Influencers. Ja, aber sachlich gesehen keinerlei Falschmeldung. Til S. schrieb: > "kann man RAM auslesen während der Cortex-M Core läuft" So hemdsärmelig wie der TO daherkommt ist ihm die Unterscheidung wohl noch gar nicht geläufig.
Und die Werbung gleich noch zwei Mal wiederholt. ;) Im Debug der CubeIDE (GDB Server) kann ich auch während das Programm läuft auf Speicher und Register zugreifen.
Geht natürlich auch mit der SWD-Schnittstelle (zwei Leitungen) vom STLink V2. Einfach einen GDB-Server (z.B. der 'EBlink' von EmBitz) installieren. Und dann halt über ein eigenes Programm entsprechende Debugger-Befehle übers Netzwerk zum GDB-Server absetzen. Klappt prima. Übertragungsraten hängen von vielen Dingen ab. Bei mir im Bereich von 50kb/s bis 150kb/s.
pegel schrieb: > Jedenfalls der China ST-Link V2 nicht. Doch das geht mit dem ST-Link V2 Clone problemlos. Läuft bei mir einwandfrei zusammen mit STM32CubeIDE. Die entsprechende Funktion heisst "Live Expressions". Hier ein Video wie einfach das geht: https://youtu.be/Nyml66k_Ppk
:
Bearbeitet durch User
pegel schrieb: > @ Johnny B. > > Es ging nicht um den Zugriff, sondern nur um das Reset für den STM32. Falsch; die Frage war: Bastler schrieb: > Kann man den RAM eines STM32F auslesen während der Mikrocontroller > läuft?
Johnny B. schrieb: > Falsch; Einen Beitrag darüber lesen war nicht möglich, oder? Deine Meinung sei dir gegönnt.
Martin schrieb: > Achtung: Werbung eines Mitarbeiters bzw. Influencers. Ich habe mein Ziel endlich erreicht! Mein Traumberuf, als ich ein 12 jähriges Mädchen war, war immer schon Influencer!!1! Ich mache gleich mal eine Instagram Story dazu... ;-).
Til S. schrieb: > Ich habe mein Ziel endlich erreicht! Ich verstehe auch nicht, warum sich manche hier so aufborsteln. Immerhin schreibst du in deinen Nick, daß du bei Segger arbeitest.
Segger kann ich mir leider nicht leisten, wegn dem einen Projekt, ein originaler STlink V2 muss reichen. Ich weiß was passiert wenn man den Chip anhält, er bleibt stehn (-: mit ihm aber auch wenn da was mit PWM gemacht wird, die PWM. Das wäre dann suboptimal.
Das Problem ist, dass ich auf den Chip kein Programm zum RAM auslesen spielen kann. Auf dem Chip läuft ein Programm. Ich habe den Quelltext nicht. Der Chip ist NICHT geschützt (Keinerlei Lockbits gesetzt) ich will dem Programm auf dem STM32 beim arbeiten zusehen, von außen per STlink V2. Geht das irgendwie? Der Chip ist ein STM32F103C8T6.
Bastler schrieb: > Auf dem Chip läuft ein Programm. Ich habe den Quelltext > nicht. Der Chip ist NICHT geschützt (Keinerlei Lockbits gesetzt) ich > will dem Programm auf dem STM32 beim arbeiten zusehen, von außen per > STlink V2. Geht das irgendwie? Das nennt sich "debuggen". Klar geht das, wenn die Lockbits offen sind. Und: mit "RAM auslesen" hat das wenig bis nichts zu tun. Bei einer RISC Architektur spielen sich die meisten Dinge in den Registern ab.
Bastler schrieb: > Segger kann ich mir leider nicht leisten, wegn dem einen Projekt, ein > originaler STlink V2 muss reichen. Der Jlink Edu kostet 66€ ;) Das lohnt sich durchaus.
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.