Bagaimana saya dapat dengan sengaja merusak / merusak suatu sektor pada kartu SD?

142

Saya perlu menguji ketahanan beberapa kode baca / tulis untuk beberapa perangkat keras tertanam. Bagaimana saya bisa mengorbankan beberapa kartu SD dan menghancurkan beberapa sektor yang diketahui untuk studi terkontrol?

Satu-satunya hal yang dapat saya pikirkan adalah menimpa satu sektor beberapa juta kali. Saya ingin tahu apakah skrip Linux badblocks dapat dibuat untuk menjalankan tes destruktif pada satu sektor berulang kali selama beberapa jam.

Gabe Krause
sumber
20
Bisakah Anda mengubah driver SD tingkat rendah untuk berpura-pura ada blok buruk, atau apakah itu keluar dari pertanyaan?
3
@MarkYisri, saya rasa drivernya tidak mudah diakses. Driver apa pun yang kami gunakan adalah ultra-rudimenter untuk memaksimalkan alokasi memori ke seluruh firmware. Juga, jika itu mungkin, itu kemungkinan berada di luar kemampuan saya.
Gabe Krause
3
Bisakah Anda membuat emulator kartu SD? Bukan proyek yang paling sederhana, ingatlah.
user20574
11
Mengingat tujuannya, Anda dapat membeli beberapa kartu SD bekas dengan sedikit uang dan Anda dapat dengan mudah mendapatkan kartu SD yang salah, atau memasang "mencari ..." mengumumkan secara spesifik mencari kartu yang rusak. Atau cari eBay untuk kartu yang rusak. Kemudian Anda menguji kartu dan Anda akan tahu posisi area yang rusak.
FarO
28
Tanyakan fotografer profesional. Mereka pasti memiliki setumpuk kartu SD yang samar, tentunya.
J ...

Jawaban:

168

Pendekatan alternatif yang mungkin bermanfaat.

Jika kode Anda berjalan di Linux maka mungkin Anda dapat mengujinya dengan perangkat logis "rusak". dmsetupdapat membuat perangkat yang mengembalikan kesalahan I / O. Buat saja perangkat Anda menggunakan errordan / atau flakeytarget. Dari man 8 dmsetup:

error
Kesalahan setiap I / O yang masuk ke area ini. Berguna untuk pengujian atau untuk membuat perangkat dengan lubang di dalamnya.

flakey
Membuat pemetaan yang mirip dengan lineartarget tetapi menunjukkan perilaku yang tidak dapat diandalkan secara berkala. Berguna untuk mensimulasikan perangkat yang gagal saat pengujian.

Catatan: flakeytarget penggunaan didokumentasikan di sini . Contoh dasar di sini .

Sejauh yang saya tahu kesalahan I / O akan dilaporkan segera, jadi ini berbeda dari perilaku kartu SD nyata di mana Anda dapat mengharapkan keterlambatan, menunda, dll. Namun saya pikir pendekatan ini mungkin berguna dalam beberapa kasus, setidaknya untuk bekerja cepat tes pendahuluan atau lebih.

Kamil Maciorowski
sumber
34
Saya menghargai pemikiran out-of-box! Kami berinteraksi pada tingkat blok dengan SD melalui chip Atmel 80MHz dan tidak ada OS nyata.
Gabe Krause
1
@GabeKrause Dalam hal mana kegunaan jawaban ini tergantung pada seberapa mirip API perangkat blok Linux dengan API driver perangkat yang disematkan.
Qsigma
1
dmsetupperintah untuk menyiapkan errorperangkat yang selalu mengembalikan kesalahan baca: stackoverflow.com/questions/1870696/…
Peter Cordes
1
Saya setuju bahwa ini terdengar seperti solusi yang lebih baik. Pertama, Anda dapat mereplikasi perangkat keras apa pun. Dan Anda juga dapat mensimulasikan berbagai mode kesalahan. Misalnya saya punya flash drive USB 16GB yang berfungsi dengan baik. Setelah beberapa waktu, area tertentu mulai mengembalikan data yang salah. Tidak ada kesalahan FS dalam bentuk apa pun. Anda membaca file tetapi isinya berbeda. Beberapa sektor jelas tidak stabil. Tetapi bagaimana beberapa perangkat tertentu akan berperilaku tidak dapat diketahui sebelumnya.
akostadinov
75

