www.mikrocontroller.net

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


Autor: Glorfindel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.....

Autor: Glorfindel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei meiner Suche bin ich auf sowas gestossen:

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

probiere das mal aus. scheint vielversprechend.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)...

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Glorfindel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

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.