Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Programator pamięci Flash NAND Lite! TSOP48

funak 05 Oct 2016 10:34 313020 456
Computer Controls
  • Programator pamięci Flash NAND Lite! TSOP48
    Założeniem projektu miało być stworzenie od podstaw programatora do popularnych pamięci typu Flash NAND, by wypełnić lukę na rynku w segmencie programatorów niskobudżetowych. Czasem istnieje konieczność odczytania układu Flash NAND znajdującego się np. w pendrive, ale i również różnego rodzaju nawigacjach, modemach, routerach, telewizorach itd. A niekoniecznie słuszny staje się zakup profesjonalnego narzędzia za cenę co najmniej 5x większą, by odczytać/zaprogramować jeden układ. Z pamięciami Flash NAND mam do czynienia stosunkowo długo, można powiedzieć już nieco ponad 3 lata. Gdy pierwszy raz zastosowałem taką pamięć do projektowanego urządzenia, widziałem same zalety: niska cena, duża pojemność, łatwość obsługi. Po latach użytkowania, widzę również wady, ale o tym za chwilę.

    Zaprojektowany przeze mnie programator, z uwagi na cięcie kosztów, zawiera tylko jedno gniazdo do umieszczenia pamięci Flash NAND w obudowie TSOP48 lutowane na stałe.

    Programator pamięci Flash NAND Lite! TSOP48

    Całość zasilana jest z portu USB napięciem 5,0V, zaś układ pamięci FlashNAND oraz procesor zasilany jest napięciem 3,3V podawanym ze stabilizatora LDO TPS781330220. Zaletą tego stabilizatora jest wbudowane zabezpieczenie nadprądowe 150mA, które świetnie się sprawuje w przypadku odwrotnego włożenia układu do podstawki, które nie powoduje uszkodzenie układu pamięci, jak również to, że miałem je w dużej ilości w magazynie.

    Dodałem dwie diody LED, wskazujące napięcia 5,0V (D5), oraz 3,3V (D1), po których można szybko sprawdzić, czy wszystko jest w porządku.

    Wykorzystałem pełny układ połączeń pamięci FlashNAND, w której obecne są cztery linie CE, oraz cztery linie RB, dzięki czemu jest możliwość obsługi wszystkich rodzajów pamięci dostępnych w obudowie TSOP48, zaś zasilanie(3,3V) jest doprowadzone tylko i wyłącznie do wyprowadzeń VSS(13,36), VCC(12,37).

    Całym programatorem zarządza procesor XMEGA-A4U, który idealnie się wpasował pod kątem liczby wyprowadzeń, z którym komunikuje się oprogramowanie na PC, poprzez konwerter USB FT245.
    Zastosowałem tutaj bardzo ciekawe rozwiązanie bazujące na magistrali równoległej, łącząc linie danych DATA0-7 układu FT245 bezpośrednio do portu procesora XMEGA, dodatkowo połączając je do układu pamięci FlashNAND.

    Zyskałem na tym dużą prędkość transmisji danych oraz dużą swobodę komunikacji.
    Uzyskane wyniki samego mnie zaskoczyły:

    FT245 XMEGA = 980kB/s
    NAND XMEGA = 2,7MB/s

    Zatem przykładowa komunikacja wówczas wygląda następująco:
    1. PC -> XMEGA - polecenie odczytu z pamięci NAND
    2. PC NAND - przygotowanie do odczytu, wykonanie sekwencji
    3. PC

    Cool? Ranking DIY
    About Author
    funak
    Level 25  
    Offline 
    Serwis komputerów, projektowanie systemów akwizycji i przetwarzania danych, rejestratory cyfrowe, układy mikroprocesorowe, tworzenie oprogramowania w asemblerze(51), Pascal, Delphi, C, odzyskiwanie danych z dysków twardych.
    Has specialization in: Programista aplikacji inżynierskich i elektroniki
    funak wrote 825 posts with rating 327, helped 73 times. Live in city Dębica. Been with us since 2005 year.
  • Computer Controls
  • #2
    Hetii
    Level 16  
    Witam serdecznie .

    Mam takie oto pytania:

    1. Czy posiada Pan na odsprzedanie PCB/TSOP48 ?
    2. W jakim celu zastosowano FT245, czy nie prościej było by zastowanianie avra ze sprzętową obsługą USB lub v-usb ?
    3. Czy planuje Pan udostępnienie kodów zródłowych, bądź napisania oprogramowania pod Linuxa?

    Pozdrawiam.
  • Computer Controls
  • #3
    funak
    Level 25  
    A ja mam oto takie odpowiedzi:

    1. Zbieram zamówienia na popularnym portalu aukcyjnym.
    2. FT245 został zastosowany po to, aby przyspieszyć transfer z NAND do PC, jest to rozwiązanie w kierunku FT232H, by móc w kolejnej rewizji programatora uzyskać 8MB/s bez zmiany oprogramowania na PC. Druga sprawa, to wykorzystanie VID/PID. Kupując FT245 sprawę mam jakby załatwioną.
    3. Nie planuję udostępniania kodów źródłowych, aczkolwiek może się to kiedyś zmienić. Pod Linux'a niestety nie jestem wstanie napisać oprogramowania.
  • #4
    Hetii
    Level 16  
    Programator już odnalazłem na znanym portalu aukcyjnym :)
    Co do oprogramowania to jestem wstanie wesprzęć projekt i przeportować dla linuxa.
  • #5
    funak
    Level 25  
    To bardzo się cieszę, trzeba będzie ciut poczekać, gdyż planowana będzie wersja 2.0, w której niestety trzeba będzie przeorganizować polecenia dotyczące odczytu stron i ich adresacje z uwagi na to, że nie wszystkie pamięci się podobnie adresuje.

    Np. TOSHIBA wymyśliło sobie adresowanie stron w bloku przy użyciu dodatkowego polecenia, przykładowo:
    TC58NVG7T2JTA00
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=15967618&highlight=#15967618

    Bloki są adresowane 0..8311 i tu jest w porządku, natomiast strony w bloku adresowane są następująco:
    Page: 0..85, a wiadomo, że w bloku jest 258 stron. I wybór właśnie tych trzech grup stron w ramach bloku jest przy pomocy dodatkowego polecenia wysyłanego do pamięci FlashNAND.

    Dzięki temu cały obszar pamięci i jego adresowanie jest przestrzenią nieciągłą.


    Na chwilę obecną planuję rozpracować kody korekcyjne. W tym celu potrzebuję przykładowych wsadów z urządzeń, by można było na nich trochę poćwiczyć i sprawdzić dokładnie w jaki sposób ulokowane są dane korekcyjne.

    Moim zamierzeniem jest wczytać wsad z pamięci, nacisnąć przycisk Analizuj i zaczekać aż program obliczy wszystkie kody, sam wykryje rodzaj czy to ECC, BCH, ReedSolomon, skoryguje błędne bity i zapisze już całkiem zdrowy wsad do pliku, który później posłuży do zapisania w nowej pamięci.
  • #6
    satanistik
    Level 27  
    Programator jest świetnym pomyślany i wykonany. Sam mam do tych pamięci fabryczny programator ale jego cena była zabójcza. Pojawia się tylko problem gdyż pamięci 32M i więcej można odczytać, tylko ze względu na badbloki nie bardzo da się to kopiować. Przydało by się oprogramowanie które potrafiło by zamontować system plików wykorzystywany w pamięci. Np system ubifs dało się obsłużyć w Linuxie używając programowego emulatora pamięci nand. dodatkowo odczytanie plików z uszkodzonego pendrive z samego bin-a nie jest łatwe bo systemy plików mieszają dane w celu oszczędzania komórek. Kolejnym problemem są różne sposoby implementacji oznaczania uszkodzonych sektorów w obszarach separacyjnych lub/i tablicy uszkodzonych sektorów.
  • #7
    funak
    Level 25  
    Dziękuję za pozytywne słowa.

    Co do systemów plików, to czytałem na temat UBIFS, jednakże nie mam póki co jakiegokolwiek wsadu by skonfrontować zdobytą wiedzę z rzeczywistą zawartością pamięci FlashNAND. Wg dokumentacji nie ma dużego poziomu skomplikowania z UBIFS, jest to w miarę dobrze opisane, więc są szanse i przyszłość w tym by to rozpracować.

    Jeśli zaś chodzi o odzysk danych z pendrive to na chwilę obecną wykonałem jedno doświadczenie polegające na zapisaniu karty CompactFlash 8GB specjalnie przygotowaną zawartością, w której każdy sektor 512 bajtów był numerowany. Następnie wylutowałem pamięć z karty i wkładając do programatora odczytałem jej zawartość. I faktycznie sektory są bardzo pomieszane, ale zdaje się być w niej jakiś ład i porządek. Ale aby rozpocząć analizę takiej zawartości trzeba jednak rozpocząć kontrolę bitów nadmiarowych, by mieć pewność, że dane które odczytujemy są prawidłowe.

    Jeśli ktoś może mi wysłać jakikolwiek wsady do celów diagnostyczno-badawczych, to służę swoim specjalnie przygotowanym forum, lub odpowiednim kontem FTP. Posiadam pojemność nieograniczoną i szybkie łącze.

    W zasadzie odzysk danych sprowadza się to obliczeń matematycznych, jeśli wszystko się zgadza mamy 100% pewności że wszystko mamy odzyskane.


    Cena fabrycznego programatora również jest podyktowana możliwościami. Taki programator, jest dużo szybszy i wiadomo - uniwersalny, więc włożymy zarówno układ TSOP48 na napięcie 3,3V, ale i również 1,8V a jak trzeba to i 1,2V. Tu się za to płaci, więc musi kosztować.
  • #8
    michal_aniol
    Level 33  
    Projekt ciekawy, ale w moim mniemaniu będzie się nadawał tylko do kopiowania flashy z jednej kości na drugą (po opracowaniu algorytmu korekcji błędów), przy stosunkowo małych kościach, bo prędkość nie jest zbyt duża.

    W przypadku chęci odzyskiwania danych jest to wyważanie otwartych drzwi, bo rozwiązania są gotowe (oczywiście kosztują, ale niestety jest to wynik ogromnej ilości pracy).
    Chciałbym zwrócić uwagę na problematykę którą spotkasz jeśli będziesz chciał coś odzyskać po odczycie:
    1. Obecne kości TSOP48 mają zasilanie podane na wiele więcej nóg. Odczyt po standardowych VCC(12,37) w dużej mierze jest niewystarczający
    2. TOSP48 jest układem coraz rzadziej montowanym na pamięciach masowych. Branża przechodzi na BGA i monolity.
    3. Czasem nad jedną kością trzeba popracować ze 2-7 dni aby skorygować błędy :)
    4. Obecnie każdy kontroler używa XORów, których są setki (kontrolerów i XORów).
    5. Dane są mixowane w bardzo różny sposób w zależności od modelu kontrolera.
    6. Algorytm translacji bloków jest różnych dla różnych kontrolerów.
    7. Na rynku jest dużo refabrykowanych kości i kontrolerów - które mają różne patologiczne rozwiązania.
    8. W sporej czesci dumpów występują w różnych miejsch wstawki (nadmiarowe bajty danych) które są zarządzane przez kontroler programowo lub sprzętowo. Do odzysku danych trzeba je usunąć.
    9. Wiele wiele innych niuansów.

    Zgadzam się z tym że odzysk danych to matematyka. Z tym ze do tego trzeba dorzucić jeszcze kryptologię (też matematyka) i algorytmikę (też).
  • #9
    funak
    Level 25  
    Jakby się rozwinął projekt, jestem gotów wykonać drugą i trzecią generację programatora. Druga z prędkością do 8MB/s, trzecia do 50MB/s.

    Otrzymałem dostęp do najnowszych dokumentacji od Micron'a pod pewnymi warunkami. Jednakże przeglądając PDFy można ciekawe wnioski wysnuć. Po pierwsze oszałamiająca pojemność NANDów, do 6Tbit. Druga sprawa, to faktycznie wielobankowość, oraz większa ilość linii do sterowania, oraz zasilanie nawet do 1,2V.

    Jeśli zaś chodzi o same pamięci w TSOP48, to dokumentacja ONFI mówi jasno, że jeśli pamięć zasilana jest z 3,3V, oraz napięcie I/O również 3,3V, to wewnętrznie jest połączona, więc nie ma potrzeby dodatkowego zasilania. W każdym innym przypadku należy zastosować dwa napięcia zasilania.

    Zgadzam się z tym, że odczytując tym programatorem pamięć chociażby 8GB, to czas około 3h, jednakże z założenia miał to być programator tani, zatem i parametry nieco słabsze.

    Ponadto, grupą odbiorców tego programatora, są amatorzy, którzy chcą coś okazyjnie zrobić. A jeśli jedynym kompromisem jest czas, względem ceny, to uważam to za dobre rozwiązanie. W innym przypadku inwestowaliby duże pieniądze.
  • #10
    michal_aniol
    Level 33  
    Tak, ilość pamięci i kontrolerów jest makabryczna do ogarnięcia. Stąd większość laboratoriów po prostu odpuszcza pamięci Flash...
    Standard ONFI standardem, ale życie życiem :)
  • #12
    michal_aniol
    Level 33  
    funak wrote:
    Skoro odpuszcza pamięci flash, to zatem jest to dobry pomysł, aby się za to zabrać :)


    Jak najbardziej. Z tym że nie masz świadomości, o czym teraz piszesz :)
    Zajmuje się tym na codzień. Mam dość duże doświadczenie w tej materii dlatego napisałem Ci o potencjalnych problemach.
    Najtańszy profesjonalny czytnik do nand flashy można zakupić za około 800zł. Dlatego napisałem o wyważaniu otwartych drzwi ;)
  • #13
    tplewa
    Level 39  
    funak wrote:

    Najgorzej jest z gniazdem TSOP48, które niestety trzeba sprowadzić z Chin.


    Fajny projekt - co prawda wczesniej widzialem tylko tutaj ogloszenia sprzedazy i oferty na allegro - milo dowiedziec sie cos wiecej :)

    Natomiast co do podstawki TSOP48 to sa dostepne w PL np. ma je Semicon - z tym ze wiadomo cena na poziomie 180zl o ile pamietam (ale firmowe)... z drugiej strony te tanie chinskie TSOP48 (po kilka dolarow) z mojego doswiadczenia sa g... warte tzn. w mojej przejsciowce z DIP48 na TSOP48 juz niedomaga (a wcale duzo pamieci nie bylo robionych) - choc obecnie zamowiona oryginalna przejsciowka do TNM5000 na podstawce YAMAICHI (zobaczymy jak sie bedzie sprawowac) - tez taniej niz u nas sama podstawka.

    Natomiast co do USB i szybkosci to moze warto zainteresowac sie ukladami Cypress-a :)
  • #14
    mariomario
    Level 18  
    michal_aniol wrote:
    funak wrote:
    Skoro odpuszcza pamięci flash, to zatem jest to dobry pomysł, aby się za to zabrać :)


    Jak najbardziej. Z tym że nie masz świadomości, o czym teraz piszesz :)
    Zajmuje się tym na codzień. Mam dość duże doświadczenie w tej materii dlatego napisałem Ci o potencjalnych problemach.
    Najtańszy profesjonalny czytnik do nand flashy można zakupić za około 800zł. Dlatego napisałem o wyważaniu otwartych drzwi ;)


    Flash Extractor ?
    Całkiem fajny z intuicyjnym oprogramowaniem do składania dump'ów.


    Ale lepszy jest PC-3000 Flash, choć cena uwzględniając do niego wszystkie przystawki potrafi skakać do ok 15k PLN. Tym zrobimy niemal wszystkie flesze o ile będziemy potrafili sami poustawiać wszystkie opcje i czasy kości flash gdy automatycznie nie będzie się dało wykryć rodzaju kości.
  • #15
    tplewa
    Level 39  
    mariomario wrote:

    Ale lepszy jest PC-3000 Flash, choć cena uwzględniając do niego wszystkie przystawki potrafi skakać do ok 15k PLN.


    i cena zapewne taka bo ma nazwe "Data Recovery" ;)

    Natomiast nie oszukujmy sie opisywany tutaj programator to jest sprzet dla amatorow z malym budzetem na hobby lub "biznesmenow" wyznajacych teorie "kupuje gowno bo lepszy sprzet sie nie zwroci" ;) Nie oszukujmy sie ten programator jest w cenie (a nawet nizszej) dobrej podstawki TSOP48 do byle programatora z DIL48...

    Wiec nie ma co wymagac... zarowno hobbysta jak i zawodowiec majacy kase znajdzie cos odpowiedniego dla siebie... Jak dla mnie projekt fajny bo i hobbysci z mniejsza kasa maja szanse pobawic sie takimi pamieciami...
  • #17
    funak
    Level 25  
    Oczywiście zanim zacząłem montować podstawki, zamówiłem na próbę u trzech chińczyków(odczekałem 21-27 dni) i z pośród nich wybrałem jednego, który wg mnie dostarcza dobrej jakości wykonania podstawki TSOP48. Różniły się przede wszystkim niedokładnym odlewem plastiku. Nie posiadam zdjęć, więc nie mogę tego zaprezentować.

    Jeśli zaś chodzi o wytrzymałość, to mam swój jedyny egzemplarz od początku projektu i nadal działa. Efekty zużycia objawiają się tym, że nieco mniej sprężynuje podstawka, jednakże wszystkie styki nadal działają. Widzę, że nieco się ubrudziły styki dolne, które nie są z niczym podłączone. Jest to efekt pakowania układów wprost z wylutu bez oczyszczania wyprowadzeń.

    Jest na to sposób:
    Programator pamięci Flash NAND Lite! TSOP48

    Zamówiłem 2 sztuki dla testów i oceniam bardzo wysoko jakość gniazda do podstawki TSOP48. Styki toczone, okrągłe doskonale wchodzą w płytkę, są bardzo równo wykonane, w idealnym rastrze.

    Teraz zbieram kapitał na zamówienie większej ilości takich gniazd, by je wyposażyć w nowej rewizji. Ponadto, są przejściówki z TSOP48 na BGA/LGA w zawrotnej cenie, więc byłaby tu możliwość obsługi dodatkowo w innej obudowie niż TSOP48.
  • #18
    funak
    Level 25  
    Dodałem dziś w programowaniu NANDLite! generowanie statystyk z transferów (Wersja 1.0.1014.50).

    Wyniki znów zaskoczyły jak szybko można kasować pamięci FlashNAND.

    Dwa przykłady:
    Kasowanie K9GAG08U0E-SIB0
    Kasowanie pamięci
    ID                	: EC D5 84 72 50 42 EC D5
    Manufacturer      	: SAMSUNG
    Model             	: K9GAG08U0E-SIB0
    Konfiguracja: 
    Target count      	: 1
    LUN count         	: 1
    Block per LUN     	: 2076
    Page per Block    	: 128
    Page size         	: 8192+436
    Rozmiar całkowity 	: 2 292 701 184 bajtów
    Error erase block: T:1 L:0 B:411 P:0
    Error erase block: T:1 L:0 B:1172 P:0
    Error erase block: T:1 L:0 B:2040 P:0
    Error erase block: T:1 L:0 B:2073 P:0
    Kasowanie zakończone
    Czas rozpoczęcia  	: 2016-10-14 12:05:08
    Czas zakończenia  	: 2016-10-14 12:05:13
    Szybkość          	: 442666,551 kB/s
    


    Kasowanie MT29F64G08CBAAAWP
    Kasowanie pamięci
    ID                	: 2C 88 04 4B A9 00 00 00
    Manufacturer      	: MICRON
    Model             	: MT29F64G08CBAAAWP
    Konfiguracja: 
    Target count      	: 1
    LUN count         	: 1
    Block per LUN     	: 4096
    Page per Block    	: 256
    Page size         	: 8192+448
    Rozmiar całkowity 	: 9 059 696 640 bajtów
    Error erase block: T:1 L:0 B:49 P:0
    Error erase block: T:1 L:0 B:90 P:0
    Error erase block: T:1 L:0 B:91 P:0
    Error erase block: T:1 L:0 B:3855 P:0
    Error erase block: T:1 L:0 B:3999 P:0
    Error erase block: T:1 L:0 B:4011 P:0
    Error erase block: T:1 L:0 B:4043 P:0
    Kasowanie zakończone
    Czas rozpoczęcia  	: 2016-10-14 12:06:00
    Czas zakończenia  	: 2016-10-14 12:06:19
    Szybkość          	: 485044,625 kB/s
    
  • #19
    funak
    Level 25  
    Test pamięci Flash NAND: NAND512W3A2CN6 w obudowie TSOP48.

    Pamięć ta ma sektory o wielkości 512+16 bajtów.
    Łączna pojemność 69 206 016 bajtów.

    Kasowanie pamięci
    
    Kasowanie pamięci
    ID                    : 20 76 20 76 20 76 20 76
    Manufacturer          : ST
    Model                 : NAND512W3A2CN6
    Konfiguracja:
    Target count          : 1
    LUN count             : 1
    Block per LUN         : 4096
    Page per Block        : 32
    Page size             : 512+16
    Rozmiar całkowity     : 69 206 016 bajtów
    Error erase block: T:1 L:0 B:12 P:0
    Error erase block: T:1 L:0 B:2739 P:0
    Error erase block: T:1 L:0 B:3898 P:0
    Kasowanie zakończone
    Czas rozpoczęcia      : 2016-11-17 07:49:25
    Czas zakończenia      : 2016-11-17 07:49:39
    Szybkość              : 4819,756 kB/s
    


    Zapis do pamięci
    
    Zapis do pamięci
    ID                    : 20 76 20 76 20 76 20 76
    Manufacturer          : ST
    Model                 : NAND512W3A2CN6
    Konfiguracja:
    Target count          : 1
    LUN count             : 1
    Block per LUN         : 4096
    Page per Block        : 32
    Page size             : 512+16
    Rozmiar całkowity     : 69 206 016 bajtów
    Zapis zakończony
    Czas rozpoczęcia      : 2016-11-17 07:52:35
    Czas zakończenia      : 2016-11-17 07:55:14
    Szybkość              : 434,204 kB/s
    


    Weryfikacja zawartości pamięci
    
    Weryfikacja zawartości pamięci
    ID                    : 20 76 20 76 20 76 20 76
    Manufacturer          : ST
    Model                 : NAND512W3A2CN6
    Konfiguracja:
    Target count          : 1
    LUN count             : 1
    Block per LUN         : 4096
    Page per Block        : 32
    Page size             : 512+16
    Rozmiar całkowity     : 69 206 016 bajtów
    Error verify page: T:1 L:0 B:12 P:0 Count bit:1758
    Error verify page: T:1 L:0 B:2739 P:0 Count bit:2272
    Error verify page: T:1 L:0 B:3898 P:0 Count bit:4170
    Weryfikacja zakończona
    Czas rozpoczęcia      : 2016-11-17 07:58:43
    Czas zakończenia      : 2016-11-17 08:00:27
    Szybkość              : 666,346 kB/s
    


    Odczyt z pamięci
    
    Odczyt z pamięci
    ID                    : 20 76 20 76 20 76 20 76
    Manufacturer          : ST
    Model                 : NAND512W3A2CN6
    Konfiguracja:
    Target count          : 1
    LUN count             : 1
    Block per LUN         : 4096
    Page per Block        : 32
    Page size             : 512+16
    Rozmiar całkowity     : 69 206 016 bajtów
    Odczyt zakończony
    Czas rozpoczęcia      : 2016-11-17 08:03:53
    Czas zakończenia      : 2016-11-17 08:05:35
    Szybkość              : 680,553 kB/s
    
  • #21
    Rogatka
    Level 1  
    Witam drodzy autora! Postanowiłem powtórzyć programista. W obliczu tego problemu. Nie mogę zaprogramować plik ATXMega hex. AtmelStudio 7 Klapki i powiedzieć niewłaściwą ilość pliku hex. Proszę mi pomóc wyjaśnić ten problem. Dzięki Konstantyna.
  • #22
    funak
    Level 25  
    Witam.

    Prac ciąg dalszy nad programatorem.
    Na chwilę obecną już mam opracowany algorytm kodów korekcyjnych BCH umożliwiający korekcję do 4 bitów w przestrzeni 512 bajtów. Niebawem dołączę oficjalnie do aplikacji NANDLite. Jednak na chwilę obecną znalazłem te kody tylko w jednym wsadzie pamięci Flash NAND w którym jest system plików UBI.

    Zatem nadal poszukuję jakichkolwiek wsadów celem analizy struktury. Niebawem również będzie możliwość bezpośredniego uploadu wsadów z poziomu aplikacji NANDLite.

    Obecna wersja oprogramowania 1.0.1014.63 - w załączniku.
  • #23
    tplewa
    Level 39  
    funak wrote:
    Witam.
    Jednak na chwilę obecną znalazłem te kody tylko w jednym wsadzie pamięci Flash NAND w którym jest system plików UBI.


    Nie wiem czy takie szukanie po omacku ma jakis sens ;) Zerknij sobie np. na obsluge NAND w U-Boot:
    http://git.denx.de/?p=u-boot.git;a=tree;f=dri...b;hb=2a48b3a2c4ec0f1775deeac5cfe7e61072b6b894

    konkretnie w nand_base.c mozesz zerknac sobie na wybor korekcji:

    http://git.denx.de/?p=u-boot.git;a=blob;f=dri...b;hb=2a48b3a2c4ec0f1775deeac5cfe7e61072b6b894

    Jesli mamy w urzadzeniu Linux-a (a w takim wypadku najczesciej korzystamy tez z U-Boot) mozna z w/w kodu wywnioskowac troche o stosowanych korekcjach w tym BCH. W przypadku stosowania innych sytemow w urzadzeniach moze to wygladac calkiem inaczej, a wiekszosc to systemy komercyjne niestety zamkniete (VxWorks itp.) i tutaj moze to byc juz roznie...
  • #24
    funak
    Level 25  
    Programator nadal się rozwija, czego dowodem jest kolejna wersja oprogramowania.

    Nowa wersja przygotowana jest już do wyboru języku interfejsu, pozostaje jedynie wykonać tłumaczenia.

    Ponadto dodane zostały sterowniki do aplikacji obsługującej programator, nie jest już konieczne szukanie na Internecie odpowiednich do układu FTDI.

    Testowana jest obecnie funkcja uploadu wsadów na serwer NAND Lite. Bardzo to usprawni dalszą pracę nad programatorem, zwłaszcza obsługę badbloków, korekcji bitów itd., gdzie po prostu należy w sposób praktyczny przetestować opracowane algorytmy obsługi w/w zagadnień.

    Zdaję sobie sprawę, że wysłanie 8GB i więcej przez Internet jest problematyczne. Stąd pomysł, aby wyręczyć użytkowników programatora i wykonać funkcję automatycznego upladu działającego w myśl zasady: zaznacz pliki, kliknij wyślij i po sprawie.

    Poniżej przedstawiam aktualną listę zweryfikowanych przez użytkowników obsługiwanych układów:

    Spoiler:
    EON EN27LN1G08-25TCP
    EON EN27LN1G08-25TIP
    EON EN27LN2G08-25TCP
    EON EN27LN2G08-25TIP
    EON EN27LN4G08-25TCP
    EON EN27LN4G08-25TIP
    HYNIX HY27US08121B-T
    HYNIX HY27US08121B-TP
    HYNIX HY27US08281A-T
    HYNIX HY27US08281A-TP
    HYNIX H27UBG8T2BTR-BC
    HYNIX H27UBG8T2CTR-BC
    HYNIX H27UCG8T2ATR-BC
    HYNIX H27UCG8T2BTR-BC
    HYNIX H27U4G8F2DTR-BC
    HYNIX H27U4G8F2ETR-BI
    HYNIX H27U1G8F2BTR-BC
    HYNIX H27U1G8F2CTR-BC
    HYNIX H27U2G8F2CTR-BC
    MACRONIX MX30LF1G18AC
    MACRONIX MX30LF1G08AA-TI
    MACRONIX MX30LF4G18AC
    MICRON MT29F64G08CBAAAWP
    MICRON MT29F1G08ABADAWP
    MICRON MT29F1G08ABAEAWP
    MICRON MT29F2G08ABAEAWP
    MICRON MT29F4G08ABAEAWP
    MICRON MT29F4G08ABADAWP
    MICRON MT29F4G08AAC
    MICRON MT29F8G08ABABAWP
    MICRON MT29F64G08CBABAWP
    SAMSUNG K9G8G08U0A-PCB0
    SAMSUNG K9G8G08U0A-PIB0
    SAMSUNG K9GAG08U0E-SCB0
    SAMSUNG K9GAG08U0E-SIB0
    SAMSUNG K9GAG08U0F-SCB0
    SAMSUNG K9GAG08U0F-SIB0
    SAMSUNG K9GAG08U0M-PCB0
    SAMSUNG K9GAG08U0M-PIB0
    SAMSUNG K9LBG08U0E-SCB0
    SAMSUNG K9LBG08U0E-SIB0
    SAMSUNG K9HCG08U1E-SCB0
    SAMSUNG K9HCG08U1E-SIB0
    SAMSUNG K9F1G08U0A-PCB0
    SAMSUNG K9F1G08U0A-PIB0
    SAMSUNG K9F1G08U0D-SCB0
    SAMSUNG K9F1G08U0D-SIB0
    SAMSUNG K9F2G08U0B-PCB0
    SAMSUNG K9F2808U0C-YIB0
    SAMSUNG K9F2808U0C-PIB0
    SAMSUNG K9F5608U0A-YCB0
    SAMSUNG K9F5608U0A-YIB0
    SAMSUNG K9F5608U0A-PCB0
    SAMSUNG K9F5608U0A-PIB0
    SAMSUNG K9F5608U0B-YCB0
    SAMSUNG K9F5608U0B-YIB0
    SAMSUNG K9F5608U0B-PCB0
    SAMSUNG K9F5608U0B-PIB0
    SAMSUNG K9F5608U0C-YCB0
    SAMSUNG K9F5608U0C-YIB0
    SAMSUNG K9F5608U0C-PCB0
    SAMSUNG K9F5608U0C-PIB0
    SAMSUNG K9F5608U0D-PCB0
    SAMSUNG K9F5608U0D-PIB0
    SAMSUNG K9F1208U0C-XCB0
    SAMSUNG K9F1208U0C-XIB0
    SAMSUNG K9K4G08U0M-PCB0
    ST NAND128W3A
    ST NAND256W3A
    ST NAND512W3A
    ST NAND512W3A2CN6
    ST NAND512W3A2SN6
    ST NAND01GW3A
    ST NAND01GW3B2CN6
    ST NAND04GW3B2DN6
    TOSHIBA TC58NVG2S3ETA00
    TOSHIBA TC58DVM92A5TA00
    TOSHIBA TC58NVG1S3ETA00
    TOSHIBA TC58DVG3S0ETA00
    Toshiba TC58NVG0S3HTA00
  • #25
    Sprut
    Level 9  
    cześć zebrane programista przyszło tak XMEGA hex plik firmware. suma kontrolna liczona dla ciebie, ale wciąż jest błędem. jeśli możesz pomóc mi wysłać poczty operacyjnego firmware hex. djsprut(malpa)mail.ru
  • #26
    leonow32
    Level 30  
    Hej, nie do końca rozumiem celu wstawiania XMEGA i FT245. Czy nie prościej byłoby zrobić wszystko na FT2232 albo USB pociągnąć prosta z XMEGA? Do FT2232 są jakieś bajeranckie sterowniki i większość programatorów np. do FPGA wykorzystuje sam ten jeden układ.
  • #27
    funak
    Level 25  
    Owszem, rozważałem taką możliwość by sterować przy pomocy FDTI oraz bit-bang, jednak przeważyła swoboda konfigurowania pinów podłączanych do XMEGA.

    Druga sprawa, to w XMEGA mogę skorzystać ze sprzętowego pomiaru czasu odczytu/zapisu/kasowania stron.

    Trzecia sprawa, to z poziomu aplikacji PC wysyłam do XMEGA polecenie wykonania określonego zadania i czekam na wynik. Jest to dla mnie wygodne.

    Czwarta sprawa, to programator będzie rozbudowany o dodatkowe funkcjonalności, zatem taka rozbudowana konstrukcja FTDI - XMEGA - NAND była przemyślana również pod tym kątem.

    Dodano po 7 [minuty]:

    Sprut wrote:
    cześć zebrane programista przyszło tak XMEGA hex plik firmware. suma kontrolna liczona dla ciebie, ale wciąż jest błędem. jeśli możesz pomóc mi wysłać poczty operacyjnego firmware hex. djsprut(malpa)mail.ru


    W załączniku zamieszczam fimware do XMEGA w wersji 1024a.
  • #28
    Sprut
    Level 9  
    Jeśli dodać zadanie do złego bloku jest to najlepsze rozwiązanie budżetowe.
  • #29
    funak
    Level 25  
    Witam

    Zapraszam do pobrania najnowszej wersji aplikacji do obsługi programatora NANDLite.
    Link

    Wersja 1.0b1014.78
    + Dodana testowa funkcjonalność wysyłki wsadów na serwer celem analizy struktury.


    Programator pamięci Flash NAND Lite! TSOP48

    Pojawiła się zakładka Wsady, gdzie można dodawać już pliki z wsadem, który w łatwy sposób zostanie wysłany na serwer celem analizy.

    Obecnie pojemność serwera wynosi 200GB, z czasem rozszerzy się jego pojemność.

    Wysłane wsady pomogą mi w rozpracowywaniu struktur danych dotyczących omijania uszkodzonych bloków pamięci, jak również testowanie algorytmów korekcji danych ECC.

    Wysłane pliki oczywiście są w sposób anonimowy i dostępne tylko dla mnie.

    Dołączam wersję aplikacji NANDLite bez instalacji, w załączniku.
  • #30
    funak
    Level 25  
    Dziękuję za szybką reakcję. Do dziś otrzymałem od Państwa 5 wsadów pod układ K9GAG08U0E o pojemności 2GB. Wiążą się z tym dwie rzeczy:
    - system uploadu działa prawidłowo
    - analizę BAD BLOKÓW rozpocznę właśnie od tych układów.

    Część informacji już mam rozpracowane, m.in. że zastał zastosowany algorytm korekcji błędów ECC typu BCH.
    Każda strona o wielkości 8kB jest podzielona na fragmenty po 1036 bajtów, którą zabezpieczają dodatkowe 42 bajty danych, umożliwiając naprawienie 24 błędnych bitów. Czyli w sumie na stronie może być 192 błędnych bitów a i tak będzie można prawidłowo odczytać informacje. Zatem, w mojej ocenie: Nieźle :)
    Zastosowany system Samsung'a: FSR: Flex Sector Remapper.
    Do poszukania została właściwa rzecz, czyli mapa z relokacją uszkodzonych bloków, w czym mam nadzieję, że pomogą mi przesłane wsady.

    Tym samym jednocześnie proszę o nadsyłanie jakichkolwiek wsadów celem dalszej analizy.
    Niebawem będzie możliwość pobierania wysłanych wsadów, bezpośrednie programowanie z Internetu i wiele, wiele innych fajnych funkcjonalności.

    Dziękuję za wsparcie NAND Lite!