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.
sd-card
bad-sectors
bad-blocks
Gabe Krause
sumber
sumber
Jawaban:
Pendekatan alternatif yang mungkin bermanfaat.
Jika kode Anda berjalan di Linux maka mungkin Anda dapat mengujinya dengan perangkat logis "rusak".
dmsetup
dapat membuat perangkat yang mengembalikan kesalahan I / O. Buat saja perangkat Anda menggunakanerror
dan / atauflakey
target. Dariman 8 dmsetup
:Catatan:
flakey
target 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.
sumber
dmsetup
perintah untuk menyiapkanerror
perangkat yang selalu mengembalikan kesalahan baca: stackoverflow.com/questions/1870696/…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.
.
.
.
sumber
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.
sumber
Anda dapat meningkatkan pemakaian transistor dengan meningkatkan suhu operasi. Gunakan siklus write-erase pada chip yang dipanaskan (70-120 ° C); itu akan cepat aus.
sumber
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.
sumber
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.
sumber
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.
sumber
dd
membuatnya berperilaku dengan cara yang mirip dengan ini, saat ini. Tapi saya tidak yakin.Jawaban ini merupakan perluasan dari komentar @Ruslan
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.
sumber
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.
sumber
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:
dan dalam kasus terburuk
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).
sumber
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.
sumber
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
sfdisk
dalam 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":
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
fsck
kartu pada saat boot dan memformatnya kembali jika ada kesalahan, karena memformat ulang dapat diterima dalam kasus penggunaan ini. Lalu kitafsck
kembali. Jika masih melaporkan kesalahan setelah memformat ulang, kami RMA dan ganti perangkat keras dengan varian yang lebih baru yang menggunakan eMMC.Semoga berhasil!
sumber
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?
sumber
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.
sumber
--make-bad-sector
bendera tampak menjanjikan! Namun, saya tidak tahu apakah ini hanya akan bekerja di dalam sistem linux yang awalnya menjalankan perintah ini. Saya berharap bahwa perintahhdparm --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?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 -w
dalam satu lingkaran hingga menyebabkan beberapa blok buruk muncul. Sesuatu seperti ini seharusnya bekerja: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.)
sumber
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.
sumber