www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP TI DSP TMS320f RAM Speicher loeschen mit Pointer


Autor: michi02 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe den TI DSP 320f2812

 Ich möchte nach jedem neustart des DSP seinen Ram speicher löschen. 
Eine Löschen mit dem Linker fällt somit flach.

Ich habe mir gedacht direkt nach dem Programmstart lasse ich einfach 
einen Null Pointer über den gesamten Ram laufen und lösche so den RAM. 
Jetzt brauche ich für die Pointeradresse eine Variable die auf an der 
ersten Speicheradresse eines RAM speichers liegt. Dann kann ich ja den 
Pointer dorthin zeigen lassen und immer weiter wandern lassen.

Jetzt die Frage wie lege ich am besten eine Variable an die auf die 
erste Adresse eines RAM Speichers zeigt?

vielen dank für eure Tipps

Michi

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willst du denn damit erreichen, sprich: warum willst du den RAM 
löschen? Beim Starten steht doch (quasi) nichts drin.

Autor: michi02 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na wenn der Watchdog anschlägt startet das Programm neu und auch da 
sollte der RAM leer sein. Was hier nicht unbedingt der Fall ist. Globale 
Variablen werden ja auf dem RAM abgelegt und damit ich sie nicht alle 
explizit 0 setzen muss wäre es halt schon schön...

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviele globale Variablen sind es denn? Es lässt sich bestimmt auch 
erkennen ob der Watchdog ausgelöst hat und du könntest die Variablen nur 
dann löschen.

Abgesehen davon musst du sie doch vor der ersten Verwendung sowieso 
initialisieren!?

Aber ok:
sieh dir mal spra958h an - kann sein, dass dir das hilft und du es ein 
bisschen zweckentfremden kannst.

Wobei ich ein paar Zweifel habe, dass das funktioniert wie du dir das 
vorstellst, sprich wenn du alles löschst. Könnte sein, dass du dir da 
was zerschiesst.

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Ram ist nicht nur nach einem Watchdogreset nicht auf null gesetzt, 
sondern auch nach Wiederkehr der Stromversorgung in undefiniertem 
Zustand. Eine Initialisierung der Variablen ist immer notwendig.

Manche C-Compiler initialisieren alle Variablem bei der Deklararation 
grundsätzlich auf 0, manche aber auch nicht.

In diesem Fall definiere und deklariere ich die Variablen dann so:

int var1 = 0;
int arr1[5] = {0,0,0,0,0};

Dann kann man sich aussuchen, welche Variablen initialisiert werden und 
welche nicht. So kann man unterscheiden, ob der Reset vom Watchdog 
gekommen ist, oder durch einen Stromausfall.

Unabhängig davon muss es aber schon funktionieren, alle Ramadressen 
direkt per Pointer anzusprechen und auf Null zu setzen. Man darf nur 
nirgendwo reinschreiben, wo kein Rambereich ist. Manche Bereiche vom Ram 
im TMS320 müssen auch erst freigeschatet werden, bevor man sie schreiben 
kann.

Grüße,

Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.