Jak mogę celowo uszkodzić / uszkodzić sektor na karcie SD?


142

Muszę przetestować odporność jakiegoś kodu do odczytu / zapisu dla niektórych osadzonych urządzeń. Jak mogę poświęcić kilka kart SD i rozbić kilka znanych sektorów w celu kontrolowanego badania?

Jedyne, co mogę wymyślić, to zastąpienie jednego sektora kilka milionów razy. Zastanawiam się, czy można utworzyć skrypt Badblocks dla Linuksa, aby kilkakrotnie kilkakrotnie uruchamiał swój niszczycielski test na jednym sektorze.


20
Czy możesz zmienić niskopoziomowy sterownik SD, aby udawać, że jest zły blok, czy to nie wchodzi w rachubę?

3
@MarkYisri, nie sądzę, że sterownik jest bardzo dostępny. Niezależnie od tego, jakiego sterownika używamy, jest on bardzo podstawowy, aby zmaksymalizować przydział pamięci dla reszty oprogramowania układowego. Ponadto, jeśli to możliwe, prawdopodobnie nie byłoby to możliwe.
Gabe Krause,

3
Czy potrafisz zbudować emulator karty SD? Pamiętaj, że to nie jest najprostszy projekt.
user20574

11
Biorąc pod uwagę cel, możesz kupić używane karty SD za niewielkie pieniądze i łatwo dostać wadliwą, lub umieścić ogłoszenie „szukam ...”, aby szukać wadliwych kart. Lub wyszukaj w serwisie eBay uszkodzone karty. Następnie przetestujesz kartę i poznasz pozycję wadliwych obszarów.
FarO

28
Zapytaj dowolnego profesjonalnego fotografa. Na pewno będą mieli stos szkicowych kart SD.
J ...

Odpowiedzi:


168

Alternatywne podejście, które może być przydatne.

Jeśli kod działa pod Linuksem, być może możesz go przetestować za pomocą „wadliwego” urządzenia logicznego. dmsetuppotrafi tworzyć urządzenia zwracające błędy We / Wy. Po prostu zbuduj urządzenie za pomocą errori / lub flakeycelu. Od man 8 dmsetup:

error
Błędy w każdym wejściu / wyjściu do tego obszaru. Przydatny do testowania lub tworzenia urządzeń z dziurami w nich.

flakey
Tworzy podobne odwzorowanie do linearcelu, ale okresowo wykazuje niewiarygodne zachowanie. Przydatne do symulacji wadliwych urządzeń podczas testowania.

Uwaga: flakeyużycie celu jest tutaj udokumentowane . Podstawowy przykład tutaj .

O ile mi wiadomo, błąd we / wy zostanie natychmiast zgłoszony, więc różni się on od rzeczywistego zachowania karty SD, w którym można spodziewać się opóźnienia, przeciągnięcia itp. Niemniej jednak uważam, że to podejście może być przydatne w niektórych przypadkach, przynajmniej do szybkiego wykonania wstępny test lub coś takiego.


34
Doceniam to nieszablonowe myślenie! Łączymy się na poziomie bloku z SD za pośrednictwem układu Atmel 80 MHz i nie ma prawdziwego systemu operacyjnego.
Gabe Krause,

1
@GeBeKrause. W takim przypadku przydatność tej odpowiedzi zależy od tego, jak podobny może być interfejs API urządzenia blokowego systemu Linux do interfejsu API wbudowanego sterownika urządzenia.
Qsigma

1
dmsetuppolecenie konfiguracji errorurządzenia, które zawsze zwraca błędy odczytu: stackoverflow.com/questions/1870696/…
Peter Cordes

1
Zgadzam się, że to brzmi jak lepsze rozwiązanie. Najpierw możesz replikować na dowolnym sprzęcie. A także możesz symulować różne tryby błędów. Na przykład mam dysk flash USB 16 GB, który działa dobrze. Po pewnym czasie określony obszar zaczyna zwracać nieprawidłowe dane. Nie ma żadnego błędu FS. Czytasz plik, ale treść jest inna. Niektóre sektory są oczywiście niestabilne. Ale jak będzie się zachowywać określone urządzenie, nie można z góry ustalić.
akostadinov

