Saya perlu untuk menguji ketahanan dari beberapa membaca/menulis kode untuk beberapa hardware tertanam. Bagaimana mungkin saya mengorbankan beberapa kartu SD dan istirahat diketahui beberapa sektor untuk studi terkontrol?
Satu-satunya hal yang dapat saya pikirkan adalah untuk menimpa sektor tunggal beberapa juta kali. Aku bertanya-tanya jika Linux badblocks script dapat dibuat untuk menjalankan destructive test pada sektor tunggal berulang-ulang selama beberapa jam.
Alternatif pendekatan yang mungkin akan berguna.
Jika kode anda berjalan di Linux maka mungkin anda dapat mengujinya dengan "salah" perangkat logis. dmsetup
dapat membuat perangkat yang kembali I/O error. Hanya membangun perangkat anda menggunakan kesalahan
dan/atau flakey
target. Dari man 8 dmsetup
:
error
Kesalahan I/O yang masuk ke daerah ini. Berguna untuk menguji atau untuk menciptakan perangkat dengan lubang di dalamnya.
flakey
Menciptakan sebuah pemetaan yang sama untuklinear
target tapi pameran diandalkan perilaku secara berkala. Berguna untuk simulasi gagal perangkat saat pengujian.
Catatan: flakey
target penggunaan didokumentasikan di sini. Contoh dasar di sini.
Sejauh yang saya tahu I/O error akan segera dilaporkan, sehingga hal ini sangat berbeda dari real SD card perilaku di mana anda dapat mengharapkan penundaan, mengulur-ulur dll. Namun demikian saya pikir pendekatan ini mungkin berguna dalam beberapa kasus, setidaknya untuk melakukan cepat tes awal atau lebih.
Orang ini hack mikrokontroler dalam SD card digunakan untuk menandai blok buruk: https://www.bunniestudios.com/blog/?p=3554
Anda mungkin dapat melakukan hal yang sama dan sewenang-wenang mark blok yang rusak.
Hari ini di Chaos Komputer Congress (30C3), xobs dan aku diungkapkan menemukan bahwa beberapa kartu SD mengandung kerentanan yang memungkinkan sewenang-wenang eksekusi kode pada kartu memori itu sendiri. Pada gelap sisi, eksekusi kode pada kartu memori memungkinkan kelas MITM (man-in-the-middle) serangan, di mana kartu tersebut tampaknya berperilaku satu cara, tapi pada kenyataannya itu tidak sesuatu yang lain. Di sisi terang, hal ini juga memungkinkan kemungkinan untuk penggemar hardware untuk mendapatkan akses ke sangat murah dan ada di mana-mana sumber dari mikrokontroler.
.
algoritma Ini terlalu rumit dan terlalu spesifik perangkat yang akan menjalankan pada aplikasi atau OS level, dan ternyata bahwa setiap flash memori disk kapal dengan cukup kuat mikrokontroler untuk menjalankan custom set disk abstraksi algoritma. Bahkan si mungil microSD kartu berisi tidak hanya satu, tapi setidaknya dua chip — controller, dan di setidaknya satu chip flash (high density kartu akan menumpuk beberapa flash mati).
.
The embedded mikrokontroler biasanya banyak dimodifikasi atau 8051 ARM CPU. Di modern implementasi, mikrokontroler akan pendekatan 100 MHz tingkat kinerja, dan juga memiliki beberapa perangkat keras akselerator on-die. Hebatnya, biaya menambahkan kontroler ini untuk perangkat ini mungkin pada urutan $0.15-$0.30, terutama untuk perusahaan yang dapat fab kedua flash memori dan kontroler dalam satu unit usaha. Itu mungkin lebih murah untuk menambahkan ini dari mikrokontroler untuk benar-benar menguji dan ciri masing-flash chip memori, yang menjelaskan mengapa dikelola perangkat flash dapat menjadi lebih murah per bit dari baku chip flash, meskipun masuknya mikrokontroler.
.
intinya adalah bahwa firmware loading dan mekanisme update hampir wajib, terutama untuk pihak ketiga pengendali. Pengguna akhir jarang terkena proses ini, karena semua itu terjadi di pabrik, tapi ini tidak membuat mekanisme kurang nyata. Dalam penjelajahan saya elektronik pasar di China, saya telah melihat penjaga toko terbakar firmware pada kartu yang "memperluas" kapasitas kartu — lain kata-kata, mereka memuat firmware yang laporan kapasitas kartu jauh lebih besar dari yang sebenarnya penyimpanan yang tersedia. Fakta bahwa ini adalah mungkin di point of sale yang berarti bahwa kemungkinan besar, update mekanisme ini tidak berhasil.
kami berbicara di 30C3, kami melaporkan temuan kami menjelajahi tertentu mikrokontroler merek, yaitu, Appotech dan AX211 dan AX215 persembahan. Kami menemukan sebuah sederhana "mengetuk" berurutan ditransmisikan melalui produsen-undang perintah (yaitu, CMD63 diikuti oleh 'A','P','P','O') yang drop controller ke firmware loading mode. Pada titik ini, kartu akan menerima berikutnya 512 byte dan menjalankan itu sebagai kode.
Hal ini biasanya tidak't bekerja karena paling terbaru kartu SD (atau eMMC) menggunakan statis dan dinamis wear-leveling, yang berarti bahwa kontroler cerdas menafsirkan anda menulis instruksi dan peta untuk salah seorang dari yang paling sedikit digunakan flash sektor.
Satu-satunya hal yang anda bisa lakukan adalah mencoba untuk menghubungi supplier dan meminta mereka datasheet; mungkin ada beberapa (vendor tertentu) cara untuk mengambil keadaan mereka memakai-meratakan algoritma. Ini berpotensi akan memungkinkan anda untuk query negara/penggunaan yang mendasari flash. Atau anda mungkin akan beruntung dan ini mungkin tidak ada.
Jika tujuan anda adalah untuk benar-benar menghancurkan flash, semua yang anda bisa lakukan adalah menjalankan massive membaca dan menulis siklus dan terus menerus memeriksa bahwa data anda membaca kembali masih konsisten. E. g. buat dua file besar, toko mereka checksum dan membaca/menulis mereka dalam rangka untuk memverifikasi checksum. Semakin besar flash, semakin lama proses ini akan memakan waktu.
Kata pengantar: opsi Ini membutuhkan tambahan programming dan modifikasi perangkat keras, tetapi hal itu akan memungkinkan untuk dikendalikan membaca kemungkinan besar transparan untuk tuan rumah.
SD card memiliki beberapa pilihan I/O, tetapi dapat dikontrol melalui SPI. Jika anda adalah untuk mengambil sebuah kartu SD dan memodifikasinya sehingga anda bisa memasang pin untuk mikrokontroler (seperti Arduino) anda bisa memiliki Arduino meniru SD card dan menjadi transparan untuk perangkat membaca SD card. Kode anda pada mikrokontroler bisa dengan sengaja kembali data yang buruk bila diperlukan. Selain itu, anda bisa memasang kartu SD pada mikrokontroler sehingga membaca akan mampu melewati mikrokontroler ke kartu SD untuk memungkinkan untuk gigabyte pengujian.
Aku akan pergi ke ebay/aliexpress dan membeli yang termurah SD card yang dapat saya temukan dari Cina, salah satu yang "terlalu bagus untuk menjadi kenyataan". Mereka sering datang dengan sektor-sektor yang rusak atau perangkat lunak yang diatur untuk menjadi jauh lebih besar dari mereka sebenarnya. Either way, anda harus berakhir dengan rusak SD card digunakan untuk pengujian.
Sekali waktu, bertahun-tahun yang lalu, saya dibayar untuk mengambil satu set wisuda foto dan video dari kartu SD untuk agak bingung ibu. Setelah pemeriksaan lebih lanjut, kartu entah bagaimana telah rusak secara fisik dengan retak terlihat dalam kasus luar dan memiliki beberapa bad sector, terutama beberapa awal, sektor-sektor yang kritis, yang membuat bahkan yang paling dapat diandalkan program-program pemulihan pada saat benar-benar gagal untuk membaca kartu. Juga, data forensik alat kembali maka biaya yang mahal.
Akhirnya aku memperoleh identik merek/ukuran kartu SD dan tulisan saya sendiri kustom data mentah dump dan restore utilitas untuk copy data dari kartu jelek ke bagus. Setiap kali utilitas terkena bad sector, itu akan coba lagi beberapa kali sebelum menulis semua nol untuk sektor itu dan, bukannya menyerah dan berhenti, mengabaikan kegagalan dan beralih ke sektor berikutnya. Coba lagi upaya dilakukan karena saya juga memperhatikan bahwa beberapa sektor masih memiliki sekitar 40% baca tingkat keberhasilan. Setelah data di kartu SD baru, pemulihan alat-alat yang telah gagal sebelum bekerja sempurna dengan minimal kehilangan data/korupsi. Secara keseluruhan, sekitar 98% dari semua file yang ditemukan. Sejumlah item yang telah dihapus sebelumnya juga ditemukan karena tidak ada yang pernah benar-benar dihapus - hanya ditandai sebagai tersebut dan perlahan-lahan ditimpa. Apa yang dimulai sebagai sebuah sedikit membosankan pemulihan data latihan menjadi salah satu saya lebih berkesan dan menarik pribadi proyek pengembangan perangkat lunak. Dalam kasus anda bertanya-tanya, ibu sangat senang.
Pada setiap tingkat, kisah ini pergi untuk menunjukkan bahwa adalah mungkin untuk secara fisik merusak SD card sehingga data masih dapat diakses tapi memiliki sektor-sektor yang hanya hampir tidak berfungsi dan apa-apa mencoba untuk membaca dari ini memiliki kesulitan melakukannya. SD card plastik cenderung cukup tipis, sehingga membungkuk atau pemotongan menjadi beberapa yang murah mungkin melakukan trik. Anda mungkin berbeda.
Anda juga bisa bertanya-tanya pada beberapa data recovery tempat-tempat di daerah anda. Karena mereka mengkhususkan diri dalam pemulihan data dari berbagai gagal atau gagal perangkat, mereka harus memiliki beberapa masukan yang bermanfaat/tips dan bahkan mungkin memiliki beberapa pra-rusak SD card pada tangan (misalnya untuk tujuan pelatihan) bahwa anda bisa mendapatkan dari mereka.
Jawaban ini merupakan perluasan pada komentar dari @Ruslan
Alternatif yang mungkin:
Tidak yakin apakah ini bekerja untuk keperluan anda, tapi mungkin itu akan benar-benar cukup untuk kerusakan fisik kartu anda, yang bisa menjadi jauh lebih cepat.
Beberapa yang lebih tua, rendah-kapasitas kartu SD (16MB-ish) menggunakan chip flash di TSOP/TSSOP gaya paket. Workshop mampu SMT ulang (jika anda melakukan tertanam bekerja, anda mungkin memiliki keterampilan inhouse, jika tidak memeriksa perusahaan-perusahaan kecil yang melakukan tingkat dewan telepon/perbaikan laptop) bisa dibayangkan terpisah dan pasang chip, sehingga dapat dibaca dan ditulis baku (termasuk ECC kode) dengan perangkat programmer.
Namun, diketahui bahwa anda akan terutama pengujian:
dan dalam kasus terburuk
Jika anda hanya ingin memeriksa bagaimana berperilaku dengan perilaku tidak menentu untuk alasan apapun dari kartu SD, itu mungkin yang terbaik untuk hanya memperkenalkan kebisingan listrik ke antarmuka baris (misalnya dengan menempatkan FET bus beralih di antara, dan di waktu yang acak sejenak beralih ke sumber yang tidak masuk akal sinyal (hak listrik tingkat meskipun).
Anda bisa mencoba memperkenalkan suplai listrik yang tidak stabil atau yang lebih tinggi tegangan sinyal.
Kesalahan umum untuk sebuah keluarga dari perangkat yang saya tahu memiliki korelasi yang kuat antara SD card korupsi dan intermiten kontak baterai.
Mungkin ini bukan arah yang anda inginkan tapi aku menemukan menghapus kartu sd saya sementara saya radio atau laptop adalah membaca dari itu menjamin jatuh SD card sekitar 1/5 atau 1/10 kali. Tampaknya kartu don't melakukannya dengan baik memiliki daya dihapus selama membaca dan agaknya menulis. Setelah membaca Robert Calhoun's komentar di bawah ini, itu membuat saya percaya hal itu dapat merusak LEMAK. Meskipun aku don't tahu mengapa hanya membaca penyebab kecelakaan - tidak boleh ada tulisan terjadi?
FAT32 Master Boot Record daerah mungkin adalah yang paling rentan terhadap penyalahgunaan, karena pada tingkat logis itu selalu harus di tempat yang sama. (Mungkin ini ditangani oleh soft-remapping bad sector, tapi saya agak skeptis bahwa ini dilaksanakan pada semua perangkat keras.) Jadi anda bisa menjalankan sfdisk
dalam satu lingkaran dan melihat jika anda dapat kecelakaan itu.
Tapi saya akan meminta anda untuk melakukan apapun yang anda bisa untuk meningkatkan kehandalan hardware, bukannya mencoba untuk menangani perangkat keras yang buruk dalam perangkat lunak. Masalah itu adalah bahwa kartu SD gagal dalam segala macam cara aneh. Mereka menjadi tidak terbaca, mereka menjadi tidak dapat ditulisi, yang memberikan data yang buruk, mereka waktu keluar selama operasi, dll. Mencoba untuk memprediksi semua cara kartu bisa gagal adalah sangat sulit.
Berikut ini's salah satu favorit saya kegagalan, "besar data mode":
SD kartu komoditas produk-produk konsumen yang berada di bawah besar tekanan biaya. Bagian yang berubah dengan cepat dan lembar data yang sulit didapat. Produk palsu tidak pernah terdengar. Untuk penyimpanan murah mereka sulit untuk mengalahkan, tapi sementara Ssd membuat kehandalan prioritas, prioritas untuk kartu SD adalah kecepatan, kapasitas, dan biaya (mungkin tidak dalam urutan itu.)
Baris pertama pertahanan adalah dengan menggunakan solderable eMMC bagian dengan datasheet dari produsen terkemuka bukannya kartu SD dilepas. Ya, mereka lebih banyak biaya per GB, namun bagian yang akan di produksi untuk jangka waktu yang lebih lama, dan setidaknya anda tahu apa yang anda mendapatkan. Solder bagian bawah juga menghindari berbagai potensi masalah (kartu menarik keluar selama menulis, miskin kontak listrik, dll.) dengan kartu dilepas.
Jika produk anda membutuhkan penyimpanan yang dapat dilepas, atau's terlalu terlambat untuk mengubah apa-apa, kemudian mempertimbangkan untuk menghabiskan uang ekstra untuk "industri" kelas kartu, atau memperlakukan mereka sebagai benda pakai. Apa yang kita lakukan (di linux) adalah fsck
kartu pada boot dan memformat ulang jika ada kesalahan yang dilaporkan, seperti memformat dapat diterima dalam kasus ini digunakan. Kemudian kita fsck
itu lagi. Jika itu masih laporan kesalahan setelah memformat, kita RMA dan mengganti hardware dengan varian baru yang menggunakan eMMC.
Good luck!
Jika kartu sd anda adalah diformat FAT32, anda dapat hex-edit 2 lemak, dan menandai sektor buruk dengan benar kode hex. Ini hanya sebuah trik jika anda ingin tes logika perangkat lunak seharusnya menemukan bad sector di tempat tertentu ; tidak't membahayakan sd-card baik, yang memformat ulang akan membawa kembali ke kondisi normal.
aku bertanya-tanya jika Linux badblocks script dapat dibuat untuk menjalankan destructive test pada sektor tunggal berulang-ulang selama beberapa jam.
Di sektor tunggal—tidak ada, karena memakai-meratakan kode di dalam SD card akan remap blok logis di semua tempat.
Tapi anda dapat dengan mudah menjalankan badblocks -w
dalam loop sampai hal itu menyebabkan beberapa blok buruk muncul. Hal seperti ini harus bekerja:
while badblocks -w /dev/xx; do :; done
dengan asumsi bahwa badblocks mengembalikan 0 jika tidak ada blok buruk yang terdeteksi dan ≠ 0 jika tidak (halaman doesn't mengatakan dan saya belum't telah memeriksa kode sumber.)
Biasanya dengan SD/uSD kartu mereka melaksanakan wear leveling jadi ini bisa menjadi cukup sulit. Tergantung pada jenis (satu lapisan sel, multilayer, TLC, 3D NAND dll) menulis siklus yang dibutuhkan untuk istirahat cukup untuk knalpot sektor renang mungkin dalam beberapa TB.
Aku benar-benar menguji ini dengan 4GB, 64GB dan 256GB Pro Duo, SSD dan thumbdrive, 64GB K---s--- menggunakan 4 Mikron 16GB chip berlangsung sekitar 3.84 TB sebelum gagal dengan satu kesalahan lembut di daerah LEMAK. Yang 256GB menggunakan berlangsung sedikit kurang tapi akan memperkirakan tanpa langsung akses chip itu mungkin menulis mungkin 5TB sebelum akhirnya menyerah dengan MBR korupsi tapi tidak't jelas jika controller disebabkan sebagai bekerja kokoh di USB3 mode tapi USB2 memiliki lebih banyak gangguan selama readback dan itu juga berlari sangat panas. 4GB Duo gagal dalam pembaca ketika menyalin data, sekali lagi bisa't pastikan tapi mungkin setara dengan 6 tahun menggunakan kamera, dan juga menunjukkan "Memulihkan" pesan. Kebetulan menyesuaikan tegangan listrik selama menulis akan membuatnya gagal JAUH lebih cepat. Saya 128GB microSD gagal setelah sekitar 2 tahun dengan gejala yang sama, juga memiliki kelebihan menguras daya dan panas namun data membaca dan menulis baik-baik saja.
Dihapus tidak relevan catatan tentang percobaan X-ray.