Orang ini meretas mikrokontroler di dalam kartu SD yang digunakan untuk menandai blok buruk: https://www.bunniestudios.com/blog/?p=3554

Anda mungkin dapat melakukan hal yang sama dan menandai blok sebagai salah.

Hari ini di Chaos Computer Congress (30C3), xobs dan saya mengungkapkan temuan bahwa beberapa kartu SD mengandung kerentanan yang memungkinkan eksekusi kode arbitrer - pada kartu memori itu sendiri. Di sisi gelap, eksekusi kode pada kartu memori memungkinkan kelas serangan MITM (man-in-the-middle), di mana kartu tampaknya berperilaku satu arah, tetapi sebenarnya ia melakukan sesuatu yang lain. Di sisi lain, ini juga memungkinkan para penggemar perangkat keras untuk mendapatkan akses ke sumber mikrokontroler yang sangat murah dan ada di mana-mana.

.

Algoritme ini terlalu rumit dan terlalu spesifik untuk dijalankan pada level aplikasi atau OS, dan ternyata setiap disk memori flash dikirimkan dengan mikrokontroler yang cukup kuat untuk menjalankan seperangkat algoritme abstraksi disk. Bahkan kartu microSD kecil tidak hanya berisi satu, tetapi setidaknya dua chip - pengontrol, dan setidaknya satu chip flash (kartu kepadatan tinggi akan menumpuk banyak flash die).

.

Mikrokontroler tertanam biasanya merupakan CPU 8051 atau ARM yang banyak dimodifikasi. Dalam implementasi modern, mikrokontroler akan mendekati level kinerja 100 MHz, dan juga memiliki beberapa akselerator perangkat keras. Hebatnya, biaya untuk menambahkan pengontrol ini ke perangkat mungkin berada di urutan $ 0,15 - $ 0,30, terutama untuk perusahaan yang dapat memadukan memori flash dan pengontrol dalam unit bisnis yang sama. Mungkin lebih murah untuk menambahkan mikrokontroler ini daripada menguji secara menyeluruh dan mengkarakterisasi setiap chip memori flash, yang menjelaskan mengapa perangkat flash yang dikelola bisa lebih murah per bit daripada chip flash mentah, meskipun terdapat mikrokontroler.

.

Intinya adalah bahwa mekanisme memuat dan memperbarui firmware sebenarnya wajib, terutama untuk pengontrol pihak ketiga. Pengguna akhir jarang terpapar pada proses ini, karena semuanya terjadi di pabrik, tetapi ini tidak membuat mekanisme menjadi kurang nyata. Dalam penjelajahan saya di pasar elektronik di China, saya telah melihat penjaga toko membakar firmware pada kartu yang “memperluas” kapasitas kartu - dengan kata lain, mereka memuat firmware yang melaporkan kapasitas kartu jauh lebih besar daripada penyimpanan aktual yang tersedia. Fakta bahwa hal ini dimungkinkan pada titik penjualan berarti bahwa kemungkinan besar, mekanisme pembaruan tidak dijamin.

Dalam pembicaraan kami di 30C3, kami melaporkan temuan kami menjelajahi merek mikrokontroler tertentu, yaitu, Appotech dan penawaran AX211 dan AX215-nya. Kami menemukan urutan "ketukan" sederhana yang dikirimkan melalui perintah yang dipesan oleh pabrik (yaitu, CMD63 diikuti oleh 'A', 'P', 'P', 'O') yang menjatuhkan pengontrol ke mode pemuatan firmware. Pada titik ini, kartu akan menerima 512 byte berikutnya dan menjalankannya sebagai kode.

FarO
sumber
10
Dari semua jawaban, yang ini mungkin yang paling dekat dengan apa yang sebenarnya diminta OP.
Cort Ammon
11
Itu bacaan yang fantastis!
Gabe Krause
@ Twisty menyalin beberapa bagian yang relevan.
FarO
2
Turun lubang kelinci ke dunia arsitektur kartu SD aku pergi.
Tejas Kale
38

