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?
Vielleicht moechte man mit derselben adressierung kompatible mit zukuenftigen Devices sein...
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.