76

Ten facet zhakował mikrokontroler wewnątrz kart SD używanych do oznaczania złych bloków: https://www.bunniestudios.com/blog/?p=3554

Możesz zrobić to samo i dowolnie oznaczyć bloki jako wadliwe.

Dzisiaj na Chaos Computer Congress (30C3), xobs i ja ujawniliśmy odkrycie, że niektóre karty SD zawierają luki, które pozwalają na wykonanie dowolnego kodu - na samej karcie pamięci. Z drugiej strony, wykonanie kodu na karcie pamięci umożliwia klasę ataków MITM (man-in-the-middle), gdzie karta wydaje się zachowywać w jedną stronę, ale w rzeczywistości robi coś innego. Z drugiej strony pozwala entuzjastom sprzętu uzyskać dostęp do bardzo taniego i wszechobecnego źródła mikrokontrolerów.

.

Algorytmy te są zbyt skomplikowane i zbyt specyficzne dla urządzenia, aby można je było uruchamiać na poziomie aplikacji lub systemu operacyjnego, więc okazuje się, że każdy dysk z pamięcią flash jest dostarczany z rozsądnie wydajnym mikrokontrolerem do uruchamiania niestandardowego zestawu algorytmów abstrakcyjnych dysków. Nawet drobna karta microSD zawiera nie jeden, ale co najmniej dwa układy scalone - kontroler i co najmniej jeden układ flash (karty o wysokiej gęstości będą układać wiele matryc flash).

.

Wbudowany mikrokontroler to zazwyczaj mocno zmodyfikowany procesor 8051 lub ARM. W nowoczesnych implementacjach mikrokontroler zbliży się do poziomów wydajności 100 MHz, a także będzie miał kilka przyspieszaczy sprzętowych. Co zaskakujące, koszt dodania tych kontrolerów do urządzenia jest prawdopodobnie rzędu 0,15-0,30 USD, szczególnie dla firm, które potrafią zarówno pamięci flash, jak i kontrolerów w tej samej jednostce biznesowej. Prawdopodobnie taniej jest dodać te mikrokontrolery, niż dokładnie przetestować i scharakteryzować każdy układ pamięci flash, co wyjaśnia, dlaczego zarządzane urządzenia flash mogą być tańsze na bit niż surowe układy flash, pomimo włączenia mikrokontrolera.

.

Najważniejsze jest to, że mechanizm ładowania i aktualizacji oprogramowania układowego jest praktycznie obowiązkowy, szczególnie w przypadku kontrolerów innych firm. Użytkownicy końcowi rzadko są narażeni na ten proces, ponieważ wszystko dzieje się w fabryce, ale nie czyni to mechanizmu mniej realnym. Podczas eksploracji rynków elektronicznych w Chinach widziałem, jak właściciele sklepów płoną oprogramowanie na kartach, które „zwiększają” pojemność karty - innymi słowy, ładują oprogramowanie, które informuje, że pojemność karty jest znacznie większa niż faktyczna dostępna pamięć. Fakt, że jest to możliwe w punkcie sprzedaży, oznacza, że ​​najprawdopodobniej mechanizm aktualizacji nie jest zabezpieczony.

W naszym wystąpieniu w 30C3 informujemy o naszych odkryciach dotyczących konkretnej marki mikrokontrolera, a mianowicie Appotech i jej ofert AX211 i AX215. Odkrywamy prostą sekwencję „stukania” przesyłaną za pomocą poleceń zarezerwowanych przez producenta (a mianowicie CMD63, a następnie „A”, „P”, „P”, „O”), które wprowadzają kontroler do trybu ładowania oprogramowania układowego. W tym momencie karta zaakceptuje kolejne 512 bajtów i uruchomi ją jako kod.


10
Spośród wszystkich odpowiedzi, ta jest prawdopodobnie najbliższa temu, o co w rzeczywistości poprosił PO.
Cort Ammon

11
To była fantastyczna lektura!
Gabe Krause,

@Twisty skopiował niektóre odpowiednie części.
FarO

