Lock/Unlock MMC mit Passwort

Gast #530589
Lesenswert?

Hallo Leute,

Ich habe schon alles versucht. Ich schaffe es aber nicht eine 
MMC/SD-Karte zu sperren bzw. zu entsperren.
Meine Routinen zum Lesen und Schreiben von Datenblöcken funktionieren 
soweit richtig.
Wie gesagt, nur das Setzen eines Passwortes schlägt fehl:
1
  // Blocklänge festlegen (=CMD16) auf 8 Byte
2
  mmc_sendCommand (16,8);
3
  // Wir erwarten 0 als Antwort
4
  responseR1(0);
5

6
  // Kommando zum Setzen des PW (=CMD42) und Stuffbits als Argument
7
  mmc_sendCommand (42,0xFFFFFFFF);
8
  // Wir erwarten 0 als Antwort
9
  responseR1b(0);
10
  
11
  // Startbyte senden
12
  mmc_sendByte(0xFE);  
13
  // Datenblock senden
14
  mmc_sendByte(5); // Lock und setPW
15
  mmc_sendByte(6); // PW ist 6 Bytes lang
16
  mmc_sendByte('1'); // Ab hier das PW selbst
17
  mmc_sendByte('2');
18
  mmc_sendByte('3');
19
  mmc_sendByte('4');
20
  mmc_sendByte('5');
21
  mmc_sendByte('6');
22
  // 16Bit-CRC senden (Dummy)
23
  unsigned char i;
24
  for (i=0; i<2; i++) mmc_sendByte(0xFF);
25
  
26
  // Wir erwarten DATEN KORREKT ERHALTEN
27
  mmc_wait_DataResponse();

Das Lustige ist, das verschiedene Karten verschiedenes Verhalten zeigen.
Eine Karte gibt ALLES OK zurück und ist danach aber nicht gesperrt, eine 
andere "hängt" sich direkt nach dem Senden des CRC, also vor dem letzten 
"mmc_wait_DataResponse()" quasi auf. Es kommen nur noch Nullen als 
Antwort (was BUSY bedeuten sollte), aber egal wie lange man wartet es 
tut sich nix mehr (Nullen bleiben). Nur ein Trennen der Karte von VCC 
und erneutes Anschließen erweckt sie wieder zum Leben.

Hat irgendwer vielleicht ne Ahnung, wo das Problem liegt oder vielleicht 
sogar schon Code?
Da die Daten unbedingt vor Fremdzugriff geschützt werden müssen, wäre 
dieses Feature sehr wichtig.

Vielen Dank im Voraus,
Erik

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren