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?
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.
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 | }
|
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).
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.