2
Idę w dół króliczej nory do świata architektury kart SD.
Tejas Kale,

38

Zwykle to nie działa, ponieważ najnowsze karty SD (lub eMMC) używają statycznego i dynamicznego wyrównywania zużycia, co oznacza, że ​​inteligentny kontroler interpretuje instrukcję zapisu i mapuje ją do jednego z najmniej używanych sektorów flash.

Jedyne, co możesz zrobić, to skontaktować się ze swoimi dostawcami i poprosić o ich arkusz danych; mogą istnieć pewne (specyficzne dla dostawcy) sposoby odzyskania stanu ich algorytmu wyrównywania zużycia. To potencjalnie pozwoli ci zapytać o stan / użycie bazowej pamięci flash. Lub możesz mieć pecha, a to może nie istnieć.

Jeśli Twoim celem jest naprawdę zniszczenie pamięci flash, wszystko, co możesz zrobić, to uruchomić ogromne cykle odczytu i zapisu oraz stale sprawdzać, czy dane, które odczytujesz, są nadal spójne. Np. Utwórz dwa duże pliki, przechowuj ich sumy kontrolne i odczytuj / zapisuj je w celu weryfikacji ich sumy kontrolnej. Im większy błysk, tym dłużej potrwa ten proces.


2
Czy to nie zadziała, jeśli karta SD jest całkowicie wypełniona danymi, więc nie można jej dużo odwzorować? Nie sądzę, że mają wiele wolnych ukrytych sektorów.
Ruslan

2
@ Ruslan Urządzenie nie musi wiedzieć, czy sektor jest czymś wypełniony. Musi tylko wiedzieć, jakie sektory dostarczać na żądanie i które sektory pisać na żądanie. A potem może istnieć warstwa abstrakcji, która wykorzystuje inną pamięć fizyczną do reprezentowania tych sektorów zgodnie z pewnym nieujawnionym algorytmem ... - A „pełny” oznacza tylko „próg dla osiągniętych bloków, które można obecnie wypełnić”.
Alexander Kosubek,

6
@ Ruslan: Nawet jeśli całe urządzenie ma na sobie dane, poziomowanie zużycia może być nadal skuteczne: na przykład, jeśli sektor A został napisany raz, a sektor B został napisany 1000 razy, to kiedy pojawi się kolejny zapis sektor B karta może zamienić dane dla dwóch sektorów, dzięki czemu sektor A zawiera dane sektora B (i prawdopodobnie zostaną zastąpione wiele razy więcej - ale to jest OK, ponieważ jest świeży), a sektor B będzie zawierał dane sektora A (które będą mam nadzieję, że niewiele się zmieni). Oczywiście urządzenie musi również przechowywać mapowanie, który sektor jest przechowywany gdzie.
psmears,

2
@GeBeKrause tak, taka jest natura bestii. Na najniższym poziomie masz albo nand, albo flash chipy (obecnie wszystko używa nand), a przed chipem nand znajduje się inteligentny kontroler, który kończy magistralę (np. Usb dla pamięci USB lub mmc dla karty SD ), a ten układ jest odpowiedzialny za odwzorowanie / niwelację zużycia itp., odciąga od ciebie flesz. Jeśli używałbyś nand na wbudowanym Linuksie, to na przykład zrobiłby dla ciebie ubifs.
amo-ej1

2
Karty SD mają mikrokontroler, który implementuje „Flash Translation Layer” - żądania bloku są tłumaczone przez ten mikrokontroler na surowe polecenia NAND. Niektóre karty SD mają ukryte polecenia zmiany / aktualizacji oprogramowania układowego MCU, a nawet podjęto pewne działania inżynierii wstecznej. Większość urządzeń pamięci flash innych niż surowe NAND (które mogą pojawiać się w niektórych przypadkach, takich jak wiele routerów domowych), jest prawdopodobnie „przeszacowanych” - co oznacza, że ​​na karcie SD o pojemności 1 GB prawdopodobnie znajduje się coś w rodzaju 1024 MB + 128 MB surowej przestrzeni NAND, aby pokryć wyrównywanie zużycia, gdy jest pełna a także oszczędzanie sektorów w przypadku złych stron flash.
LawrenceC

