SD kaart corrupt/stuk, hoe te fixen

Pagina: 1
Acties:

  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 11-01 17:09
hallo,

Ik ben bezig met een sd kaart aansturen via spi met een microcontroller. Na wat stoeien werkt dit. Ik kan de kaart netjes initialiseren en de eerste sector lezen. Alleen werkt de kaart niet meer in een pc. Ik wilde rauwe data erop zetten en die proberen in te lezen met de microcontroller om te kijken of het werkt, maar de pc zegt dat hij geformatteerd moet worden, maar dit lukt vervolgens niet.

het gaat om een: Sandisk 16gb micro sdhc kaartje waar voorheen iets van een bootcd op stond. 32mb leesbare partitie in windows. Maar dat mocht allemaal weg.

geprobeerd:
In windows:
formatteren met windows tooltje --> kan formatteren niet voltooien
formatteren met SD formatter --> geeft aan dat hij write protected is (in beide standen van de schakelaar)
low level format met hddguru low level format tool 4.4 --> ziet de kaart met firmware 0000 en serial number 000000 met LBA = 62688 en capacity 32.09MB (dan moet hij toch meer sectoren hebben? 8)7 ). Formatteren faalt, "cannot be accessed because it is smaller than 65535 sectors"

In linux:
testdisk --> analyze geeft de volgende info:
Disk: /dev/sdb - 32 MB / 30 MiB - CHS 1011 1 62
current partition structure:
partition Start End Size in sectors

Partition sector doesn't have the endmark 0xAA55
Dat lijkt mij een clue, maar ik heb de kennis niet om hier wat uit te halen.


DD if=/dev/sdb doet:
62688+0 records in
62688+0 records out
32096256 bytes (32MB) copied, 21.606 s, 1.5MB/s
GParted kan geen partitie maken --> "No partition table found on device /dev/sdb"
Een partitietabel aanmaken (device --> create partition table) denkt even na, maar lijkt niets te doen. (geen meldingen, geen veranderingen)


