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
Was willst du denn damit erreichen, sprich: warum willst du den RAM löschen? Beim Starten steht doch (quasi) nichts drin.
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...
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.
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
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.