32

Możesz zwiększyć zużycie tranzystora, zwiększając temperaturę pracy. Użyj cykli kasowania zapisu na rozgrzanym układzie scalonym (70–120 ° C); będzie się zużywał szybciej.


18
Nadmierna temperatura przechowywania jest również szkodliwa, dlatego bardziej praktyczne może być „gotowanie” chipa w temperaturze 120 ° C (lub nawet wyższej) przez pewien czas, a następnie sprawdzanie pod kątem wad.
Dmitrij Grigoryev

2
Możliwe jest również niewielkie przepięcie w zasilaniu karty, które podobnie wymagałoby eksperymentowania.
Chris H

Zbyt niskie napięcie może również powodować różnego rodzaju defekty, takie jak blokady kontrolera.
user20574,

18

Przedmowa: Ta opcja wymaga dodatkowych modyfikacji programowych i sprzętowych, ale pozwoliłaby na kontrolowane odczyty najprawdopodobniej przezroczyste dla hosta.

Karta SD ma wiele opcji we / wy, ale można nią sterować za pomocą interfejsu SPI. Jeśli weźmiesz kartę SD i zmodyfikujesz ją tak, abyś mógł podłączyć piny do mikrokontrolera (takiego jak Arduino), możesz mieć Arduino naśladujące kartę SD i być przezroczyste dla urządzenia odczytującego kartę SD. Twój kod na mikrokontrolerze może celowo zwrócić złe dane, gdy zajdzie taka potrzeba. Ponadto można umieścić kartę SD w mikrokontrolerze, aby odczyt mógł przejść przez mikrokontroler do karty SD, aby umożliwić gigabajty testowania.


3
Większość szybkich urządzeń (w tym czytniki kart PC) po prostu odmówi pracy z kartą, która nie obsługuje czterobitowej karty SD.
Dmitry Grigoryev

1
OP powiedział, że jest to system osadzony, który będzie korzystał z karty, co zwiększy prawdopodobieństwo obsługi SPI dla kart SD
Eric Johnson

3
Wariantem tej, ale trudniejszej pracy, byłoby znalezienie karty SD, dla której można przeflashować oprogramowanie .
Peter Taylor

2
To jest bardzo interesujące! Nasz system wbudowany działa we / wy przez SPI. Nie jestem pewien, czy mam przepustowość do modyfikowania naszego sprzętu, aby dokonać takiego dodania, ale myślę, że to genialne myślenie.
Gabe Krause,

2
Zdobycie wiedzy na temat dynamicznego wyrównywania zużycia prowadzi mnie do przekonania, że ​​strategiczne utworzenie „złej” karty SD ze znanymi uszkodzonymi sektorami jest o wiele trudniejsze (lub niemożliwe), niż miałem nadzieję, stawiając pytanie. Chociaż obecnie wykraczam poza zakres moich możliwości, wydaje się, że jest to najbardziej kontrolowane i technicznie obiecujące podejście, a następnie prawdopodobnie @Olafm. Dostosowanie pośredniego sprzętu do przechwytywania i „uszkodzenia” danych w dowolnej wstępnie zdefiniowanej lokalizacji sektora podczas przesyłania danych wydaje się dobrym rozwiązaniem.
Gabe Krause,

15

Chciałbym pójść na eBay / aliexpress i kupić najtańszą kartę SD, jaką mogę znaleźć w Chinach, która jest „zbyt piękna, aby mogła być prawdziwa”. Często pochodzą z wadliwych sektorów lub w oprogramowaniu są znacznie większe niż w rzeczywistości. Tak czy inaczej, powinieneś skończyć z wadliwą kartą SD do testowania.


Ciekawe podejście, ale jak napisałbyś do złych obszarów, aby przetestować wpływ złych bloków na przechowywany kod?
fixer1234,

