Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller flashen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Malek (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Simon H. (simi)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Malek (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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?

von Malek (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tut mir leid Karl ich habe das nicht verstanden. Kannst du es vielleicht 
noch einmal erklären ?
Danke im Vorraus

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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!

von Malek (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe es nicht verstanden.
Tut mir leid Karl.
Bitte sofort erklären.

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Lass es besser sein (Gast)


Bewertung
1 lesenswert
nicht lesenswert
das hab sogar ich verstanden und bin Bodybuilder.

von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
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.

von spess53 (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
HI

> das hab sogar ich verstanden und bin Bodybuilder.

Damit wäre dein negativer Intelligenzquotient ja geklärt.

MfG Spess

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
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.

von wendelsberg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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?

von Lass es besser sein (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Karl B. (gustav)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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:_Speicher

https://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.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.