Ini biasanya tidak akan berhasil karena sebagian besar kartu SD terbaru (atau eMMC) menggunakan level-statis dan dinamis, yang berarti bahwa pengontrol cerdas menafsirkan instruksi penulisan Anda dan memetakannya ke salah satu sektor flash yang paling jarang digunakan.

Satu-satunya hal yang dapat Anda lakukan adalah mencoba menghubungi pemasok Anda dan meminta lembar data mereka; mungkin ada beberapa (khusus vendor) cara untuk mengambil keadaan algoritma level-pakai mereka. Ini berpotensi memungkinkan Anda untuk menanyakan status / penggunaan flash yang mendasarinya. Atau Anda mungkin kurang beruntung dan ini mungkin tidak ada.

Jika tujuan Anda benar-benar untuk menghancurkan flash, yang dapat Anda lakukan adalah menjalankan siklus baca dan tulis yang besar dan terus menerus memeriksa bahwa data yang Anda baca masih konsisten. Misalnya membuat dua file besar, menyimpan checksum mereka dan membaca / menulisnya untuk memverifikasi checksum mereka. Semakin besar flash, semakin lama proses ini akan berlangsung.

amo-ej1
sumber
2
Tidakkah ini masih bekerja jika kartu SD benar-benar diisi dengan data, sehingga tidak dapat memetakan kembali banyak? Saya tidak berpikir mereka memiliki banyak sektor tersembunyi cadangan.
Ruslan
2
@Ruslan Perangkat tidak perlu tahu apakah suatu sektor diisi dengan apa pun. Hanya perlu mengetahui konten sektor mana yang harus dikirim berdasarkan permintaan dan sektor mana yang harus ditulis berdasarkan permintaan. Dan kemudian mungkin ada beberapa lapisan abstraksi di tempat membuatnya menggunakan memori fisik lain untuk mewakili sektor-sektor berikut beberapa algoritma yang dirahasiakan ... - Dan "penuh" hanya berarti "ambang batas untuk blok yang dapat diisi secara cuncurrently tercapai", tentu saja.
Alexander Kosubek
6
@Ruslan: Sekalipun seluruh perangkat memiliki data di atasnya, level-pakai keausan masih bisa efektif: misalnya, jika sektor A telah ditulis sekali, dan sektor B telah ditulis 1.000 kali, maka ketika ada lagi tulisan yang masuk untuk sektor B kartu dapat menukar data untuk kedua sektor, sehingga sektor A berisi data sektor B (dan kemungkinan akan ditimpa banyak kali lebih banyak - tetapi tidak apa-apa karena masih segar), dan sektor B akan berisi data sektor A (yang akan semoga tidak banyak berubah). Jelas perangkat juga perlu menyimpan pemetaan sektor mana yang disimpan.
psmears
2
@ GabeKrause ya, itulah sifat binatang itu. Pada level terendah Anda memiliki nand atau atau flash chip (saat ini semuanya menggunakan nand), dan ada pengontrol cerdas di depan chip nand yang menghentikan bus (mis. Usb untuk tongkat usb atau mmc untuk kartu sd) ), dan chip ini bertanggung jawab untuk memetakan / memakai leveling dll, itu memisahkan flash dari Anda. Jika Anda akan menggunakan nand di Linux tertanam ini adalah apa yang misalnya ubif lakukan untuk Anda.
amo-ej1
2
Kartu SD memiliki mikrokontroler yang mengimplementasikan "Flash Translation Layer" - permintaan blok diterjemahkan oleh mikrokontroler ini ke perintah NAND mentah. Beberapa kartu SD memiliki perintah tersembunyi untuk mengubah / memperbarui firmware MCU dan bahkan ada beberapa upaya rekayasa terbalik yang dilakukan. Sebagian besar perangkat penyimpanan flash selain NAND mentah (yang dapat muncul dalam beberapa kasus seperti banyak router rumah) mungkin "terlalu banyak" - yang berarti kartu SD 1GB Anda mungkin memiliki sesuatu seperti 1024MB + 128MB ruang NAND mentah di atasnya, untuk menutupi level keausan saat penuh dan juga hemat sektor untuk laman flash buruk.
LawrenceC
31

Anda dapat meningkatkan pemakaian transistor dengan meningkatkan suhu operasi. Gunakan siklus write-erase pada chip yang dipanaskan (70-120 ° C); itu akan cepat aus.