@ fixer1234, miałem jedną z tych kart SD, która powiedziała, że ​​to 32 GB, ale tak naprawdę to tylko 128 MB. Włożyłem go do aparatu i mogłem robić zdjęcia powyżej 128 MB, ale tylko pierwsze zdjęcia można było odczytać. Reszta została wymieniona, ale została przeczytana jako zepsuta. Zgadnij, w jaki sposób chcą, abyś najpierw zauważył problemy z kartą, kiedy jest już za późno, aby złożyć skargę ...
GuzZzt

11

Dawno, dawno temu, wiele lat temu zapłacono mi za odzyskanie zestawu zdjęć dyplomowych i filmów z karty SD dla raczej zrozpaczonej matki. Po dokładnej inspekcji karta została w jakiś sposób fizycznie uszkodzona z widocznym pęknięciem w zewnętrznej obudowie i miała kilka wadliwych sektorów, w szczególności kilka wczesnych, krytycznych sektorów, co sprawiło, że nawet najbardziej niezawodne programy odzyskiwania w tym czasie całkowicie nie odczytały karty . Ponadto narzędzia danych kryminalistycznych kosztują wówczas fortunę.

Skończyło się na uzyskaniu identycznej karty SD marki / rozmiaru i napisaniu własnego niestandardowego narzędzia zrzutu i przywracania danych surowych, aby skopiować dane ze złej karty na dobrą. Za każdym razem, gdy narzędzie uderza w zły sektor, kilkakrotnie ponawia próbę przed zapisaniem wszystkich zer dla tego sektora i zamiast poddawać się i zatrzymywać, ignoruje awarię i przechodzi do następnego sektora. Próbowano ponowić próbę, ponieważ zauważyłem również, że niektóre sektory nadal mają około 40% skuteczności odczytu. Gdy dane znalazły się na nowej karcie SD, narzędzia do odzyskiwania, które zawiodły wcześniej, działały bezbłędnie przy minimalnej utracie / uszkodzeniu danych. Ogółem odzyskano około 98% wszystkich plików. Odzyskano również wiele elementów, które zostały wcześniej usunięte, ponieważ nic nigdy nie jest faktycznie usuwane - tylko oznaczone jako takie i powoli nadpisywane. To, co zaczęło się jako nieco nudne ćwiczenie odzyskiwania danych, stało się jednym z moich bardziej pamiętnych i interesujących projektów rozwoju oprogramowania osobistego. Gdybyś się zastanawiał, matka była zachwycona.

W każdym razie ta historia pokazuje, że możliwe jest fizyczne uszkodzenie karty SD, tak że dane są nadal dostępne, ale mają sektory, które ledwo funkcjonują i wszystko, co próbuje je odczytać, ma z tym trudności. Plastikowe karty SD wydają się być dość cienkie, więc załamanie lub przecięcie niektórych tanich może załatwić sprawę. Twój przebieg może się różnić.

Możesz również zapytać w niektórych miejscach odzyskiwania danych w Twojej okolicy. Ponieważ specjalizują się one w odzyskiwaniu danych z różnych urządzeń, które uległy awarii lub awarii, powinny mieć przydatne informacje / porady, a nawet mieć pod ręką niektóre wcześniej zapisane karty SD (np. Do celów szkoleniowych), które można uzyskać od nich.


2
Czy udostępniłeś to narzędzie online? Byłoby wspaniale dodać do mojego arsenału.
Ploni,

1
W tym momencie prawdopodobnie nawet nie działałby właściwie, biorąc pod uwagę postęp technologiczny (może nawet nie skompilować) i wywołania systemowe niskiego poziomu, z których korzystałem. Istnieje również kilka nowoczesnych narzędzi do klonowania urządzeń / napędów śledczych typu open source, których wolałbym najpierw użyć, niż wyciągnąć moje stare oprogramowanie z mothballs.
CubicleSoft,

Oczekuję, że prawdopodobnie możesz podać tylko niektóre parametry, aby ddw dzisiejszych czasach zachowywał się podobnie. Nie jestem jednak pewien.
wizzwizz4

@ wizzwizz4, spójrz na ddrescue.
hildred

„Także narzędzia danych kryminalistycznych kosztują wówczas fortunę”. Jestem pewien, że nadal tak robią.
jpmc26,

