mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik NAND-Flash adressieren


Autor: Markus F. (5volt) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe aus einer defekten 2GB SD-Card mal die Flash-Chips ausgebaut. 
Jeder der Chips hat (inkl. Reservebereich) 1056MB Speicherkapazität.
Ich habe einen der Chips an einen AVR (ATMega32) angeschlossen. So weit 
läuft das Programm auch schon. Ich kann Daten auf den Chip schreiben und 
auch davon lesen.
Nur die Adressierung macht mich gewaltig stutzig:
Um einen Block (64 Pages zu je 2112 Bytes) zu löschen, will der Chip 3 
Adress-Bytes (Row Address) haben.
Der Chip hat aber nur 8192 Pages, also würde ja eine 13 Bit Adresse 
(also 2 Byte) ausreichen. Warum dann 3 Byte?
Beim Schreiben/Lesen sieht das ähnlich aus: Da muss man eine Row- und 
eine Column-Adresse angeben. Insgesamt sind das 5 Byte.
Schreiben/lesen kann man aber eh nur pageweise. Eine Page sind 2112 
Byte.
Der Chip hat also 524288 Pages. Da würde aber eine 19 Bit Adresse auch 
ausreichen...

Irgendwo in dem Datenblatt ist auch eine Adressierungs-Tabelle. Daraus 
werde ich aber auch nicht sehr viel schlauer. Darin sind insgesamt 29 
Adress-Bits angegeben. Die Row- und Column-Adressen sind aber nirgends 
erwähnt.

Hier das Datenblatt: 
http://www.hynix.com/datasheet/pdf/flash/HY27UG088...

Hat vielleicht einer von euch schon mal einen NAND-Flash Chip 
angesteuert und weiß, wie die Adressierung abläuft?

Autor: ::: (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht moechte man mit derselben adressierung kompatible mit 
zukuenftigen Devices sein...

Autor: Markus F. (5volt) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Vielleicht moechte man mit derselben adressierung kompatible mit
> zukuenftigen Devices sein...

Glaube ich nicht. Ich habe mir auch mal das Datenblatt von einem 1 Gbit 
(128MByte)-Chip flüchtig durchgeschaut. Der hat nur 4 Adressbytes.

Das Komische ist auch, dass mein Chip (also der mit 1056MByte) insgesamt 
29 Adressbits hat (steht im Datenblatt), die auf 5 Bytes verteilt sind.
Und mit diesem 29 Bit könnte man jedes Byte auf dem Chip (außer den 
Reservebereich) adressieren.
Mit 29 Bit Adressbreite kann man 512MByte adressieren. Das kommt genau 
hin, da der Chip zwei Chip-Enable-Pins hat (also vermutlich intern aus 
zwei einzelnen "Chips" zu je 512MByte + Reservebereich besteht).

Es gibt aber gar keinen Befehl, mit dem man direkt auf ein bestimmtes 
Byte zugreifen kann. Es gibt nur einen, mit dem man eine ganze Page 
(2112 Bytes) in einen chip-internen Puffer lädt und dann in diesem 
Puffer auf einzelne Bytes zugreifen kann. Dafür wäre aber auch keine 
29-Bit-Adresse nötig...
Irgendwie ist das ganze ziemlich merkwürdig.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.