Eclipse: Array aus MC-Speicher abspeichern

Gast #4501055
Hallo zusammen,

ich benutze die auf Eclipse basierende Entwicklungsumgebung "Dave" von 
Infineon zur Entwicklung eines Mikrocontrollerprogrammes.
Ich habe eine Messwerterfassung und Auswertroutine realisiert,
nun liegt das Ergebnis, ein Array mit 2048 Einträgen, im Speicher des 
MCs vor. Über das Debug-Interace kann ich mir einzelne Werte anzeigen 
lassen;
um das Ergebnis bewerten zu können, muss ich es u.a. plotten.
Das MC-Board hat keine Schnittstelle (UART oder USB) über die
ich das Array an einen PC übertragen könnte.
Mein einziger Zugang zu dem Controller ist über das Programmiergerät.
Gibt es die Möglichkeit, das Array aus der Debug-Umgebung von Eclipse 
heraus z.B. in einer Text- oder CSV-Datei abzuspeichern?

Erik
#4501362
Wenn hinter Dave ein gdb werkelt, kannst du dir von dem auch ganze 
Speicherbereiche ausgeben lassen, und bequemerweise auch 
Variableninhalte. am einfachsten machst du das über die Kommandozeile, 
und den Output gleich in eine Datei umleiten.

Oliver
Gast #4502446
Wobei, ein System das Daten sammelt, verarbeitet und sie dann nicht 
ausgeben kann??

Na ja ...

Ist nicht noch ein Pin frei?
Zur Not ein Soft UART Tx, der beim Start einfach die Daten seriell 
ausgibt sollte die Benutzerfreundlichkeit wesentlich steigern ;)
Gast #4502698
Danke für die Antworten, ich kenne mich mit dem gdb aber nicht gut genau 
aus, um diese anwenden zu können.

Zu der Situation: Ich arbeite mit einer gegebenen Hardware und 
implementiere eine Routine zur Detektion eines bevorstehenden Ausfalls 
einer Komponente.

Ganz ohne die Debugumgebung komme ich nicht aus, weil ich dem Controller 
erstmal durch Registerzugriffe eine bestimmte Situation vorgaukeln muss. 
Dann erfasst dieser Messdaten und startet mehrere Verarbeitungsschritte, 
anhand deren Ergebnis entschieden wird, was er meldet.
Ich gehe nun die gesamte Kette von Messdaten, Verarbeitungsschritten, 
Entscheidungsfindung Schritt für Schritt durch und rechne die 
Zwischenergebnise im PC nach.
Ich muss genau die Messdaten/Zwischenergebnisse verwenden, die der MC 
verwendet.

>Ist nicht noch ein Pin frei?
"Pins" hat das Ding keine, nur Balls und an die komme ich nicht ran.

>Oder einfach zu geeigneter Zeit per Semihosting BKPT 0xAB den ganzen
Buffer am Stück raushauen.
Ich habe während des Debuggens zwar eine Konsole, kann dort aber keine 
Eingaben tätigen.

Ich behelfe mir damit, die in hunderter Blöcken eingeteilen Arrays 
manuell in die Zwischenablage zu kopieren und in einem Editor zu einer 
Datei zu verwursten, die Matlab lesen kann.
Das ist mühsam und Eclipse braucht sehr lange um gerade mal 2048 Werte 
in die Zwischenablage zu kopieren (->viele Kaffeepausen). Das geht auch 
häufig schief.

Ich habe gehofft, dass es eine Funktion zum Abspeichern der Werte oder 
irgendeinen anderen Trick unter Eclipse gibt (die Daten liegen dort ja 
vor) als über die Zwischenablage;
zumal ich wahrscheinlich nicht der Erste mit dem Problem bin.

Danke für die Hilfe!

Erik
#4502846
Sobald man am GDB hängt spielt es überhaupt keine Rolle welchen Debugger 
man nutzt, ein memory dump ist auf jeden Fall möglich. Und bei 
lächerlichen 2k geht sich dazwischen mit Sicherheit kein Kaffee aus...

Zur GDB Konsole innerhalb von Eclipse kommst du mit dem "Display 
Selected Console" Button. Innerhalb der Konsole dann einfach den 
Dump-Befehl reinklopfen. (siehe Bild)

Was in solchen Fällen übrigens enorm hilft ist sich den entsprechenden 
Befehl vorher via printf ausgeben zu lassen! Da schmeißt du die Anfangs- 
und Endadressen die du brauchst einfach rein und lässt dir den Befehl 
als String irgendwo anzeigen. Wesentlich einfacher als jedes mal alles 
tippen...
Angehängte Dateien:
#4503101
Man könnte die Werte in den internen EEPROM schreiben (wenn vorhanden) 
und diesen normal rücklesen. Würde zumindest beim AVR funktionieren. 
Oder einfach im Debugger ein Fenster mit Anzeige des Rams öffnen und 
dann dort die Werte rauskopieren.
Gast #4507216
Ich bedanke micht sehr!

Der Debugger ist ein Segger Jlink pro.
Mit JMEM sich in den laufenden Debugger einzuklinken funktionierte auf 
meinem Rechner nicht.

Ein EEProm hat der Controller keines.

Mit der Konsole in Eclipse und "dump" die Speicherbereich in eine 
Textdatei zu kopieren läuft.

An die Möglichkeit mit "append" den Weg umgekehrt zu gehen und von einer 
Datei direkt in den Speicher zu schreiben hatte ich vorher gar nicht 
gedacht.
Es vereinfacht es, die Implementierung im MC mit Testdatensätzen zu 
prüfen ohne diese vorher im Quelltext abzulegen und neu kompilieren zu 
müssen.

Ich muss mir noch ein kleines Programm schreiben, um die Werte zu aus 
der Datei interpretieren, dann bin ich den Schritt wieder voran 
gekommen.

Ich bedanke mich für die Hilfe, ihr habt mich sehr nach vorne gebracht!

Erik

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.