Forum: Mikrocontroller und Digitale Elektronik NAND-Flash adressieren


von Markus F. (5volt) Benutzerseite


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/HY27UG088G(5_D)M%20Series(Rev.0.6).pdf

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

von ::: (Gast)


Lesenswert?

Vielleicht moechte man mit derselben adressierung kompatible mit 
zukuenftigen Devices sein...

von Markus F. (5volt) Benutzerseite


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.