5

Ta odpowiedź jest rozwinięciem komentarza @Ruslan

  1. Wypełnij kartę SD do około 99,9%
  2. Ciągłe przepisywanie zawartości pozostałych 0,1% (Napisz A-usuń-napisz B-usuń - Napisz A ...)
  3. Sprawdzaj (okresowo), czy już złamałeś kartę

Możliwa alternatywa:

Nie jestem pewien, czy działa to na twoje potrzeby, ale może faktycznie wystarczy fizycznie uszkodzić kartę, co może być znacznie szybsze.


6
Wypełnienie karty do 99% nie pomoże, ponieważ głównym celem wyrównywania zużycia jest zapobieganie dokładnie tego rodzaju przedwczesnym uszkodzeniom. Fizyczne uszkodzenie karty prawie na pewno spowoduje, że karta już się nie inicjuje.
Dmitry Grigoryev

2
@DmitryGrigoryev W jaki sposób wyrównanie zużycia będzie bardzo pomocne (w tym przypadku utrudnienie), chyba że karta ma znacznie więcej pamięci niż jej oficjalna pojemność?
ispiro

12
@ispiro Na przykład, kiedy następnym razem sektor o dużej liczbie zapisów zostanie nadpisany, jego zawartość może zostać zamieniona na sektor o niskiej liczbie zapisów.
Dmitry Grigoryev

1
@DmitryGrigoryev Jeśli poprawnie interpretuję tę odpowiedź, powinny istnieć karty SD, które nie noszą lvling: electronics.stackexchange.com/a/27626/16104
Dennis Jaheruddin

1
@DennisJaheruddin Tak, starsza karta tego nie robi. przy pomocy tych kart wystarczy wielokrotnie tworzyć / usuwać pusty plik, aż sektor się zużyje.
Dmitrij Grigoriew

3

Możesz spróbować wprowadzić niestabilny zasilacz lub sygnalizację wyższego napięcia.

Powszechny błąd w rodzinie urządzeń, które znam, ma silną korelację między uszkodzeniem karty SD a przerywanym stykiem baterii.


3

Niektóre starsze karty SD o niskiej pojemności (16 MB) używają układów flash w pakietach w stylu TSOP / TSSOP. Warsztat zdolny do przeróbki SMT (jeśli wykonujesz pracę osadzoną, możesz mieć tę umiejętność na miejscu, w przeciwnym razie sprawdź, czy małe firmy wykonujące naprawę telefonu / laptopa na poziomie płyty głównej) może oddzielić i ponownie podłączyć ten układ, aby można go było czytać i pisać surowe (w tym kody ECC) z programatorem urządzeń.

Pamiętaj jednak, że będziesz głównie testował:

  • Jak Twoje urządzenie poradzi sobie z możliwymi aberracjami czasowymi / czkawkami wprowadzonymi przez wewnętrzną korekcję błędów

aw najgorszym przypadku

  • jak twoje urządzenie radzi sobie z terminalnie niesprawną kartą SD.

