STM32 Vektoren ins RAM oder FLASH?

OP #2600930
Lesenswert?

Hallo zusammen,
Ich benutze den STM32 zusammen mit den Linkerskripten von M. Thomas.

Er lässt dort die Möglichkeit zwischen
1
NVIC_SetVectorTable(NVIC_VectTab_RAM, (uint32_t) &_isr_vectorsram_offs);
und
1
NVIC_SetVectorTable(NVIC_VectTab_FLASH, (uint32_t)&_isr_vectorsflash_offs);

Welche Vor- und Nachteile ergeben sich, wenn die Tabelle im RAM oder 
Flash ist?

Hier im Forum wurde behauptet, dass die IRQ Ausführung bei der Tabelle 
im RAM schneller ist. Das kann ich mir nicht vorstellen.


Danke schon einmal für eure Antworten!
Ich freue mich, wieder etwas Neues zu lernen :)
#2600939
Lesenswert?

Florian Micro schrieb:

> Welche Vor- und Nachteile ergeben sich, wenn die Tabelle im RAM oder
> Flash ist?

Üblicherweise hat man sie genau dann im RAM, wenn das ganze Programm 
dort liegt, weil man grad am Debuggen ist und es noch reinpasst.

> Hier im Forum wurde behauptet, dass die IRQ Ausführung bei der Tabelle
> im RAM schneller ist. Das kann ich mir nicht vorstellen.

Das ROM hat ggf. Waitstates. Allerdings meine ich mich zu erinnern, dass 
der ROM-Zugriff parallel zum Stack-Push der Register stattfindet, so 
dass es evtl. keine Rolle spielt.
Gast #2601164
Lesenswert?

Florian Micro schrieb:
> Welche Vor- und Nachteile ergeben sich, wenn die Tabelle im RAM oder
> Flash ist?

Wenn sie im Flash liegen kannst du sie zur Laufzeit deines Programmes 
schwer verändern.

Manchmal ist das aber gewünscht.

Oder zur Sicherheit, du hast die Tabelle des Bootloaders im Flash (der 
startet dadurch immer d beim Flashen deiner Applikation die 
Resetvektoren im Flash nicht überschrieben werden) und die Tabelle der 
Applikation im RAM. Der Bootloader wechselt vor dem Starten der 
Applikation die Tabelle von Flash zu RAM.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren