Guten Tag Community,
ich beschäftige mich aufgrund meiner Vorlesung mit Mikrocontrollern und
dessen Aufbau. Nun stehe ich vor der Frage, was beim "Flashen" eines
Mikrocontrollers geschieht und komme nicht weiter. Ich hoffe hierbei
kann mir jemand behilflich sein.
Danke und liebe Grüße
Ein Mikrocontroller hat in der Regel einen nichtflüchtigen
Programmspeicher, den "Flash Speicher" (Google/Wikipedia). Flashen =
Beschreiben dieses Speichers. Also das auszuführende Programm in den
Speicher schreiben.
Beziehen wir uns mal auf den AVR8.
Da gibt es den gesamten Flash-Speicher löschen, d.h. alle Speicherzellen
(Word-Breite) werden auf 0xffff gesetzt.
Bei beschreiben kann man dann nur den Zustand 1->0 ändern.
Okay ich verstehe. D.h kann ich auf die Frage, was beim "Flashen" eines
Mikrocontrollers geschieht mit :
Beim Flashen eines Mikrocontroller wird ein auszuführendes Programm in
den Speicher des Mikrocontrollers geschrieben. Denn ein Mikrocontroller
besitzt ein nichtflüchtigen Speicher, der in unserem Fall genutzt wird,
um das Programm zu speichern.
Nichtflüchtiger Speicher = Daten bleiben nach dem Ausschalten der
Betriebsspannung erhalten.
Es kann beliebig oft gelesen und beschrieben werden.
antworten?
Malek schrieb:> Es kann beliebig oft gelesen und beschrieben werden.
Nein, das nicht, es gibt immer eine Grenze!
Schau mal in eine reales Datenblatt eines Atmega328p.
Malek schrieb:> Tut mir leid Karl ich habe das nicht verstanden. Kannst du es vielleicht> noch einmal erklären ?
Nöö, was ist mit löschen == alles auf 1 Setzen unklar?
Und beschreiben == 0 setzen kann man nur Bits, die auf 1 stehen, oder
schon 0 sind!
Malek schrieb:> Ich habe es nicht verstanden.> Tut mir leid Karl.> Bitte sofort erklären.
Pesch, es gibt auch noch Suchsysteme, die könnte man nutzen.
Oder doch, Du hast ein leeres Papier ohne Löscher.
Nun will man eine "0" kodieren und nimmt einen Locher und takert eine
Loch an die passende Stelle (Bitposition, Adresse).
Will man den gesamten Speicher "löschen", so muss man ein anderes
Stückpapier nehmen, da die Löscher nicht wieder auffüllt werden können.
Das ist sehr vereinfacht dargestellt.
Karl M. schrieb:> Malek schrieb:>> Tut mir leid Karl ich habe das nicht verstanden. Kannst du es vielleicht>> noch einmal erklären ?>> Nöö, was ist mit löschen == alles auf 1 Setzen unklar?
Das ist ein vollkommen unwesentliches Detail, das den Fragesteller nur
verwirrt, anstatt ihm zu helfen.
Das einzige, was man in diesem Zusammenhang erwähnen könnte, ist daß man
Flash vor dem Beschreiben erst löschen muß. Ausnahme ist das allererste
Beschreiben des Flash (z.B. in einem fabrikneuen µC) - denn dann ist das
Flash schon leer.
Malek schrieb:> Beim Flashen eines Mikrocontroller wird ein auszuführendes Programm> in den Speicher des Mikrocontrollers geschrieben.
Nicht notwendigerweise. Das Flash eines µC kann auch Daten enthalten.
Ein Programm, das z.B. Texte auf ein Display ausgibt, muß diese Texte ja
irgendwo gespeichert haben. Und zwar im Flash.
> Denn ein Mikrocontroller besitzt ein nichtflüchtigen Speicher,> der in unserem Fall genutzt wird, um das Programm zu speichern.
Nicht jeder µC enthält Flash bzw. allgemein nichtflüchtigen Speicher.
Aber ein µC, bei dem man vom "flashen" spricht, natürlich schon. Sonst
würde das Wort ja keinen Sinn ergeben.
> Nichtflüchtiger Speicher = Daten bleiben nach dem Ausschalten der> Betriebsspannung erhalten.
Das ist die allgemeine Definition des Begriffs.
> Es kann beliebig oft gelesen und beschrieben werden.
Beliebig oft gelesen - ja. Aber beim Schreiben gibt es eine Grenze.
Beim Flashen passiert ungefähr das gleiche, als wenn du eine Datei auf
einen USB Stick überträgst. Was ist daran schwer zu verstehen?
Das Programm wird in den Flash Speicher des Mikrocontrollers übertragen.
Fertig aus, mehr gibt's dazu nicht zu sagen.
Es sei denn, die Frage gilt den physikalischen Vorgängen, die sich
innerhalb des Flasch-Speichers abspielen. Dann müsste man aber nach
einen ganz konkreten Modell fragen, denn es gibt unterschiedliche
Varianten dieser Speicher.
Malek schrieb:> Okay ich verstehe. D.h kann ich auf die Frage, was beim "Flashen" eines> Mikrocontrollers geschieht mit :>> Beim Flashen eines Mikrocontroller wird ein auszuführendes Programm in
...
> antworten?
Hausaufgaben?
spess53 schrieb:> HI>> das hab sogar ich verstanden und bin Bodybuilder.>> Damit wäre dein negativer Intelligenzquotient ja geklärt.>> MfG Spess
Hey hey jetzt mal nicht frech und obszön werden, kleiner. Ich weiss das
dieses Thema hier auch nicht leicht für dich ist und dich übelst
frustet.
Malek schrieb:> Nun stehe ich vor der Frage, was beim "Flashen" eines> Mikrocontrollers geschieht
Zitat:
Quelle: https://de.wikipedia.org/wiki/Flash-Speicher
"...Bei einem Flash-EEPROM-Speicher werden Informationen (Bits) in einer
Speichereinheit (Speicherzelle) in Form von elektrischen Ladungen auf
einem Floating-Gate oder in einem Charge-Trapping-Speicherelement eines
Metall-Isolator-Halbleiter-Feldeffekttransistors (englisch Metal
Isolator Solid State Field Effect Transistor, MISFET) gespeichert..."
/Zitat
Hi,
zunächst ist der Begriff "Flashen" seit ein paar Jahren gleichgesetzt
zum "Programmieren" von EPROMs zum Beispiel, deswegen, weil diese
Flash-Technologie bei Speicherbausteinen so extrem populär geworden ist.
Aber das "Beschreiben" von Speichern geht allgemein so, dass Ladungen
verschoben werden.
Wie das im einzelnen vonstatten geht, kommt auch auf die
Speicherbausteine an.
Und was oft vergessen wird: Reine Mikroprozessoren (von damals) haben
keinen Speicher. Sie müssen immer noch das "Betriebssystem" per EPROM
extra mitgeliefert bekommen. Alles andere ist "fest".
Dann kommt der Begriff Mikrocontroller ins Spiel.
Die "Controller" haben dann schon Speicher eingebaut.
Bei den ATMEL AVRs sogar drei verschiedene Arten mit jeweils zum Teil
sogar unterschiedlichen Befehlen und Zugriffszeiten.
Also:
Codesegment -> cseg
Datensegment -> dseg
Epromsegment -> eseg
Du fragtest jetzt nach dem "cseg".
Hier steht etwas dazu:
https://www.mikrocontroller.net/articles/AVR-Tutorial:_Speicherhttps://de.m.wikipedia.org/wiki/Erasable_Programmable_Read-Only_Memory
ciao
gustav
P.S.:
Beim Selbstbau-Eprombrenner konnte ich feststellen, dass bei der
Organisation der 27xx-Eproms immer 8 Bit auf einer der Adressen
gleichzeitig "gebrannt" werden. Und wie oben schon gesagt, steht beim
Leerlauftest am Anfang alle Adressen-Daten auf FF. Die 0 wird also aktiv
programmiert. Es gibt da auch noch den "Intelli"- Programmiermodus, der
das Programmieren schneller macht, indem er nur die Adressen, die Nullen
enthalten, tatsächlich anspringt. Also erst ab Adresse 40 im Beispiel
wird dann aktiv geprogt.
Karl B. schrieb:> zunächst ist der Begriff "Flashen" seit ein paar Jahren gleichgesetzt> zum "Programmieren" von EPROMs zum Beispiel
Ähhm. Nein.
Ein EPROM ist kein FLASH. Und es wird auch nicht "programmiert",
sondern programmiert. Ja, ohne Anführungszeichen.
EPROM != EEPROM != FLASH
Die Unterschiede zumindest zwischen EEPROM und FLASH sind subtil. Aber
nachdem die Wikipedia wieder online ist, kann man das dort in epischer
Breite nachlesen.
Bei EPROMs sagt(e) man statt programmieren früher auch brennen (und
zum Programmiergerät umgangssprachlich (EPROM-) Brenner). Bei
EEPROMs sagt man typischerweise nur schreiben. Und bei FLASH halt
flashen.
Aber das sind alles nur Worte.
Was den TE nun wirklich interessiert, vermag ich nicht zu sagen. Geht
es ihm darum, wie man den µC dazu bringt, das FLASH zu beschreiben? Oder
was im FLASH passiert, wenn es geschrieben wird?