Forum: Mikrocontroller und Digitale Elektronik Speicher des mega64 selber aufteilen, aber wie?


von Glorfindel (Gast)


Lesenswert?

Hallo Leute,

kann ich den Speicher des mega64 in C selber aufteilen?
In meinem Programm löse ich einen Software-Reset ala

    goto *((void**) 0);

aus. Ich möchte aber alte Werte mit in die nächste Ausführung nehmen.
Der Gedanke ist der, dass ich mir,z.B. ab 0x050 bis 0x060 einen
Speicherbereich anlege in den ich meine zu rettenden Daten schreibe und
mit dem Softreset dann nach 0x061 springe und somit meine Daten
mitgenommen werden.
Also
   goto *((void**) 0x061);

P.S. Die Adressangaben sind nur Beispiele



Geht sowas.....

von Glorfindel (Gast)


Lesenswert?

bei meiner Suche bin ich auf sowas gestossen:

int Retten _attribute_ ((section(".noinit")));

probiere das mal aus. scheint vielversprechend.

von Rahul (Gast)


Lesenswert?

Was willst du machen?
So wie ich dich verstehe, willst du mehrere (völlig) unabhängige
Programme in einem Mega64 bei Bedarf laufen lassen.
Vielleicht solltest du dein Projekt etwas weiter umreissen.
Mag sein, dass das gehen könnte (bevor ich mich mal wieder zu weit aus
dem Fenster lehne...).
Der Sinn dabei bleibt mir aber verschlossen...
Welchen Speicher willst du überhaupt teilen? Den Flash?
Mit Klimmzügen kann sowas gehen (Bootloader-mässig)...

von Karl heinz B. (kbucheg)


Lesenswert?

Ich denke du solltest dich erst mal von der
Vorstellung lösen, dass ein

goto *((void**) 0);

deine Probleme löst, verabschieden.
In einem anderen Thread hast du geschrieben, dass du
dies machst um eine dynamisch aufgebaute Datenstruktur
auf einfache Weise los zu werden. Ich finde einen
Soft-Reset dafür keine gute Lösung. Die softwaretechnisch
bessere Lösung ist immer noch die Datenstruktur korrekt
wieder abzubauen.

von Glorfindel (Gast)


Lesenswert?

Das mit dem Segment hat prima hingehauen. Vars die ich in diesem Seg
anlege, werden durch den Softreset nicht neu initialisiert.

Wenn ich die mit malloc angelegten doppelt verketteten Listen wieder
mit free freigebe haut das nicht hin. Der Softreset räumt da richtig
auf.

von Karl heinz B. (kbucheg)


Lesenswert?

> Wenn ich die mit malloc angelegten doppelt verketteten Listen wieder
> mit free freigebe haut das nicht hin. Der Softreset räumt da richtig
> auf.

Klar. Man kann als Zahnarzt auch mit dem Holzhammer arbeiten :-)

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
Noch kein Account? Hier anmelden.