-         

Ergebnis 1 bis 6 von 6

Thema: Stack im AVR

  1. #1
    Schulbankwärmer
    Gast

    Stack im AVR

    Anzeige

    Hallo Leute!
    Wie tief ist der Stack, also wie viele z.B. Labeladressen kann ich da hineinpumpen, mit z.B. push?

    Danke für Eure Hilfe!

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Eine normale return-addresse braucht zwei byte vom Stack. d.h. du kannst Stacksize/2 adressen reinpushen, theoretisch SRAM/2.
    Da die Variablen-adressen von unten wachsen, der Stack aber von oben knabbert, werden sie sich gegenseitig überschreiben, wenn sie sich in der Mitte treffen.
    D.h. irgendwie bleibt das in der realität immer eine Schätzung.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    In den avr-linkscripten wird das Symbol __heap_start definiert:
    Zitat Zitat von ./avr/lib/ldscripts/avr*.x*
    _end = . ;
    PROVIDE (__heap_start = .) ;
    Das kann man verwenden, um einen Laufzeit-Test auf den noch verbleibenden Platz zu zu machen.
    Zitat Zitat von C-Code
    unsigned char *first_free;
    extern unsigned char __heap_start;
    first_free = &__heap_start;
    oder
    Zitat Zitat von C-Code
    unsigned char *first_free;
    first_free = ({extern unsigned char __heap_start; &__heap_start;});
    Disclaimer: none. Sue me.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Problem ist, die untersten Routinen sind meist irgendwelche library-fuzzies, denen das ziemlich egal ist, was frei ist und was nicht.
    Heap mit ein paar verwuzelten "k" ist und bleibt eine inferiore Angelegenheit.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hallo Schulbankwärmer!
    Ich hatte damit auch früher immer Vorstellungsprobleme!
    Auf der folgenden Seite kannst das alles gut nachlesen!
    http://www.avr-asm-tutorial.net/avr_...nner/sram.html

    Im Anhang findest Du noch ein Bild aus dem Datenblatt des Mega8, wo Du die genauen Adressen ablesen kannst.
    Die Adressen 0x0060 bis 0x045F kannst Du frei als Speicher verwenden, also auch für den Stack!

    Viel Erfolg damit!
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken stack.gif  

  6. #6
    Gast
    Danke für eure Hilfe!
    Dann kann ich ja doch, soweit ich das gesehen habe, einige Daten im Stack bzw. SRAM ablegen!

    Danke nochmals!

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •