Forum: Mikrocontroller und Digitale Elektronik STM32 Vektoren ins RAM oder FLASH?


von Florian M. (micro-flo)


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 :)

von (prx) A. K. (prx)


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.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Was dann doch sogar dafür sprechen würde, die Tabelle in das ROM zu 
packen, damit man einen RAM-Zugriff weniger hat, oder?

von (prx) A. K. (prx)


Lesenswert?

Durchaus möglich.

von LTC1043 (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

Wobei das Flash meist gross genug ist, um mehrere Vektortabellen fassen 
zu können. ;-)

Beim Cortex M3/M4 sind die ja nicht fixiert.

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.