Pavlus
sumber
18
Temperatur penyimpanan yang berlebihan juga merusak, jadi mungkin lebih praktis untuk "memasak" chip pada suhu 120C ° (atau bahkan lebih) untuk beberapa waktu, kemudian memeriksa cacatnya.
Dmitry Grigoryev
2
Tegangan lebih rendah pada suplai ke kartu mungkin juga dimungkinkan, dan juga perlu bereksperimen.
Chris H
Tegangan rendah juga dapat menyebabkan berbagai jenis cacat, seperti penguncian pengontrol.
user20574
17

Pendahuluan: Opsi ini memerlukan pemrograman tambahan dan modifikasi perangkat keras, tetapi itu akan memungkinkan untuk pembacaan terkontrol kemungkinan besar transparan untuk host.

Kartu SD memiliki beberapa opsi I / O, tetapi dapat dikontrol melalui SPI. Jika Anda mengambil kartu SD dan memodifikasinya sehingga Anda dapat memasang pin ke mikrokontroler (seperti Arduino), Anda dapat meminta Arduino meniru kartu SD dan transparan pada perangkat yang membaca kartu SD. Kode Anda pada mikrokontroler dapat dengan sengaja mengembalikan data buruk saat dibutuhkan. Selain itu, Anda dapat meletakkan kartu SD pada mikrokontroler sehingga bacaan akan dapat melewati mikrokontroler ke kartu SD untuk memungkinkan pengujian gigabytes.

Eric Johnson
sumber
3
Sebagian besar perangkat berkecepatan tinggi (termasuk pembaca kartu PC) hanya akan menolak untuk bekerja dengan kartu yang tidak mendukung SD empat-bit.
Dmitry Grigoryev
1
OP mengatakan bahwa itu adalah sistem tertanam yang akan menggunakan kartu yang akan membuatnya lebih mungkin untuk mendukung SPI untuk kartu sd
Eric Johnson
3
Varian dalam hal ini, tetapi pekerjaan yang lebih sulit, adalah menemukan kartu SD yang Anda dapat reflash firmware .
Peter Taylor
2
Ini super menarik! Sistem tertanam kami menjalankan I / O melalui SPI. Saya tidak yakin apakah saya memiliki bandwidth untuk memodifikasi perangkat keras kami untuk mencapai tambahan seperti ini, tapi saya pikir itu pemikiran yang brilian.
Gabe Krause
2
Mendidik tentang leveling keausan dinamis membuat saya percaya bahwa secara strategis membuat kartu SD "buruk" dengan sektor buruk yang dikenal jauh lebih sulit (atau tidak mungkin) daripada yang saya harapkan ketika mengajukan pertanyaan. Walaupun saat ini berada di luar jangkauan kemampuan saya, ini tampaknya merupakan pendekatan yang paling dapat dikontrol dan menjanjikan secara teknis, diikuti oleh @Olafm. Menyesuaikan perangkat keras menengah untuk mencegat dan "merusak" data di setiap lokasi sektor yang ditentukan sebelumnya selama transfer data tampaknya merupakan pendekatan yang baik.
Gabe Krause
15

Saya akan pergi ke ebay / aliexpress dan membeli kartu SD termurah yang dapat saya temukan dari China, yang "terlalu bagus untuk menjadi kenyataan". Mereka sering datang dengan sektor yang salah atau berada dalam perangkat lunak diatur menjadi jauh lebih besar daripada yang sebenarnya. Either way, Anda harus berakhir dengan kartu SD yang rusak untuk digunakan untuk pengujian.

GuzZzt
sumber
Pendekatan yang menarik, tetapi bagaimana Anda akan menulis ke area yang buruk untuk menguji efek dari blok buruk pada kode yang disimpan?
fixer1234
@ fixer1234, saya punya salah satu kartu SD ini yang mengatakan itu 32GB tetapi sebenarnya hanya 128MB. Saya memasukkannya ke dalam kamera dan dapat mengambil foto di luar 128MB tetapi hanya foto pertama yang bisa dibaca kembali. Sisanya terdaftar tetapi dibaca kembali sebagai rusak. Tebak itu adalah bagaimana mereka ingin Anda memperhatikan masalah dengan kartu terlebih dahulu ketika sudah terlambat untuk mengeluh ...
GuzZzt
11

Sekali waktu, bertahun-tahun yang lalu, saya dibayar untuk mengambil satu set foto dan video kelulusan dari kartu SD untuk ibu yang agak bingung. Setelah diperiksa dengan saksama, kartu tersebut entah bagaimana telah rusak secara fisik dengan celah yang terlihat di kasing luar dan memiliki beberapa sektor buruk, terutama beberapa sektor awal yang kritis, yang bahkan membuat program pemulihan yang paling dapat diandalkan pada saat itu benar-benar gagal membaca kartu tersebut. . Juga, alat data forensik saat itu mahal.

Saya akhirnya mendapatkan kartu SD merek / ukuran identik dan menulis dump data mentah kustom saya sendiri dan mengembalikan utilitas untuk menyalin data dari kartu buruk ke yang baik. Setiap kali utilitas menghantam sektor yang buruk, ia akan mencoba beberapa kali sebelum menulis semua nol untuk sektor itu dan, alih-alih menyerah dan berhenti, abaikan kegagalan dan pindah ke sektor berikutnya. Upaya coba lagi dilakukan karena saya juga memperhatikan bahwa beberapa sektor masih memiliki tingkat keberhasilan membaca sekitar 40%. Setelah data ada di kartu SD baru, alat pemulihan yang gagal sebelumnya bekerja dengan sempurna dengan kehilangan data minimal / korupsi. Secara keseluruhan, sekitar 98% dari semua file dipulihkan. Sejumlah item yang sebelumnya telah dihapus juga dipulihkan karena tidak ada yang benar-benar dihapus - hanya ditandai seperti itu dan perlahan ditimpa. Apa yang dimulai sebagai latihan pemulihan data yang sedikit membosankan menjadi salah satu proyek pengembangan perangkat lunak pribadi saya yang lebih berkesan dan menarik. Jika Anda bertanya-tanya, ibu itu senang.

Bagaimanapun, cerita ini menunjukkan bahwa ada kemungkinan untuk secara fisik merusak kartu SD sehingga data masih dapat diakses tetapi memiliki sektor-sektor yang hanya nyaris tidak berfungsi dan apa pun yang mencoba membaca darinya memiliki kesulitan untuk melakukannya. Plastik kartu SD cenderung sangat tipis, jadi membengkokkan atau memotong menjadi beberapa yang murah mungkin bisa melakukannya. Jarak tempuh Anda mungkin beragam.

Anda juga bisa bertanya-tanya di beberapa tempat pemulihan data di daerah Anda. Karena mereka berspesialisasi dalam pemulihan data dari berbagai perangkat yang gagal atau gagal, mereka harus memiliki beberapa input / tips yang berguna dan bahkan mungkin memiliki beberapa kartu SD pra-rusak di tangan (misalnya untuk tujuan pelatihan) yang dapat Anda peroleh dari mereka.

CubicleSoft
sumber
2
Sudahkah Anda merilis utilitas itu secara online? Itu bagus untuk ditambahkan ke gudang senjata saya.
Ploni
1
Pada titik ini, mungkin bahkan tidak berfungsi dengan baik mengingat kemajuan teknologi (bahkan mungkin tidak bisa dikompilasi) dan panggilan sistem tingkat rendah yang saya gunakan. Ada juga beberapa modern, perangkat forensik open source / alat kloning drive yang saya akan lebih cenderung mencoba untuk menggunakan pertama daripada mencoba menarik perangkat lunak lama saya keluar dari kapur barus.
CubicleSoft
Saya berharap Anda mungkin bisa memberikan beberapa parameter untuk ddmembuatnya berperilaku dengan cara yang mirip dengan ini, saat ini. Tapi saya tidak yakin.
wizzwizz4
@ wizzwizz4, lihat ddrescue.
Hildred
"Juga, alat data forensik saat itu harganya mahal." Saya cukup yakin mereka masih melakukannya.
jpmc26
5

Jawaban ini merupakan perluasan dari komentar @Ruslan

  1. Isi kartu SD Anda hingga sekitar 99,9%
  2. Terus menulis ulang konten yang tersisa 0,1% (Write A -delete-write B-delete - Write A ...)
  3. Tes (secara berkala) apakah Anda telah merusak kartu

