Mikroprozessoren - Speicher/Ram

Hallöchen mal wieder

Ich bin gerade bei Reichelt ein bischen bei den Mikroprozessoren am stöbern. Dabei ist mir eine Frage gekommen. Die meisten Mikroprozessoren die dort im Angebot sind haben als Angabe einmal Ram und einmal Speicher. Beispielsweise dieses Exemplar: P 89LPC 931 FDH Dort steht Speicher: 8kByte Ram: 256 Byte

Jetzt verwirrt mich diese angabe etwas. Aus der Vorlesung zu Mikroprozessoren weiß ich zwar, dass die Dinger meistens zwei Arten Speicher haben. Flashspeicher für den Programmcode und RAM für das Programm.

Da die meisten Mikrokontroller dort aber scheinbar mehr Speicherplatz für den Programmcode haben als Speicher für das Programm haben, frage ich mich gerade nach dem Sinn. Wie kann man ein Programm schreiben, das mehr Programmcode erzeugt, als es Speicher benötigt. Oder habe ich da jetzt wieder irgendetwas grundlegendes missverstanden?

MfG,

Markus

Reply to
Markus
Loading thread data ...

Am Sat, 9 Dec 2006 12:40:29 +0100 schrieb Markus:

Vermutlich. Was stellst du dir vor, was Programmcode und Programm sind?

Lutz

--
Mit unseren Sensoren ist der Administrator informiert, bevor es Probleme im 
Serverraum gibt: preiswerte Monitoring Hard- und Software-kostenloses Plugin 
auch für Nagios - Nachricht per e-mail,SMS und SNMP: http://www.messpc.de
Kostenloser SNMP-Monitor für Windows: http://www.snmpview.de
Reply to
Lutz Schulze

Hi, entgegen der PC-Technik liegt das Programm meist im Flash und die Variablen des Programmes im RAM. Vorteil: RAM kann beliebig oft und schnell beschrieben werden, bei Flash gibt es schon Grenzen der Haeufigkeit und der Geschwindigkeit HTH Guenter

Reply to
Günter R.

"Günter R."

Das ist mir ja wohl klar. Aber warum ist der Speicher wo das Programm abgelegt wird so oft viel größer als der Speicher mit dem das Programm hinterher arbeitet?

MfG,

Markus

Reply to
Markus

Stelle Dir ein simples Programm vor, was in meinetwegen 17 Sprachen laufen soll, dann brauchst Du alleine für die sprachspezifischen Elemente schon moerderisch viel mehr Platz als für das Programm selbst. Guenter

Reply to
Günter R.

Och Markus...

"Markus" schrieb im Newsbeitrag news:457aa6bc$0$27620$ snipped-for-privacy@newsspool2.arcor-online.net...

Das Programm läuft im Flash (Programmspeicher). Die wenigen Bytes Ram sind die Register des µC. Darin läuft kein Programm. Im Ram liegen deine Variablen, der Stack, die Statusregister, diverse Flags und, und, und.

Gruß Ingo

Reply to
Ingo Liebe

Weil (wenn du nicht gerade Bilder oder Videos bearbeitest) das Programm (Flash) üblicherweise größer ist als die Daten (Ram).

Etwas wie

void main() { unsigned char a,b,c; a=readport(); b=readport(); c=readport(); print("Die interessanten Werte die ich gerade gelesen habe sind"); print(a); print(b); print(c); }

braucht z.B. nur 3 Byte RAM (plus ggf. ein paar Byte für die Rücksprungaddressen der Funktionsaufrufe) aber mindestens

60 Byte Programmcode (FLASH), und das noch ohne den Code für die Bibliotheken...
Reply to
Andreas Koch

Hallo,

Markus schrieb:

Weil das RAM für controllertypische Anwendungen ausreicht? Und man dort oft nicht soo viele variablen Daten hat? Weil die Nachfrage zeigt, dass dieses Verhältnis sich bewährt hat? Man macht mit Controllern üblicherweise keine Textverarbeitung.

Gruß, Bernhard

Reply to
Bernhard Deny

Bernhard Deny schrieb:

Und wenn man doch mal mehr Datenspeicher braucht gibts ja auch noch Controller mit Interface für externen Speicher.

Gruß Dieter

Reply to
Dieter Wiedmann

Zumindest für die kleinen 8-bitter reicht das vorhandene meist aus. Ausserdem sind die SRAM-Zellen wie sie auf den meisten kleinen UC zu finden relativ gross, verbrauchen viel Chipfläche und machen den chip teuer.

--
MFG Gernot
Reply to
Gernot Fink

Markus schrieb:

Der Code wird vom Speicher aus verarbeitet und nicht wie beim PC in den Ram geladen. Im Ram dient lediglich zum Speichern veränderlicher Werte.

bye uwe

--
AIM: (weggefallen) ## ICQ: (neu)453740861 ## www.pssgzudresden.de
Jürgen Gerkens in d.r.f. : "... gerade ein Polfilter ist als
Schutzfilter auch nicht viel schlauer, als die Frontlinse zum Schutz
vor Streulicht zu lackieren. ;-)"
Reply to
Uwe 'hammernocker' Roßberg

"Dieter Wiedmann"

