STM32F RAM auslesen geht das?

Gast #6271367
Lesenswert?

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...
Gast #6271374
Lesenswert?

@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.
Gast #6271385
Lesenswert?

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.
#6271395
Lesenswert?

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.
Gast #6271482
Lesenswert?

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.
Gast #6271485
Lesenswert?

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.
(Firma: SEGGER) #6271831
Lesenswert?

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/
Gast #6271842
Lesenswert?

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.
Gast #6271844
Lesenswert?

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.
Gast #6271889
Lesenswert?

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.
Gast #6272301
Lesenswert?

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.
Gast #6272306
Lesenswert?

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.
#6272310
Lesenswert?

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.

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