Alternatif yang mungkin:

Tidak yakin apakah ini berfungsi untuk keperluan Anda, tapi mungkin itu sebenarnya cukup untuk merusak kartu Anda secara fisik, yang bisa jadi jauh lebih cepat.

Dennis Jaheruddin
sumber
6
Mengisi kartu hingga 99% tidak akan membantu karena seluruh tujuan pemakaian leveling adalah untuk mencegah kerusakan prematur jenis ini. Kerusakan fisik kartu hampir pasti akan menghasilkan kartu yang tidak menginisialisasi lagi.
Dmitry Grigoryev
2
@DmitryGrigoryev Bagaimana leveling memakai akan sangat membantu (halangan, dalam hal ini) kecuali kartu memiliki lebih banyak memori daripada kapasitas resminya?
ispiro
12
@ispiro Misalnya, saat berikutnya sektor dengan jumlah tulis tinggi ditimpa, isinya dapat ditukar dengan sektor dengan jumlah menulis rendah.
Dmitry Grigoryev
1
@DmitryGrigoryev Jika saya menafsirkan jawaban ini dengan benar, harus ada kartu SD yang tidak memakai lvling: electronics.stackexchange.com/a/27626/16104
Dennis Jaheruddin
1
@ DennisJaheruddin Ya, kartu lama tidak melakukan itu. dengan kartu-kartu ini sudah cukup untuk berulang kali membuat / menghapus file kosong sampai sektor dalam tabel alokasi habis.
Dmitry Grigoryev
3

Anda dapat mencoba memperkenalkan catu daya yang tidak stabil atau pensinyalan tegangan yang lebih tinggi.

Kesalahan umum untuk keluarga perangkat yang saya tahu memiliki korelasi kuat antara kerusakan kartu SD dan kontak baterai yang terputus-putus.

PCARR
sumber
3

Beberapa kartu SD yang lebih tua dan berkapasitas rendah (16MB-ish) menggunakan chip flash dalam paket gaya TSOP / TSSOP. Sebuah bengkel yang mampu melakukan pengerjaan ulang SMT (jika Anda melakukan pekerjaan tertanam, Anda mungkin memiliki keahlian internal, jika tidak memeriksa perusahaan kecil yang melakukan perbaikan telepon / laptop tingkat papan) dapat secara terpisah memisahkan dan memasang kembali chip itu, sehingga dapat dibaca dan ditulis mentah (termasuk kode ECC) dengan programmer perangkat.

Namun, perlu diketahui bahwa Anda terutama akan menguji:

  • Bagaimana perangkat Anda akan menangani kemungkinan penyimpangan waktu / cegukan yang diperkenalkan oleh koreksi kesalahan internal

dan dalam kasus terburuk

  • bagaimana perangkat Anda menangani kartu SD yang rusak.

