czy mogę pisać na wcześniej napisanej stronie, jeśli unikam wcześniej napisanych obszarów?
Jeśli rozumiem p. 16 z arkusza danych poprawnie, mówi: Za pomocą tego konkretnego układu nie możesz pisać na wcześniej napisanej stronie, nawet jeśli unikniesz już napisanych obszarów.
Detale
Karta danych układu pamięci flash SST25VF064C na str. 16 mówi „Instrukcja programu strony programuje do 256 bajtów danych w pamięci. Wybrany adres strony musi być w stanie wymazanym (FFH) przed rozpoczęciem operacji programu strony”.
Zakładam, że zatem „Cała wybrana strona musi być w stanie wymazanym (każdy bajt na stronie FFh) przed rozpoczęciem operacji programu strony”. Czy SST lub Microchip wydało jakąkolwiek dokumentację wyjaśniającą to irytująco dwuznaczne zdanie?
Z mojego doświadczenia wynika, że producent wszystkich układów flash MLC i niektórych nowszych układów flash SLC nakazuje, że po napisaniu strony strona musi zostać skasowana przed ponownym zapisaniem tej strony, nawet jeśli chcesz zmienić tylko 1 bit na 0 bit. (Jest to tak zwana „zasada jednokrotnego zapisu” w artykule YAFFS ).
Z mojego doświadczenia wynika, że wszystkie starsze układy flash pozwalają zmienić dowolny 1 bit na 0 bez cyklu kasowania, nawet jeśli ten bit znajduje się na stronie lub nawet w bajcie, w którym inne bity zostały już zaprogramowane na zero - a stronę flasha można programować wielokrotnie między skasowaniami. (W artykule YAFFS nazywa się to „wielokrotnym zapisem”).
Arkusz danych producenta jest obietnicą warunkową złożoną mu przez producenta. O ile przestrzegasz wszystkich zaleceń zawartych w arkuszu danych, producent obiecuje, że układ będzie działał zgodnie z przeznaczeniem. Podejrzewam, że jeśli zaprogramujesz wcześniej napisaną stronę, unikając obszarów już napisanych, istnieje duża szansa, że natychmiastowe ponowne odczytanie może dać oczekiwane dane - nowo zapisane bajty to właśnie zapisane wartości, a pozostałe bajty prawdopodobnie nie ulegną zmianie. Ponieważ jednak nie jest to zgodne z zaleceniami arkusza danych, nie można już polegać na wszystkich obietnicach zawartych w arkuszu danych. Słyszę pogłoski, że takie nie sankcjonowane działanie powoduje cierpienie czasu retencji i wytrzymałości, z powodu zakłóceń programu, nadmiernego programowania, pułapki ładowania, efektów podobnych do młota wierszowego DRAM itp.
„Schemat wykorzystania pamięci wpływa na współczynnik błędów bitowych. Programowanie częściowe, niesekwencyjne programowanie stron w bloku, nadmierny odczyt na blok bez kasowania, a także nierównomierna liczba operacji odczytu w jednym bloku zwiększają liczbę odczytów zakłócić błędy. ” - Michał Jedrak.
„Pamięć flash NAND we wbudowanych systemach”.
„Zakłócenie programu występuje, gdy bit jest przypadkowo zaprogramowany z„ 1 ”na„ 0 ”podczas zdarzenia programowania strony. Ten błąd bitu może wystąpić na stronie programowanej lub na innej stronie bloku. Warunki napięcia polaryzacji w blok podczas programowania strony może powodować przenikanie niewielkiej ilości prądu do pobliskich komórek pamięci. Powtarzające się częściowe próby programowania strony będą nadal pogarszać ten stan. ” - Douglas Sheldon i Michael Freie.
„Testowanie zakłóceń w pamięciach flash” . p. 8, 9.
„Zakłócenie programu ma miejsce, gdy bit jest przypadkowo zaprogramowany (1 do 0) podczas operacji programowania. ... Ten stan pogarsza się przez losowe programowanie w bloku i stosowanie wielu częściowych zapisów na stronach.”
„Łagodzenie awarii flash Yaffs NAND”