Jeśli chcesz tylko sprawdzić, jak zachowuje się z nieregularnym zachowaniem z jakiejkolwiek przyczyny z karty SD, prawdopodobnie najlepiej po prostu wprowadzić zakłócenia elektryczne do linii interfejsu (np. Umieszczając przełącznik magistrali FET pomiędzy, a losowo chwilowo przełączając do źródła bezsensownych sygnałów (o odpowiednich poziomach elektrycznych).


Terminalnie uszkodzone karty SD nie generują „szumu elektrycznego”, po prostu zwracają kody błędów dla operacji zapisu.
Dmitry Grigoryev

2

Powiązane z odpowiedzią OlafM, ale inne: możesz zaprogramować własny mikrokontroler, aby mówił protokół karty SD, a następnie emulować dowolne zachowanie, jakie chcesz.


1

Obszar FAT32 Master Boot Record jest prawdopodobnie najbardziej podatny na nadużycia, ponieważ na poziomie logicznym zawsze musi znajdować się w tym samym miejscu. (Być może rozwiązuje to problem miękkiego mapowania uszkodzonych sektorów, ale jestem nieco sceptyczny, że jest to realizowane na całym sprzęcie.) Możesz więc uruchomić sfdiskw pętli i sprawdzić, czy możesz to w ten sposób zniszczyć.

Ale błagam cię, abyś zrobił wszystko, co możliwe, aby poprawić niezawodność sprzętu, zamiast próbować obsługiwać zły sprzęt w oprogramowaniu. Problem polega na tym, że karty SD zawodzą na różne dziwne sposoby. Stają się nieczytelne, stają się nie do zapisania, dają złe dane, tracą czas podczas operacji itp. Próba przewidzenia wszystkich przyczyn niepowodzenia karty jest bardzo trudna.

Oto jedna z moich ulubionych awarii, „tryb dużych zbiorów danych”:

złe sd fałszywe duże dane

Karty SD są towarowymi produktami konsumenckimi, które podlegają ogromnej presji kosztowej. Części zmieniają się szybko, a arkusze danych są trudne do zdobycia. Podrobiony produkt nie jest niespotykany. W przypadku taniego miejsca do przechowywania są trudne do pokonania, ale chociaż dyski SSD traktują niezawodność priorytetem, priorytetem dla kart SD jest szybkość, pojemność i koszt (prawdopodobnie nie w tej kolejności).

Pierwszą linią obrony jest użycie lutowalnej części eMMC z prawdziwym arkuszem danych renomowanego producenta zamiast wymiennej karty SD. Tak, kosztują więcej za GB, ale część będzie produkowana przez dłuższy czas, a przynajmniej wiesz, co dostajesz. Przylutowanie części pozwala również uniknąć wielu potencjalnych problemów (karty wyrwane podczas zapisu, słaby kontakt elektryczny itp.) Z kartą wymienną.

Jeśli Twój produkt wymaga wymiennego miejsca do przechowywania lub po prostu jest za późno, aby cokolwiek zmienić, zastanów się nad wydaniem dodatkowych pieniędzy na karty klasy „przemysłowej” lub traktuj je jak przedmioty jednorazowego użytku. To, co robimy (pod Linuksem), to fsckkarta podczas rozruchu i sformatuj ją, jeśli zostaną zgłoszone jakiekolwiek błędy, ponieważ formatowanie jest dopuszczalne w tym przypadku użycia. Potem fsckto znowu. Jeśli po ponownym sformatowaniu nadal zgłasza błędy, zmieniamy go na RMA i zastępujemy sprzęt nowszym wariantem korzystającym z eMMC.

Powodzenia!


Dałem ci kciuki do góry. Używam dużo kart SD i mam jedną awarię kilka razy w roku. Nigdy nie zastanawiałem się nad tym, ale z własnego doświadczenia wynika, że ​​moje nieudane karty wykazywały objawy awarii FAT, zanim ostatecznie stały się bezwartościowe. Wydaje mi się, że coś tu masz :) Więc po prostu tworzenie i usuwanie plików powinno sprawić, że nie będziesz miał FAT.
jwzumwalt

1

Być może nie jest to kierunek, w którym chciałeś, ale stwierdziłem, że usunięcie mojej karty SD podczas odczytu radia lub laptopa gwarantuje, że karta SD uległa awarii około 1/5 lub 1/10 razy. Wygląda na to, że karty nie radzą sobie dobrze po usunięciu zasilania podczas odczytu i prawdopodobnie pisze. Po przeczytaniu poniższych komentarzy Roberta Calhouna, sądzę, że może to szkodzić FAT. Chociaż nie wiem, dlaczego samo czytanie powoduje awarię - nie powinno być żadnego pisania?


może to uszkodzić FS, ale nie jestem pewien, czy faktycznie stworzy złe sektory
akostadinov,

Mogę powiedzieć, że powoduje to awarię karty i wymaga ponownego sformatowania. Robiłem to wiele razy z kartami SD i Raspberry Pie, moim laptopem i kilkoma moimi domowymi urządzeniami.
jwzumwalt

2
Wymaga sformatowania! = Powoduje uszkodzenie sektorów . System plików, tak. Może sektory.
wizzwizz4

