Oszczędzanie pamięci RAM podczas zapisywania na stronie pamięci flash NAND o rozmiarze 2K

10

Piszę sterownik dla Samsung K9WAG08U1D NAND flashukładu. Specyfikacja układu pamięci wspomina, że ​​ma on rozmiar strony 2048 bajtów (2kB). Używam, TI MSP430F2619który ma 4096 bajtów (4kB) pamięci RAM. Oznacza to, że muszę przydzielić bufor pamięci 2k tylko po to, aby napisać do pamięci flash. Moja aplikacja jest konwerterem protokołów i dlatego wymaga dodatkowego bufora do obsługi do i do transmisji. Proszę zasugerować mi lepsze podejście do zmniejszenia zapotrzebowania na pamięć RAM z powodu rozmiaru strony flash.

prasad
źródło

Odpowiedzi:

7

Nie musisz wypełniać strony rejestracji za jednym razem.

Rozpocznij zapis strony (tj. Operację „Program strony”), pisząc polecenie Serial Data Input ( 0x80), adres kolumny i adres wiersza. Następnie przesyłasz dane do rejestru stron (do 2112 bajtów). Transfer ten można podzielić na części z dowolnym opóźnieniem między częściami, których potrzebujesz.

Po wypełnieniu rejestru stron możesz rozpocząć transfer ze rejestru stron do tablicy za pomocą polecenia Potwierdź program strony ( 0x10).

Patrick
źródło
pamiętaj, że flashowanie NAND jest zwykle ograniczone do 4 częściowych zapisów na stronie
1
@Jacen Nie mam na myśli częściowego zapisu na stronie. Odbywa się to poprzez osobną sekwencję poleceń / adresów / danych / poleceń dla każdej części. Mam na myśli zerwanie transferu do rejestru stron, który w razie potrzeby może być jednym „fragmentem” na bajt.
Patrick,
Zasadniczo moja obecna logika sterownika czekała na wypełnienie całego bufora 2K w pamięci RAM, a następnie pisanie do flashowania. Ale teraz mogę też mieć przynajmniej 1 bajtowy bufor RAM.
O tak, masz rację Patrick, zapomniałem tej opcji.