mit Interface für externen Speicher.

Hast du konkrete Beispiele für mich?

Ich suche was mit mind. 11 MHz, 1mal analog Input, 2 mal Digital output und mind. 64 kB Speicher. Und dann natürlich auch die pasende Entwicklungsumgebung dazu.

Und was das wichtigste ist: das Ganze für weniger als 5 Euro.

MfG,

Markus

Reply to
Markus

Lutz Schulze schrieb:

Aber Markus träumt doch von einer 4096-Punkte-FFT im Mikrocontroller, da braucht er so viel Speicher.

Gruß Henning

--
henning paul home:  http://www.geocities.com/hennichodernich
PM: henningpaul@gmx.de , ICQ: 111044613
Reply to
Henning Paul

"Henning Paul"

Hanning, du hast es erkannt!

Reply to
Markus

"Henning Paul"

Henning, du hast es erkannt!

Reply to
Markus

Markus schrieb:

War doch offensichtlich. Ich wette, Du schreibst mal ein Buch: "1001 Verwendungen für die FFT".

Ich glaube aber auch, daß Du in den meisten Fällen mit Kanonen auf Spatzen schießt. So viele Frequenzpunkte und so viel Speicher braucht man in den seltensten Fällen.

Gruß Henning

--
henning paul home:  http://www.geocities.com/hennichodernich
PM: henningpaul@gmx.de , ICQ: 111044613
Reply to
Henning Paul

Henning Paul schrieb:

Ein Klassiker der Weltliteratur wird das sicher nicht, auch wenn man sicher zu den meisten Anwendungen 'gute Nacht' sagen können würde.

Gruß Dieter

Reply to
Dieter Wiedmann

Markus schrieb:

Bei *vielen* 8051-Derivaten Standard.

Eine Angabe in Mips wäre wenigstens sinnvoll, so ist Marketinggeschreiniveau.

Bei der Auswahl im 8051-Sektor kein Problem.

Auch daran wirds nicht scheitern.

Wühl doch einfach mal etwas auf

formatting link

Gruß Dieter

Reply to
Dieter Wiedmann

ATMega, Renesas R8C, wenns ein bisschen mehr sein soll empfehle ich gerne die LPC213x (32 Bit, bis 512kByte Flash, bis 32kByte RAM).

Wenn Du mich fragst, Finger weg von den kruden 8051ern. Lasst den Schrott doch endlich aussterben :-)

LG,

--
Bernhard Roessmann
Don't Fear The Penguins!
Reply to
Bernhard Roessmann

ind

hei=DFt das, dass ich meine guten alten B=FCcher zu CPU's in den Tonne hauen kann?

Das Rechenwerk und Steuerwerk kann doch nur mit den Daten im RAM und den Registern arbeiten. Der Zugriff auf den RAM ist auch nicht immer so gut, sodass teilweise nur eine begrenzte Anzahl an Variablen aus den RAM kommen darf und dort wieder hineingeschrieben wird. Die eigentichen Rechenoperationen erfolgen im internen Speicher.

Der CPU l=E4dt einen kompletten Befehl in den Chache (RAM) und f=FChrt ihn von dort aus aus. Hat sich das jetzt ge=E4ndert und es gibt Prozessoren, die direkt aus einem Flash-Speicher arbeiten k=F6nnen? Und wie soll das gehen? Ich kann doch nicht asyncron arbeitende Elemente ohne Flip-Flops miteinander kopplen.

Sogar die meisten syncron arbeitenen Prozessoren, speichern alles zwischen, um das Laufzeitverhalten zu verbessern und eine andere Core-Spannung zu nutzen als das Signalpegel hat. Was soll das denn bringen?

Hinweis: "*.COM" - Programme arbeiten auch mit weniger RAM als Programmcode. Sie =FCberladen sich selbst, wenn der Speicher voll ist, d.h. sie =FCberschreiben schon abgelaufenen Code. Dazu gibt es eine Laderoutine, die den Vorgang =FCberwacht und nicht =FCberschrieben wird.

Moderne CPU's haben diese Laderoutinen im Mirkrocode drin, aber f=FChren sie immer noch aus. (Windows und Linux nutzen die seit dem 80286'er enthaltenen Laderoutinen nicht und machen es selbst aber drin sind sie) Die Ladevorg=E4nge sehe ich an den Laufzeitverhalten von Befehlen, wenn die Ausf=FChrung einer Operation mal =FCber 300 Takte kostet. Durch den mitlerweile gro=DFen internen Cache und die vorherige Ausf=FChrung von Befehlen hat sich das Verhalten diesbez=FCglich gebessert.

Wenn Prozessoren direkt aus dem Flash arbeiten, so macht es doch keinen Sinn mehr Befehle oder Operanten an bestimmten Byte-Grenzen auszurichten, dann w=FCrde ja alle Ladevorg=E4nge gleich viel Zeit kosten und der CPU w=FCrde nicht in Wirklichkeit 32Bit laden um eine 16Bit Zahl zu lesen, nur weil sie nicht an Double-Byte ausgerichtet ist, denn dann m=FCsster er ja beliebigen Direktzugriff haben.

Reply to
Stefan Engler

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.