1

Jeśli twoja karta SD ma format FAT32, możesz edytować heksadecymalnie 2 tłuszcze i oznaczać sektor jako zły za pomocą poprawnego kodu hex. To tylko sztuczka, jeśli chcesz przetestować logicznie oprogramowanie, które ma znaleźć zły sektor w tym konkretnym miejscu; nie zaszkodzi również karcie SD, sformatowanie przywróci ją do normalnego stanu.


1
Witamy w Super User! To wydaje się interesujące podejście - czy możesz wyjaśnić, jak konkretnie wykonać edycję szesnastkową? Dzięki.
Ben N

Myślę, że polecenie hdparm dla Linuxa załatwi sprawę: pozwoli ci zapisać jakiś sektor, który możesz później edytować, a następnie zapisać na kartę. musisz jednak znaleźć dokumentację na temat vfat i man hdparm. Przepraszam, nie jestem nigdzie blisko komputera z systemem Windows.
Emile De Favas,

--make-bad-sectorFlaga wygląda obiecująco! Nie wiem jednak, czy to zadziała tylko w systemie Linux, który początkowo uruchamia to polecenie. Mam nadzieję, że to polecenie w hdparm --make-bad-sector 20000 /dev/sd#jakiś sposób spowoduje uszkodzenie sektora 20000 i zostanie wykryte jako złe na moim wbudowanym urządzeniu sprzętowym, które nie działa pod Linuksem. jakieś pomysły?
Gabe Krause,

0

Zastanawiam się, czy można utworzyć skrypt Badblocks dla Linuksa, aby kilkakrotnie kilkakrotnie uruchamiał swój niszczycielski test na jednym sektorze.

W jednym sektorze - nie, ponieważ kod wyrównywania zużycia wewnątrz karty SD ponownie zamapuje logiczne bloki w dowolnym miejscu.

Ale można łatwo uruchomić badblocks -ww pętli, dopóki nie powoduje pewne złe bloki pojawiają. Coś takiego powinno działać:

while badblocks -w /dev/xx; do :; done

zakładając, że badblocks zwraca 0, jeśli nie wykryto złych bloków, a w przeciwnym razie ≠ 0 (strona podręcznika nie mówi i nie sprawdziłem kodu źródłowego).


-1

Zwykle w przypadku kart SD / usSD wprowadzają poziom zużycia, więc może to być dość trudne. W zależności od typu (komórka jednowarstwowa, wielowarstwowa, TLC, 3D-NAND itp.) Cykl zapisu wymagany do przerwania go na tyle, aby wyczerpał pulę sektorów, może znajdować się w wielu TB.

Właściwie przetestowałem to z 4 GB, 64 GB i 256 GB Pro Duo, SSD i napędem thumbdrive, 64 GB K --- s --- przy użyciu 4 mikronów 16 GB układy trwały około 3,84 TB, zanim zawiodło z pojedynczym błędem miękkim w obszarze FAT . Wykorzystanie 256 GB trwało nieco krócej, ale oszacowałoby bez bezpośredniego dostępu do układu, prawdopodobnie napisało może 5 TB, zanim ostatecznie uległo uszkodzeniu MBR, ale nie było jasne, czy kontroler spowodował, że działał solidnie w trybie USB3, ale USB2 miał więcej błędów podczas odczytu i było też bardzo gorąco. 4 GB Duo nie działa w czytniku podczas kopiowania danych, ponownie nie można być pewnym, ale równa się to może 6 lat użytkowania, a aparat wyświetlał również komunikaty „Odzyskiwanie”. Przypadkowo zmieniające się napięcie zasilania podczas zapisu spowoduje, że będzie on działał DUŻO szybciej. Mój 128 GB microSD nie działa po około 2 latach użytkowania z podobnymi objawami,

Usunięto niepotrzebne uwagi na temat eksperymentów rentgenowskich.


1
Istnieje już kilka odpowiedzi, które pomagają zniszczyć określone rektory. Twoja sugestia na temat niszczenia losowych nie daje nic więcej.
Máté Juhász
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.