Jika Anda hanya ingin memeriksa bagaimana perilakunya dengan perilaku tidak menentu untuk alasan apa pun dari kartu SD, mungkin yang terbaik adalah memasukkan suara listrik ke jalur antarmuka (mis. Dengan meletakkan sakelar bus FET di antaranya, dan secara acak sesekali berpindah sementara itu ke sumber sinyal tidak masuk akal (dari tingkat listrik yang tepat sekalipun).

pemeras
sumber
Kartu SD yang gagal tidak menghasilkan "gangguan listrik", tetapi hanya mengembalikan kode kesalahan untuk operasi penulisan.
Dmitry Grigoryev
2

Terkait dengan jawaban OlafM tetapi berbeda: Anda dapat memprogram mikrokontroler Anda sendiri untuk berbicara dengan protokol kartu SD, dan kemudian meniru perilaku apa pun yang Anda inginkan.

R ..
sumber
1

Area Catatan Boot Master FAT32 mungkin adalah yang paling rentan terhadap penyalahgunaan, karena pada level logis selalu harus berada di tempat yang sama. (Mungkin ini ditangani oleh soft-remapping dari bad sector, tapi saya agak skeptis bahwa ini diterapkan pada semua perangkat keras.) Jadi Anda bisa menjalankannya sfdiskdalam satu lingkaran dan melihat apakah Anda dapat merusaknya dengan cara seperti itu.

Tetapi saya akan meminta Anda untuk melakukan apa pun yang Anda bisa untuk meningkatkan keandalan perangkat keras, daripada mencoba menangani perangkat keras yang buruk dalam perangkat lunak. Masalahnya adalah kartu SD gagal dalam semua jenis cara aneh. Mereka menjadi tidak dapat dibaca, mereka menjadi tidak dapat ditulis, memberi Anda data buruk, mereka kehabisan waktu selama operasi, dll. Mencoba untuk memprediksi semua cara kartu dapat gagal adalah sangat sulit.

Inilah salah satu kegagalan favorit saya, "mode data besar":

data sd palsu big bad

Kartu SD adalah produk konsumen komoditas yang berada di bawah tekanan biaya yang luar biasa. Bagian berubah dengan cepat dan lembar data sulit didapat. Produk palsu tidak pernah terdengar sebelumnya. Untuk penyimpanan murah, mereka sulit dikalahkan, tetapi sementara SSD menjadikan keandalan sebagai prioritas, prioritas untuk kartu SD adalah kecepatan, kapasitas, dan biaya (mungkin tidak sesuai urutan itu.)

Garis pertahanan pertama Anda adalah menggunakan bagian eMMC yang dapat disolder dengan lembar data asli dari pabrikan terkemuka alih-alih kartu SD yang dapat dilepas. Ya, harganya lebih mahal per GB, tetapi bagian itu akan diproduksi untuk jangka waktu yang lebih lama, dan setidaknya Anda tahu apa yang Anda dapatkan. Menyolder bagian ke bawah juga menghindari sejumlah masalah potensial (kartu ditarik keluar selama penulisan, kontak listrik yang buruk, dll.) Dengan kartu yang dapat dilepas.

Jika produk Anda membutuhkan penyimpanan yang dapat dilepas, atau sudah terlambat untuk mengubah apa pun, maka pertimbangkan untuk mengeluarkan uang ekstra untuk kartu kelas "industri", atau memperlakukannya sebagai benda sekali pakai. Apa yang kami lakukan (di linux) adalah fsckkartu pada saat boot dan memformatnya kembali jika ada kesalahan, karena memformat ulang dapat diterima dalam kasus penggunaan ini. Lalu kita fsckkembali. Jika masih melaporkan kesalahan setelah memformat ulang, kami RMA dan ganti perangkat keras dengan varian yang lebih baru yang menggunakan eMMC.

Semoga berhasil!

Robert Calhoun
sumber
Saya memberi Anda acungan jempol. Saya menggunakan banyak kartu SD dan satu gagal beberapa kali setahun. Saya tidak pernah terlalu memikirkannya, tetapi dalam pengalaman saya sendiri, kartu saya yang gagal menunjukkan gejala FAT yang gagal sebelum akhirnya menjadi tidak berharga. Saya pikir Anda tertarik pada sesuatu di sini :) Jadi hanya membuat dan menghapus file harus menggunakan FAT.
jwzumwalt
1

Mungkin ini bukan arah yang Anda inginkan tetapi saya menemukan mengeluarkan kartu sd saya sementara radio atau laptop saya membaca dari itu menjamin kartu SD yang jatuh sekitar 1/5 atau 1/10 kali. Tampaknya kartu-kartu itu tidak memiliki daya yang baik dihapus selama membaca dan mungkin menulis. Setelah membaca komentar Robert Calhoun di bawah ini, itu membuat saya percaya itu mungkin merusak FAT. Meskipun saya tidak tahu mengapa hanya membaca menyebabkan crash - tidak boleh ada tulisan yang terjadi?

jwzumwalt
sumber
ini dapat merusak FS tetapi tidak yakin itu benar-benar akan menciptakan sektor yang buruk
akostadinov
Saya dapat memberitahu Anda untuk fakta itu crash kartu dan memerlukan format ulang. Saya telah melakukan ini berkali-kali dengan kartu SD dan Raspberry Pie, laptop saya, dan beberapa perangkat rumah saya.
jwzumwalt
2
Membutuhkan format ulang! = Menyebabkan kerusakan pada sektor - sektor . Sistem file, ya. Sektor, mungkin.
wizzwizz4
1

