Hallo zusammen, weiß jemand, ob es einen echten technischen Hintergrund für die beknackte Page-Größe von 264 bzw. 528 Byte beim Atmel DataFlash gibt? Nicht dass man schon genug Stress mit den zu normalem SPI Flash völlig verschiedenen Kommandos und Belegung des Status-Registers hätte, nein, auch die Pagegröße ist ab Werk auf diesen abenteuerlichen Wert gesetzt, was die Berechnung der Page-Adresse zu einem sehr lustigen Anliegen werden lässt und man das halbe Flash-Programm umbauen muss. Ich muss gerade an älteren Xilinx FPGAs der Spartan 3 Reihe die Dinger Updaten, das macht echt keinen Spaß. Haben sich das nur die Marketing-Bimbos ausgedacht oder gabs da echt mal Anwendungen wo das erforderlich war?
Vielleicht hat Atmel sich sowas gedacht wie 256 Bytes Nutzdaten + 8 Bytes für CRC/ECC
Möglicheweise, um dort noch Fehlerkorrekturdaten unterzubringen. AUsserdem kann man die meisten Flashs auf Standardgröße per Softwae umschalten.
Die überzähligen Bytes kann man auch gut für ein Dateisystem benutzen, um zusammengehörige Pages zu verlinken ;-)
Bei NAND Flashes sind die zusatzlichen Bytes die spare data area. In dieser wird z.B ein ECC abgelegt (über die Nutzdaten gebildet) und je nach Bedarf noch mehr Verwaltungsdaten (wie oben schon beschrieben). Wenn du NAND Flash hast, dann empfehle ich dir, ein ECC über die Nutzdaten zu bilden und den ECC in den zusätzlichen Bytes abzulegen. Beim Lesen dann einen Vergleich machen und du wirst staunen, du findest hin und wieder single bit Fehler. Du kannst diese dann korrigieren.
Falk Brunner schrieb: > AUsserdem kann man die meisten Flashs auf Standardgröße per Softwae > umschalten. Ja, kann man machen, erfordert aber einen Power-Cycle. Ist etwas unpraktisch für die bestehenden Geräte und Xilinx Impact tastet die Page Size beim Programmieren nicht an. Naja, wenigstens funktioniert das 0x03 Auslesen erst mal wie gewohnt, jedenfalls wenn man bei Adresse 0 startet. Für alles andere muss man dann ja wieder Extrawurst machen.
Christian R. schrieb: > gabs da echt mal > Anwendungen wo das erforderlich war? Ja, um die Datenintegrität festzustellen. Es kann ja sein, daß mitten im Schreiben der Strom ausfällt. Und dann will man feststellen, welches der letzte gültige Datenrecord war. Großen Flash nimmt man oft zur permanenten Datenaufzeichnung und da ist ein Stromausfall durchaus wahrscheinlich.
Christian R. schrieb: > Falk Brunner schrieb: >> AUsserdem kann man die meisten Flashs auf Standardgröße per Softwae >> umschalten. > > Ja, kann man machen, erfordert aber einen Power-Cycle. Ist etwas > unpraktisch für die bestehenden Geräte und Xilinx Impact tastet die Page > Size beim Programmieren nicht an. Naja, wenigstens funktioniert das 0x03 > Auslesen erst mal wie gewohnt, jedenfalls wenn man bei Adresse 0 > startet. Für alles andere muss man dann ja wieder Extrawurst machen. Die Dinger können theoretisch bereits mit 256 Byte Größe bestellt werden. Wer die an wen liefert ist allerdings ne andere Sache.
cyblord ---- schrieb: > Die Dinger können theoretisch bereits mit 256 Byte Größe bestellt > werden. Wer die an wen liefert ist allerdings ne andere Sache. Theoretisch ja. Praktisch aber nur in riesigen Mengen. Wie das jetzt bei Adesto aussieht weiß ja auch keiner. Es geht bei mir um bestehende Designs, At45DB081D deswegen weil der Spartan 3e nur 2,5V VCCAUX verträgt, und es sonst praktisch keine 2,5V SPI Flash gibt. Wenn ich die jetzt umprogrammieren würde, müsste ich nachher alle wieder erst mal mit Xilinx Impact programmieren, weil die zusätzlichen Bytes dann fehlen. Ich hab jetzt das Flash-Programm angepasst, ist ziemlich umständlich, aber klappt jetzt.
Christian R. schrieb: > und es sonst praktisch keine 2,5V > SPI Flash gibt. http://de.farnell.com/micron/m25px16-vmn6p/flash-seriell-16mbit-8soic/dp/2253721
Der wird allerdings von Xilinx Impact nicht für die indirekte Programmierung unterstützt. Und 2009 als die Geräte entstanden sind, gabs den glaube sogar noch nicht mal.
bei meinem letzten SPI Flash von Atmel steht meine ich im Datenblatt, dass man selber das Datenformat von diesen krummen 264 auf gerade 256 Bytes verändern kann. Da ich das nicht benutzt habe, da ich die Flash Routine dann in C selber zusammengebastelt habe, war mir das egal, aber du hast schon recht sollte ich das mal portieren müssen auf einen anderen Flash würde das sicherlich auffallen. Ganz sicher bin ich gerade nicht wie es unfktioniert mit dem umstellen, und ich habe auch gerade keine Lust das rauszukramen, aber vielleicht hilft ja alleine der Denkansatz für dich um das Datenblatt nochmal zu überfliegen und vielleicht ist das ja in deinem Flash genauso. Grüße
Wie schon geschrieben, das Umstellen am Flash geht schon, aber das würde dann einen ziemlichen Rattenschwanz hinterher ziehen, weil die schon programmiert sind, und die Daten dann erst mal weg wären. Dummerweise wird die Einstellung nur nach einem Trennen der Stromversorgung angewendet. Dann bootet das FPGA aber nicht mehr und ich komm nicht mehr an den Flash ran...
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.