SPI Flash Interface XIP img auf QSPI RAM ausführen

Gast #7073652
Lesenswert?

Hallo Forum,

einige Mikrokontroller(NXP) bieten die Möglichkeit, ein Flash über SPIFI 
anzuschließen und das Image als XIP direkt von SPI Flash auszuführen.

Statt eines Flashs, ein QSPI RAM anzuschließen, das Img auf den RAM 
kopieren und von dort auszuführen würde nicht funktionieren, da nicht 
gleichzeitig gelesen und geschrieben werden kann.

Verstehe ich das richtig?
#7073684
Lesenswert?

Wenn der µC keinen internen Flash hat, müsstest Du zuerst das Henne-Ei 
Problem lösen: Wie kommt das Programm / Booloader in den µC?

Außerdem bräuchtest Du RAM der zum Lesen ganz genau so wie ein SPI Flash 
angesprochen wird. Keine Ahnung ob sowas in bezahlbar existiert. Die 
Möglichkeiten zur Anpassung sind bei XIP begrenzt.

Schreiben selbst ist das kleinere Problem, da entsprechende µC 
üblicherweise kurze Befehlsfolgen auch komplett aus dem RAM ausführen 
können.
Gast #7073736
Lesenswert?

Der Kontroller, in meinem Fall LPC54xxx Serie kann von verschiedenen 
Speichermedien booten. SPIFI, SPI, USB manche vom internen Flash. 
Internen SRAM haben die auch alle.
Das ist nicht das Problem.

Nur der interne Ram reicht mir nicht aus.

Das SPIFI mit einem XIP Img liest den ausführbaren Code aus dem Flash 
und legt Variablen in den Heap/Stack auf den internen Ram.

NXP bietet aber die Möglichkeit „link Applikation to ram“
Meine Idee ist es SPIFI mit QSPI-RAM zu verbinden.
Die Frage ist, ob der auf die QSPI-RAM (SPIFI) kopierte Code „wo auch 
immer“ ausführbar ist ohne weiteren Ram zu benötigen.
1
//beim Ausführen aus einem Flash bleiben die Anweisungen in Flash, x wird im internen SRam angelegt.
2
//beim Ausführen aus dem internen SRAM. Anweisungen und x werden im Ram gehalten
3

4
//Wie ist es wenn man das Img auf QPSI-SRAM (SPIFI) kopiert uns ausführt??
5
Int main(){
6

7
Int x=0; 
8

9
While(1)
10
  ++x;
11

12
Returt 0;
13
}
(Firma: egal) #7074387
Lesenswert?

o_0 schrieb:
> ie Frage ist, ob der auf die QSPI-RAM (SPIFI) kopierte Code „wo auch
> immer“ ausführbar ist ohne weiteren Ram zu benötigen.
Nicht "wo auch immer", sondern im Datenblatt nachlesen in welchem 
Adressenraum der Speicher gemappt wird!

Memory mapping: SPI Flash Interface (SPIFI)
0x1000 0000 - 0x17FF FFFF SPIFI memory mapped access space (128 MB).

Du musst dein Programm also so compilieren das es an diesem 
Adressbereich lauffähig ist und es dann mit der passenden 
Einsprungadresse "anspringen" (nachdem dein Startupcode das auch alles 
vollständig initialisiert hat).
Gast #7075050
Lesenswert?

irgendwer schreibt:
> Nicht "wo auch immer", sondern im Datenblatt nachlesen in welchem
> Adressenraum der Speicher gemappt wird

> Memory mapping: SPI Flash Interface (SPIFI)
> 0x1000 0000 - 0x17FF FFFF SPIFI memory mapped access space (128 MB).

> Du musst dein Programm also so compilieren das es an diesem
> Adressbereich lauffähig ist und es dann mit der passenden
> Einsprungadresse "anspringen" (nachdem dein Startupcode das auch alles
> vollständig initialisiert hat).
Ist bekannt, habs gemacht. Es ist nicht Gegenstand der Frage wie der 
Code auf den QSPI Ram kommt oder ob im Img Sprungadressen stimmen.
Geht davon aus, dass alles passt.

Mich interessiert, ob der an der SPIFI (Flash Interface) angeschlossene 
RAM als vollwertigen RAM genutzt werden kann.
Nicht wie im Flash Modus als Read only.
Sondern R/W, gleichwertig (wenn auch langsam) wie interner SRAM oder 
SDRAM über externen memory controller.

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