Jika sd-card Anda diformat FAT32, Anda dapat mengedit hex-lemak, dan menandai sektor sebagai buruk dengan kode hex yang benar. Ini hanya tipuan jika Anda ingin menguji logika perangkat lunak yang seharusnya menemukan bad sector di tempat khusus ini; itu tidak akan membahayakan sd-card Anda, memformat ulang akan membawanya kembali ke kondisi normal.

Emile De Favas
sumber
1
Selamat Datang di Pengguna Super! Ini sepertinya pendekatan yang menarik - bisakah Anda menjelaskan secara spesifik bagaimana melakukan pengeditan hex? Terima kasih.
Ben N
Saya pikir perintah Linux hdparm akan melakukan trik: itu akan memungkinkan Anda untuk menyimpan beberapa sektor yang nanti dapat Anda edit, dan kemudian menulis kembali ke kartu Anda. Anda perlu menemukan dokumentasi tentang vfat dan man hdparm. Maaf, saya tidak berada di dekat komputer windows.
Emile De Favas
The --make-bad-sectorbendera tampak menjanjikan! Namun, saya tidak tahu apakah ini hanya akan bekerja di dalam sistem linux yang awalnya menjalankan perintah ini. Saya berharap bahwa perintah hdparm --make-bad-sector 20000 /dev/sd#itu entah bagaimana akan membuat sektor 20000 buruk, dan dideteksi sebagai buruk pada perangkat peranti keras tertanam saya yang tidak menjalankan linux. Adakah pikiran?
Gabe Krause
0

Saya ingin tahu apakah skrip Linux badblocks dapat dibuat untuk menjalankan tes destruktif pada satu sektor berulang kali selama beberapa jam.

Pada satu sektor — tidak, karena kode level-pakai di dalam kartu SD akan memetakan ulang blok logis di semua tempat.

Tetapi Anda dapat dengan mudah menjalankannya badblocks -wdalam satu lingkaran hingga menyebabkan beberapa blok buruk muncul. Sesuatu seperti ini seharusnya bekerja:

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

dengan asumsi badblocks mengembalikan 0 jika tidak ada blok buruk yang terdeteksi dan ≠ 0 sebaliknya (halaman manual tidak mengatakan dan saya belum memeriksa kode sumber.)

Tobia
sumber
-1

Biasanya dengan kartu SD / uSD mereka menerapkan leveling pakai sehingga ini bisa sangat sulit. Tergantung pada jenis (sel lapisan tunggal, multilayer, TLC, 3D-NAND dll) siklus tulis yang diperlukan untuk memutusnya cukup untuk menguras kumpulan sektor mungkin dalam TB ganda.

Saya benar-benar menguji ini dengan Pro Duo 4GB, 64GB dan 256GB, SSD dan thumbdrive, 64GB K --- s --- menggunakan 4 mikron 16GB chip yang bertahan sekitar 3,84TB sebelum gagal dengan satu kesalahan lunak di area FAT . 256GB menggunakan berlangsung sedikit kurang tetapi akan memperkirakan tanpa akses chip langsung itu mungkin menulis mungkin 5TB sebelum akhirnya memberikan dengan korupsi MBR tetapi tidak jelas apakah controller menyebabkannya bekerja dengan solid dalam mode USB3 tetapi USB2 memiliki lebih banyak gangguan saat dibaca dan itu juga berlari sangat panas. Duo 4GB gagal pada pembaca saat menyalin data, sekali lagi tidak dapat memastikan tetapi setara dengan mungkin 6 tahun penggunaan dan kamera juga menunjukkan pesan "Memulihkan". Tegangan catu daya yang bervariasi secara kebetulan selama penulisan akan membuatnya gagal BANYAK lebih cepat. 128GB microSD saya gagal setelah sekitar 2 tahun digunakan dengan gejala yang sama,

Catatan yang tidak relevan dihapus tentang eksperimen sinar-X.

Teka-teki
sumber
1
Sudah ada beberapa jawaban yang membantu menghancurkan rektor tertentu. Saran Anda tentang menghancurkan yang acak tidak memberikan apa-apa ekstra.
Máté Juhász