Frage zu uC Speicher Typen, Ausführung von code

OP #2552290
Hallo zusammen,
als Hobby habe ich in den letzten Monaten mit einem Arduino, FEZ Panda 
(ARM 7 von NXP, .Net Micro Framework) und anderen uC basierten Boards 
gespielt.

Ich bin jetzt an einem Punkt an dem die standard .Net Microframework 
Klassen nicht das tun was ich möchte bzw weniger als der Prozessor kann 
bereitstellen. Zb unterstützt der im NXP ARM7 Prozessor eingebaute 
"Timer Peripheral" weitaus mehr Funktionen als man über .Net 
Microframework ansteuern kann. Ich lese also derzeit ARM Manuals, 
Manuals des Prozessoren, usw

Dabei ist mir immer noch nicht verständlich wie bei einem uC Code 
ausgeführt wird:

1)
Zum einen gibt es die uC mit nur internem SRAM und Flash. Flash ist 
meistens grösser als RAM. In Foren Beiträgen las ich dass der Code 
direkt aus Flash ausgeführt wird. Stimmt das? Kann ein uC direkt aus 
Flash Code ausführen? Oder ist damit nur gemeint, dass wann auch immer 
neuer Code ausgeführt werden muss dass sich auf Flash befindet, ein 
kleiner Teil in SRAM nachgeladen wird um anschliessend ausgeführt zu 
werden?

Sprich bei einem solchen Prozessor wird ständig aus Flash in SRAM 
nachgeladen?

2)
Zum anderen gibt es uC mit externen SDRAM und Flash (oder NAND oder 
oder). Bei den Board die ich bisher gesehen habe, war meisten mehr SDRAM 
als Flash vorhanden. Die Flash Anbindung kann über verschiedenste Wege 
ausgeführt werden, SPI oder EBI, etc. Je nach dem wie die Anbindung 
gemacht wird, ist jedoch zu erwarten dass diese sehr viel langsamer ist 
als bei einem uC mit integriertem Flash. Was macht man in solch einem 
Fall? Nach reset den gesamten Flash Inhalt (oder so viel wie möglich) in 
SDRAM kopieren damit möglichst selten, am bester gar nicht, aus Flash 
nachgeladen werden muss?

3)
Kann Code direkt aus SDRAM ausgeführt werden, oder muss hier auch erst 
von SDRAM zum internen SRAM kopiert werden?



Zu diesen Fragen konnte ich bisher keine Erklärung für Dummyes finden im 
Web finden.
Kennt jemand ein Link zu dem Thema? Ein Buch?

Grüsse
mark
Persönliche Seite
1) Ja, der µC führt den Code direkt aus dem Flash aus.

Bei µCs mit sehr hoher Taktfrequenz (>> 50 MHz) allerdings ist das Flash 
dafür zu langsam, und dort wird daher üblicherweise im RAM gearbeitet - 
was natürlich ausreichend großes RAM voraussetzt. Das aber passiert 
nicht automatisch, sondern muss vom Programm selbst erledigt werden.

2) Diese Konstruktion (ext. Flash per SPI) dient in der Tat dazu, 
Programme aus dem Flash ins RAM zu kopieren. Ein direktes Abarbeiten aus 
dem Flash ist hier nicht möglich.

3) Wenn der µC einen SDRAM-Controller hat, dann verhält sich SDRAM 
weitestgehend so wie das interne SRAM. "Weitestgehend", da es i.d.R. 
langsamer ist und daher mit Waitstates angesteuert wird. Das interne 
SRAM hingegen kann mit vollem Prozessortakt betrieben werden, und 
deswegen werden geschwindigkeitsrelevante Teile durchaus auch bei so 
einer Konstellation aus dem SRAM ausgeführt.

Die Punkte 2 und 3 aber sind nur für größere µCs mit Taktfrequenzen >> 
50 MHz relevant.

Auf größeren ARMen (wie ARM9 oder Cortex-M4) also ja, auf kleinen ARMen 
(ARM7-TDMI oder Cortex-M0) oder kleineren Architekturen wie AVR, MSP430, 
MSC-51 hingegen nicht.
Gast
Hi, die Zugriffsarten auf den Speicher, sei es nun Flash, embedded oder 
extern, sowie RAM und SDRAM hängen typischerweise NICHT von der 
Prozessorarchitektur sondern vielmehr von der Implementierung des 
Herstellers ab. Der Prozessor greift im wesentlichen auf eine Adresse zu 
und erwartet dort ausführbaren Programmkode oder Daten. Ob diese im RAM, 
Flash oder sonstwas stehen, ist dem Prozessor in diesem Moment "egal". 
Grundsätzlich will der Prozessor, im wesentlichen auch unabhängig von 
der Architektur, auf wahlfreienzugriffsspeicher ( random access memory ) 
zugreifen. Dies bedeutet im ersten Ansatz nur, dass der Speicher nicht 
seriell organisiert ist, wie Beispielsweise NAND-Flash oder Speicher der 
über eine serielle Schnittstelle angeschlossen ist. Deshalb kann, 
pauschal gesagt, ein Prozessor nicht direkt Programm aus NAND-Flash 
ausführen, sondern muß dieses erst in einen geeigneten Speicher, z.B. 
SRAM oder SDRAM kopieren. Und ja, es gibt Ausnahmen. Aus genannten 
Gründen biete sich an, einen bestimmten µC aussuchen und dort die Arten 
des Speicherzugriffs zu studieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.