STM32F4 Stack Pointer

Gast #3976640
Hallo Leute.
Ich nutze ein Linkerscript von Atollic Studio (schreibt man das so?).

Ich habe 2 versionen. In einem sind die RAM-Bereiche falsch. so by the 
way:
Wie kann sowas passieren?

Aber meine Frage ist eine andere:

das erste LD-Skript setzt den Stackpointer auf: 0x20020000
das zweite auf: 0x2001FFFF

Letzte Adresse im ram ist: 0x2001FFFF. Habe das deshalb auch für richtig 
gehalten :)

Jetzt lese ic gerade das Programming manual zum STM32 und da steht:
1
The processor uses a full descending stack. Th
2
is means the stack pointer indicates the last
3
stacked item on the stack memory. When the processor pushes a new item onto the stack, it
4
decrements the stack pointer and then writes
5
the item to the new memory location.
Das bedeutet doch, dass mir bei dem Skript mit der Adresse 0x2001FFFF 
ein byte fehlt, und dass die erste Variane richtig ist, oder?

Und auch hier wieder die Frage: Warum zur Hölle hat eigentlich jedes 
Linkerskript hundert Fehler?
Gast #3977019
M. H. schrieb:
> When the processor pushes a new item onto the stack, it
> decrements the stack pointer and then writes

Das beantwortet doch warum der SP auf eine Adresse initialisiert wird 
auf die man nicht schreiben kann.
Gast #3983090
mper schrieb:
>>Und auch hier wieder die Frage: Warum zur Hölle hat eigentlich jedes
>>Linkerskript hundert Fehler?
>
> Heul' doch!

Es ist wirklich zum heulen...

Aber wenigstens lernt man mal was Neues. Mittlerweile sind mir 
Controller mit Linkerskript fast lieber als so fertige Lösungen wie beim 
AVR :)
Gast #3983364
ST-User schrieb:
>> Beim STM32 kannst Du den Stack auch in das CCM RAM Legen
>
> seit wann das denn ?
> Es gibt nicht bei jeden STM32 einen CCM-RAM.

Ja ich weiß. Obwohl das Linkerskript da auch einen Fehler hat. Mein 
Controller hat 128k SRAM beginnend bei 0x20000000 und die 64k CCM-RAM 
bei 0x10000000.
Im Linkerskript steht:
1
RAM (wrx) : ORIGIN = 0x20000000, LENGTH = 192K
Also alles als ein Block. Das kann auch böse ins Auge gehen :/


Danke für eure Antworten

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.