Tot zover ging mijn inspiratie ongeveer.... |:(


De kaart is niet dood (of iig niet volledig), in de microcontroller kan ik hem nog netjes zien initialiseren en de eerste sector uitlezen.


Wie heeft de oplossing? _/-\o_

alvast bedankt
Timberleek

  • r44
  • Registratie: November 2000
  • Laatst online: 07-01 17:41

r44

Probeer Diskpart in Windows.
Kijk of deze de disk/card wel ziet.
Indien wel probeer het met disk part te formateren.

44


  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 11-01 17:09
Diskpart herkent hem. Ik kan hem cleanen. Format gaat goed t/m ongeveer 91% daarna: "Diskpart has encountered an error: De parameter is onjuist. See the System Event Log for more information" (in eventvwr.msc zie ik zo snel niets staan).

  • r44
  • Registratie: November 2000
  • Laatst online: 07-01 17:41

r44

Welke Diskpart opdracht heb je ingegeven?
Doe ook een list partition om te zien of er meerdere partities zijn.

44


  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 11-01 17:09
list partition geeft 1 primaire partitie, 30MB groot, 0 MB vrij

Wat ik net had gedaan was:
list disk
select disk 2 (in dit geval)
clean
list volume
select volume 1
format (faalt aan het einde).

  • r44
  • Registratie: November 2000
  • Laatst online: 07-01 17:41

r44

Probeer een clean all
en een clean volume

44


  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 11-01 17:09
Als ik disk 2 selecteer en clean all doe laat hij disk 0 en 1 met rust toch?

  • r44
  • Registratie: November 2000
  • Laatst online: 07-01 17:41

r44

Als het goed is wel want disk 2 is geselecteerd

44


  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 11-01 17:09
Net als eerder met "gewoon" clean werkt clean all prima, maar hij blijft 30mb en niet formatteerbaar

  • r44
  • Registratie: November 2000
  • Laatst online: 07-01 17:41

r44

Kijk in Windows schijf beheer of je het daar wel zie
Maar een plaatje/foto van de info van schijf beheer van de ze schijf.
Type cmd in de zoek vlak bij start en kies voor uitvoeren als administrator
dan diskpart dan list disk maak ook hiervan een plaatje/foto
Plaats de foto's bij je reactie

Probeer de disk te controleren op erros

44


  • Thralas
  • Registratie: December 2002
  • Laatst online: 22:01
Als je 'm dan toch aan een microcontroller hebt hangen zou ik vooral daarmee debuggen, de meeste kaartlezers in PCs hangen aan de USB bus als mass storage device, dat is even onhandig als een problematische SATA-disk aan USB hangen.

Ik ben niet echt into de SD specs, maar je zou wellicht even kunnen beginnen met het decoden van de CID/CSD registers, daar staat zo op 't oog het een-en-ander in over write protect (anders dan het hardwareschuifje, dat is enkel een indicatie voor de MMC host, geen fysieke write protect).

  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 11-01 17:09
Zoals gevraagd:

schijfbeheer:
Afbeeldingslocatie: https://dl.dropboxusercontent.com/u/3264324/Schermafdruk%202015-01-09%2022.02.02.png

In dit geval gaat het dan natuurlijk om schijf 2.

Diskpart:
Afbeeldingslocatie: https://dl.dropboxusercontent.com/u/3264324/Schermafdruk%202015-01-09%2022.04.26.png
Disk 2 en volume 5.
De format telt op tot ergens in de 90% en dan schiet hij naar 0% met die foutmelding (en nog steeds niets te zien in eventvwr zo te zien).


De microcontroller implementatie is nog verre van klaar (was net aan het proberen mijn eerste sector te lezen toen ik erachter kwam dat de pc de kaart weigerde). Maar ik ga het eens proberen. De initialisatie werkt prima, dus dan moet ik de registers ook kunnen lezen.


edit:

Ik heb de CID en CSD registers uitgelezen. Daarin staat wel:
[qoute]
Write Protect Group Size:
0x4f [Interpreted: 80 sectors]

Write Protect Group Enable:
0x1 [Interpreted: Yes]
[/quote]


De volledige status:

CID
[code]
035344534430333280ffffffff0062c5

Decoded Result

Manufacturer ID: Controlled and assigned by SD Card Association
0x03

OEM/Application ID: Identifies OEM or card contents, set by Toshiba, SanDisk and MEI
0x5344

Product Name: 5 ASCII Characters
0x5344303332 [ASCII: SD032]

Product Revision: 2 BCD Characters
0x80 [BCD: 8.0]

Product Serial Number: 32-bit unsigned integer
0xffffffff [Decimal: 4294967295]

Manufacturing Date: 3 BCD Characters YYM where actual year is is 2000+YY (although it seems some don't follow!)
0x062 [BCD: 0 6/2]

CRC7 Checksum + always 1 in LSB:
0xc5
[/quote]

CSD
00260032515981e9bef9cfff92404053

Decoded Result

CSD Structure: describes version of CSD structure
0b00 [Interpreted: Version 1.0 - RESULTS MAY BE INCORRECT!]

Data Read Access Time 1: defines Asynchronous part of the read access time
0x26 [Interpreted: 1.5 x 1ms]

Data Read Access Time 2: worst case clock dependent factor for data access time
0x00 [Decimal: 0 x 100 Clocks]

Max Data Transfer Rate: sometimes stated as Mhz
0x32 [Interpreted: 2.5 x 10Mbit/s]

Card Command Classes:
0x515 [Interpreted: Class 0: Yes. Class 1: No. Class 2: Yes. Class 3: No. Class 4: Yes. Class 5: No. Class 6: No. Class 7: No. Class 8: Yes. Class 9: No. Class 10: Yes. Class 11: No. ]

Max Read Data Block Length:
0x9 [Interpreted: 512 Bytes]

Partial Blocks for Read Allowed:
0b1 [Interpreted: Yes]

Write Block Misalignment:
0b0 [Interpreted: No]

Read Block Misalignment:
0b0 [Interpreted: No]

DSR Implemented: indicates configurable driver stage integrated on card
0b0 [Interpreted: No]

Device Size: to calculate the card capacity excl. security area ((device size + 1)* 512kbytes
0x29bef9 [Decimal: 2735865]

Erase Single Block Enabled:
0x1 [Interpreted: Yes]

Erase Sector Size: size of erasable sector in write blocks
0x1f [Interpreted: 32 blocks]

Write Protect Group Size:
0x4f [Interpreted: 80 sectors]

Write Protect Group Enable:
0x1 [Interpreted: Yes]

Write Speed Factor: block program time as multiple of read access time
0x4 [Interpreted: x16]

Max Write Data Block Length:
0x9 [Interpreted: 512 Bytes]

Partial Blocks for Write Allowed:
0x0 [Interpreted: No]

File Format Group:
0b0 [Interpreted: is either Hard Disk with Partition Table/DOS FAT without Partition Table/Universal File Format/Other/Unknown]

Copy Flag:
0b1 [Interpreted: Non-Original]

Permanent Write Protection:
0b0 [Interpreted: No]

Temporary Write Protection:
0b0 [Interpreted: No]

File Format:
0x0 [Interpreted: Hard Disk with Partition Table]

CRC7 Checksum + always 1 in LSB:
0x53

[ Voor 66% gewijzigd door timberleek op 09-01-2015 23:23 ]


  • Thralas
  • Registratie: December 2002
  • Laatst online: 22:01
Tja, in ieder geval is hij niet geheel locked (temporary/permanent wp).

Je hebt niet met CMD28 (SET_WRITE_PROT) lopen experimenteren? Met CMD29 kun je die weer clearen, en met CMD30 de WP status van een adres (of group?) opvragen. Misschien is dat een idee.

Hoe het met de parameters zit weet ik niet, dat staat in de specs

Als je er daarmee niet uitkomt, en nog een (Linux)host met een echte MMC reader hebt (bijvoorbeeld een Raspberry Pi), dan zou je daar kunnen proberen te schrijven of statusinfo op proberen te vragen, zou daar in ieder geval duidelijkere error messages verwachten.

  • timberleek
  • Registratie: Juli 2009
  • Laatst online: 11-01 17:09
Volgens de simplified SD spec ( https://www.sdcard.org/do...ified_specs/part1_410.pdf (pagina 165) ) worden die commando's niet ondersteund door SDHC en XC kaartjes. Maar ik zal het eens proberen.

edit
inderdaad. cmd29 geeft illegal command als response

[ Voor 12% gewijzigd door timberleek op 10-01-2015 00:11 ]

Pagina: 1