Datum:
Hallo zusammen, Ich benutze den STM32 zusammen mit den Linkerskripten von M. Thomas. Er lässt dort die Möglichkeit zwischen
NVIC_SetVectorTable(NVIC_VectTab_RAM, (uint32_t) &_isr_vectorsram_offs); |
und
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 :)
Datum:
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.
Datum:
Was dann doch sogar dafür sprechen würde, die Tabelle in das ROM zu packen, damit man einen RAM-Zugriff weniger hat, oder?
Datum:
Durchaus möglich.
Datum:
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.
Datum:
Wobei das Flash meist gross genug ist, um mehrere Vektortabellen fassen zu können. ;-) Beim Cortex M3/M4 sind die ja nicht fixiert.