Flash geheugen corruptie als gevolg van electricals?

Ik ben een softwareontwikkelaar die werkt aan een WinCE-apparaat (in-vehicle) dat een SDIO-kaart gebruikt voor opslag.

We lijden aan (schijnbaar) willekeurige beschadigingen van de gegevens, schijnbaar uit de FAT-tabel die beschadigd zijn geraakt. Mogelijk vindt u ontoegankelijke mappen, bestanden met "rommel" halverwege, enzovoort. De kaart lijkt NIET te lijden aan fysieke schade (slechte sectoren) - een chkdsk lost de FAT op in de meeste gevallen (de gegevens bevinden zich natuurlijk in de problemen).

Dit klinkt als een klassiek geval van stroomverlies in het midden van het schrijven, dus we hebben een behoorlijk beetje geïmplementeerd om dat scenario te bestrijden.

We hebben nu elektronica om ons op de hoogte te stellen dat de hoofdschakelaar is uitgeschakeld en de toepassing op het apparaat voldoende tijd te geven om netjes af te sluiten.

Ondanks alles hebben we nog steeds het probleem. We lijken corruptie te zien, zelfs in de afwezigheid van een "vuile" shutdown.

Ervan uitgaande dat de softwarekant helemaal correct is. Ligt het binnen het bereik van de mogelijkheid dat tijdelijke pieken, brown-outs of andere onregelmatigheden in de stroomvoorziening kunnen veroorzaken wat we zien? We hebben filters enz. Op zijn plaats om te sluiten

Is het mogelijk dat de ESD/elektromagnetische storing een van de bovenstaande oorzaken zou kunnen veroorzaken? Nog andere gedachten van een elektrische/elektronische kant?

Zeer gewaardeerd.

4

3 antwoord

Dit is waarschijnlijk een softwarefout. Je hebt echter wel 'voertuig' gezegd, wat ongebruikelijk smerige kracht impliceert. Als dit een normale auto is, is de "12V" stroom ongeveer net zo slecht als dergelijke dingen elektrisch worden. Je kunt de 12V-auto niet rechtstreeks rechtstreeks aansluiten op je computer met één board (of wat je hardware ook is), tenzij deze specifiek is geclassificeerd voor "automotive power", zelfs als deze een 12V-ingang heeft.

Autostroom kan bijna 14 V zijn bij normaal gebruik en kan 10 volt spanning op korte termijn hebben. Deze kunnen elektronica verwarren of vernietigen die niet speciaal voor hen is ontworpen.

U hebt niet gezegd welke spanning en stroom uw computer nodig heeft, maar de eenvoudigste oplossing is om een ​​"automotive-rated" voeding te krijgen die de juiste DC-spanningen maakt. Er moeten ergens zulke dingen van de plank zijn.

3
toegevoegd
Niet alleen heeft een voertuig "vervelende kracht", het heeft ook vervelende trillingen. Normaal gesproken zou dat geen probleem zijn, maar het is mogelijk dat als de SDIO-kaartconnector niet 100% goed is, er af en toe verbindingen kunnen zijn. Als het OP het probleem op de werkbank kan reproduceren met een tafelmodel voeding, dan kunnen vuile stroom en trillingen worden geëlimineerd als een bron van corruptie.
toegevoegd de auteur user3624, de bron

Ik heb de stemming voor software-bug gestaakt.

Ik heb recentelijk een probleem met flash-corruptie doorgemaakt op een WinCE-systeem, als onderdeel van een ontwikkelingsteam. We zouden sporadisch 2K-flitsblokken vinden die waren gewist. (Alle bytes 0xFF) Gedurende ongeveer 6 maanden hebben we alles getest, van ESD tot vuile stroom, tot EMI en RFI-interferentie, we hebben gloednieuwe apparaten en bijgehouden gebruik gekocht om er zeker van te zijn dat we de wiscycluslimiet niet overschreden en blokkades doorbraken. ging door onze (toepassingsniveau) software met een fijne kam.

Uiteindelijk bleek het een obscure bug te zijn in de zeer lage flash-stuurprogrammacode, die zich alleen voordeed onder perioden van zware CPU-belasting. De bestuurder kwam van een derde partij. We hebben hen geïnformeerd over het probleem dat we hebben gevonden, maar ik weet niet of ze ooit een patch hebben uitgebracht.

3
toegevoegd

De meest gangbare flash-media bevatten binnen het opslagapparaat een mechanisme dat logische sectornummers dynamisch aan fysieke adressen toewijst, omdat de software verwacht een bepaalde sector een willekeurig aantal keren met minimale vertraging te kunnen schrijven, terwijl de meeste flash-apparaten hardware-pagina's moeten hebben. worden gerecycled in groepen van 256, 1024 of meer. Wanneer men naar sector 123 schrijft, zal de hardware een blanco pagina identificeren, pagina-gegevens daar schrijven samen met enkele labels die aangeven dat zijn sector 123. Als men sector 123 herschrijft, de hardware een oude pagina zal identificeren, de gegevens van de pagina daar samen met sommige tags. Bovendien zal de hardware de nieuwe pagina een volgnummer toekennen van een soort die hoger is dan de oude, of anders zal het de tags op de oude pagina vernietigen. Als het aantal blanco pagina's dat beschikbaar is erg klein wordt, zal het systeem proberen een blok te vinden waarop veel van de pagina's zijn vervangen, alle niet-omgedraaide pagina's van dat blok naar enkele van de weinige overgebleven pagina's kopiëren, en wis dan het oude blok. Merk op dat een dergelijke bewerking elke willekeurige verzameling van pagina's kan omvatten, vaak inclusief pagina's die niet betrokken zijn bij een recente of huidige bewerking.

De logica om dit alles af te handelen in een flash-apparaat dat vele miljoenen pagina's bevat, maar waarschijnlijk niet miljoenen bytes RAM heeft, is behoorlijk gecompliceerd. Door de logica zo te rangschikken dat deze robuust is als er op enig moment stroom verloren gaat, zou dit nog meer het geval zijn. Het is mogelijk dat sommige bedrijven erin zijn geslaagd om zeer robuuste systemen te ontwerpen voor het waarborgen van data-integriteit, maar het is ook vrij duidelijk dat niet alle flash-media dergelijke systemen bevatten (hoe dan ook niet effectief en correct). Helaas is er echt geen leuke manier voor de software die naar Flash-media schrijft om te weten wat er 'achter de schermen' gaat gebeuren als reactie op een schrijfverzoek. Tenzij u het gebruik van media nodig heeft waarvan bekend is dat ze zich robuust gedragen in ongunstige omstandigheden, is de enige manier om corruptie te voorkomen in geval van onverwacht vermogensverlies niet onverwachts kracht verliezen.

2
toegevoegd