J'ai besoin de tester la résilience de certains codes en lecture / écriture pour du matériel embarqué. Comment pourrais-je sacrifier quelques cartes SD et casser plusieurs secteurs connus pour une étude contrôlée?
La seule chose à laquelle je peux penser, c’est d’écraser un seul secteur quelques millions de fois. Je me demande si un script Linux badblocks peut être créé pour exécuter son test destructif sur un seul secteur à plusieurs reprises pendant plusieurs heures.
sd-card
bad-sectors
bad-blocks
Gabe Krause
la source
la source
Réponses:
Une approche alternative qui peut être utile.
Si votre code fonctionne sous Linux, vous pouvez peut-être le tester avec un périphérique logique "défectueux".
dmsetup
peut créer des périphériques qui renvoient des erreurs d'E / S. Il suffit de construire votre appareil en utilisanterror
et / ouflakey
cible. Deman 8 dmsetup
:Remarque:
flakey
l'utilisation de la cible est documentée ici . Exemple de base ici .Pour autant que je sache, une erreur d’entrée / sortie sera immédiatement signalée. C’est donc différent du comportement réel de la carte SD dans lequel vous pouvez vous attendre à un délai, à un blocage, etc. Néanmoins, je pense que cette approche peut être utile dans certains cas, du moins pour une exécution rapide. test préliminaire ou si.
la source
dmsetup
commande permettant de configurer unerror
périphérique qui renvoie toujours des erreurs de lecture: stackoverflow.com/questions/1870696/…Ce gars a piraté le microcontrôleur à l'intérieur des cartes SD utilisées pour marquer les blocs défectueux: https://www.bunniestudios.com/blog/?p=3554
Vous pourrez peut-être faire la même chose et marquer arbitrairement des blocs comme défectueux.
.
.
.
la source
Cela ne fonctionne généralement pas, car les cartes SD (ou eMMC) les plus récentes utilisent un nivellement d'usure statique et dynamique, ce qui signifie qu'un contrôleur intelligent interprète votre instruction d'écriture et la mappe sur l'un des secteurs flash les moins utilisés.
La seule chose que vous puissiez faire est d’essayer de contacter vos fournisseurs et de demander leur fiche technique; il peut y avoir des moyens (spécifiques au fournisseur) de récupérer l'état de leur algorithme de mise à niveau. Cela vous permettrait potentiellement d'interroger l'état / l'utilisation du flash sous-jacent. Ou vous pourriez être malchanceux et cela pourrait ne pas exister.
Si votre objectif est réellement de détruire le flash, tout ce que vous pouvez faire est d'exécuter des cycles de lecture et d'écriture massifs et de vérifier en permanence que les données que vous lisez sont toujours cohérentes. Par exemple, créez deux fichiers volumineux, stockez leurs sommes de contrôle et lisez-les / écrivez-les afin de vérifier leur somme de contrôle. Plus le flash est grand, plus ce processus prendra longtemps.
la source
Vous pouvez augmenter l'usure du transistor en augmentant la température de fonctionnement. Utilisez des cycles d'écriture-effacement sur une puce chauffée (70-120 ° C); il va porter plus vite.
la source
Préface: Cette option nécessite une programmation supplémentaire et des modifications matérielles, mais elle permettrait des lectures contrôlées transparentes pour l'hôte.
Une carte SD a plusieurs options d'E / S, mais elle peut être contrôlée via SPI. Si vous deviez prendre une carte SD et la modifier afin de pouvoir relier les broches à un microcontrôleur (tel qu’un Arduino), l’Arduino imiterait la carte SD et resterait transparent pour le périphérique qui la lisait. Votre code sur le microcontrôleur peut à dessein renvoyer des données incorrectes en cas de besoin. En outre, vous pouvez installer une carte SD sur le microcontrôleur afin que les lectures puissent passer à travers le microcontrôleur sur la carte SD afin de permettre des tests de plusieurs gigaoctets.
la source
Je voudrais aller à ebay / aliexpress et acheter la carte SD la moins chère que je puisse trouver en Chine, celle qui est "trop belle pour être vraie". Ils viennent souvent avec des secteurs défectueux ou sont dans un ensemble de logiciels beaucoup plus gros qu’ils ne le sont réellement. De toute façon, vous devriez vous retrouver avec une carte SD défectueuse à utiliser pour les tests.
la source
Il était une fois, il y a de nombreuses années, j'étais payé pour récupérer un ensemble de photos et de vidéos de fin d'études d'une carte SD pour une mère plutôt désemparée. Après une inspection minutieuse, la carte avait été physiquement endommagée avec une fissure visible dans le boîtier externe et présentait plusieurs secteurs défectueux, notamment plusieurs secteurs critiques précoces, ce qui rendait même les programmes de récupération les plus fiables du moment incapables de lire la carte. . En outre, les outils de données médico-légales coûtaient alors une fortune.
J'ai fini par obtenir une carte SD de taille / marque identique et d'écrire mon propre utilitaire de copie et de restauration de données brutes personnalisé permettant de copier les données de la mauvaise carte vers la bonne. Chaque fois que le service public rencontrait un secteur défectueux, il réessayait plusieurs fois avant d'écrire tous les zéros pour ce secteur et, au lieu d'abandonner et d'arrêter, ignorait l'échec et passait au secteur suivant. Les tentatives ont été tentées à nouveau, car j’avais également remarqué que certains secteurs avaient encore un taux de réussite de lecture de 40% environ. Une fois les données stockées sur la nouvelle carte SD, les outils de récupération qui avaient échoué auparavant fonctionnaient parfaitement, avec une perte / corruption de données minimale. Dans l'ensemble, environ 98% de tous les fichiers ont été récupérés. Un certain nombre d'éléments précédemment supprimés ont également été récupérés, car rien n'est jamais réellement supprimé - ils sont simplement marqués comme tels et lentement remplacés. Ce qui a commencé comme un exercice de récupération de données légèrement ennuyeux est devenu l’un de mes projets de développement de logiciels personnels les plus mémorables et les plus intéressants. Au cas où vous vous le demanderiez, la mère était ravie.
Quoi qu’il en soit, cette histoire montre qu’il est possible d’endommager physiquement une carte SD de telle sorte que les données restent accessibles mais que certains secteurs ne fonctionnent que très peu et que tout lecteur qui tente de le lire puisse avoir de la difficulté à le faire. Le plastique des cartes SD a tendance à être assez fragile, alors plier ou couper des morceaux bon marché peut faire l'affaire. Votre kilométrage peut varier.
Vous pouvez également demander à certains endroits de la récupération de données dans votre région. Dans la mesure où ils se spécialisent dans la récupération de données à partir de divers périphériques défaillants ou défaillants, ils doivent disposer de conseils / astuces utiles et peuvent même disposer de cartes SD pré-décomposées (par exemple à des fins de formation).
la source
dd
qu’il se comporte de la même manière que cela, de nos jours. Je ne suis pas sûr cependant.Cette réponse est une extension du commentaire de @Ruslan
Alternative possible:
Vous n'êtes pas sûr que cela fonctionne à vos fins, mais peut-être que cela suffira réellement à endommager physiquement votre carte, ce qui pourrait être beaucoup plus rapide.
la source
Vous pouvez essayer d’introduire une alimentation instable ou une signalisation de tension plus élevée.
Une faute commune à une famille d’appareils que je connais a une forte corrélation entre la corruption de la carte SD et le contact intermittent de la batterie.
la source
Certaines cartes SD de faible capacité (16 Mo) utilisent des puces flash dans les packages de style TSOP / TSSOP. Un atelier capable de retravailler SMT (si vous effectuez un travail intégré, vous pouvez disposer de cette compétence en interne, sinon vérifiez si les petites entreprises effectuent des réparations sur téléphone / ordinateur portable au niveau du conseil d'administration) pourrait éventuellement séparer et rattacher cette puce, de sorte qu'elle puisse être lue et écrite. raw (y compris les codes ECC) avec un programmeur d’appareil.
Sachez néanmoins que vous allez principalement tester:
et dans le pire des cas
Si vous souhaitez simplement vérifier le comportement erratique d’une carte SD pour une raison quelconque, il est probablement préférable d’introduire un bruit électrique dans les lignes d’interface (en plaçant par exemple un commutateur de bus FET entre à une source de signaux non sensés (des bons niveaux électriques cependant).
la source
Relatif à la réponse d'OlafM, mais différent: vous pouvez programmer votre propre microcontrôleur pour qu'il parle le protocole de la carte SD, puis émuler le comportement que vous souhaitez.
la source
La zone FAT32 Master Boot Record est probablement la plus susceptible d’être utilisée de manière abusive car, d’un point de vue logique, elle doit toujours se trouver au même endroit. (Peut-être que cela est géré par le remappage en douceur des secteurs défectueux, mais je suis quelque peu sceptique quant à son implémentation sur tout le matériel.) Vous pouvez donc exécuter
sfdisk
en boucle et voir si vous pouvez le détruire de cette façon.Mais je vais vous prier de faire tout ce qui est en votre pouvoir pour améliorer la fiabilité du matériel, au lieu d'essayer de gérer un matériel défectueux dans un logiciel. Le problème, c’est que les cartes SD échouent de toutes sortes de façons étranges. Elles deviennent illisibles, deviennent illisibles, vous transmettent de mauvaises données, elles expirent lors d'opérations, etc. Il est très difficile de prévoir toutes les possibilités d'échec d'une carte.
Voici l'un de mes échecs préférés, le "mode big data":
Les cartes SD sont des produits de consommation courante qui subissent une pression énorme sur leurs coûts. Les pièces changent rapidement et les fiches techniques sont difficiles à obtenir. Les produits contrefaits ne sont pas inconnus. Pour le stockage bon marché, ils sont difficiles à battre, mais si les SSD font de la fiabilité une priorité, la priorité des cartes SD est la vitesse, la capacité et le coût (probablement pas dans cet ordre).
Votre première ligne de défense consiste à utiliser une pièce eMMC soudable avec une vraie fiche technique d'un fabricant réputé au lieu d'une carte SD amovible. Oui, ils coûtent plus cher par Go, mais la pièce sera en production plus longtemps et au moins, vous savez ce que vous obtenez. Souder la pièce évite également toute une série de problèmes potentiels (cartes éjectées pendant les écritures, mauvais contact électrique, etc.) avec une carte amovible.
Si votre produit nécessite un stockage amovible ou qu'il est trop tard pour changer quoi que ce soit, envisagez de dépenser plus d'argent pour les cartes de qualité «industrielle» ou de les traiter comme des objets jetables. Ce que nous faisons (sous linux), c'est
fsck
la carte au démarrage et la reformater si des erreurs sont signalées, car le reformatage est acceptable dans ce cas d'utilisation. Puis onfsck
le refait. S'il signale toujours des erreurs après le reformatage, nous le RMA et remplaçons le matériel par une variante plus récente utilisant eMMC.Bonne chance!
la source
Ce n’est peut-être pas la direction que vous souhaitiez, mais j’ai trouvé que retirer ma carte SD pendant que ma radio ou mon ordinateur portable lisait garantit une carte SD bloquée environ 1/5 ou 1/10 fois. Il semble que les cartes ne fonctionnent pas bien lorsque le courant est coupé pendant une lecture et probablement écrites. Après avoir lu les commentaires de Robert Calhoun ci-dessous, cela me porte à croire que cela pourrait endommager le FAT. Bien que je ne sache pas pourquoi la simple lecture provoque un blocage - il ne devrait y avoir aucune écriture en cours?
la source
Si votre carte SD est au format FAT32, vous pouvez éditer les 2 graisses en hexadécimal et marquer un secteur comme défectueux avec le code hexadécimal correct. Ce n'est qu'une astuce si vous voulez tester logiquement un logiciel supposé trouver un secteur défectueux à cet endroit particulier; cela ne nuira pas à votre carte SD non plus, un reformatage la ramènera à un état normal.
la source
--make-bad-sector
drapeau semble prometteur! Cependant, je ne peux pas dire si cela ne fonctionnera que dans le système Linux qui a initialement exécuté cette commande. J'espère que la commandehdparm --make-bad-sector 20000 /dev/sd#
rendrait le secteur 20000 incorrect et serait détectée comme mauvaise sur mon périphérique matériel intégré qui ne fonctionne pas sous Linux. Des pensées?Sur un seul secteur - non, car le code de correction d'usure à l'intérieur de la carte SD remappera les blocs logiques partout.
Mais vous pouvez facilement exécuter
badblocks -w
une boucle jusqu'à ce que certains mauvais blocs apparaissent. Quelque chose comme ça devrait marcher:en supposant que badblocks renvoie 0 si aucun bloc défectueux n'a été détecté et ≠ 0 sinon (la page de manuel ne dit pas et je n'ai pas vérifié le code source.)
la source
Normalement, avec les cartes SD / USS, ils mettent en œuvre le nivellement d'usure, ce qui peut être assez difficile. Selon le type (cellule à une seule couche, multicouche, TLC, 3D-NAND, etc.), le cycle d'écriture nécessaire pour le casser suffisamment pour épuiser le pool de secteurs peut se situer dans plusieurs TB.
En fait, je l'ai testé avec un Duo, SSD et clé USB de 4 Go, 64 Go et 256 Go. Les 64 Go K --- s --- utilisant des puces de 4 microns et 16 Go ont duré environ 3,84 To avant de tomber en panne avec une simple erreur logicielle dans la zone FAT. . L’utilisation de 256 Go a duré un peu moins, mais il faudrait peut-être 5 To avant de céder avec une corruption de MBR, mais sans savoir si le contrôleur le faisait fonctionner correctement en mode USB3, mais USB2 présentait davantage de problèmes lors de la relecture. et il a également couru très chaud. 4 Go Duo a échoué dans le lecteur lors de la copie des données, encore une fois, cela n’est pas sûr, mais cela équivaut peut-être à 6 ans d’utilisation et l’appareil photo affichait également des messages "Récupération". La variation accidentelle de la tension d’alimentation pendant l’écriture accélérera considérablement l’échec. Ma microSD de 128 Go a échoué après environ 2 ans d'utilisation avec des symptômes similaires,
Suppression des notes non pertinentes sur les expériences de rayons X.
la source