Forum: Mikrocontroller und Digitale Elektronik SD-Card Kommando CMD16


von Sony7600 (Gast)


Lesenswert?

Eine 128 MBytes SD-Card die 262.144 Blöcke a 512 Bytes (= 128 MBytes) 
hat, wird mit dem Kommando CMD16 auf 32 Bytes Blöcke umgestellt. Hat die 
Karte jetzt 262.144 Blöcke a 32 Bytes (= 8 MBytes) oder hat sie 
4.194.304 Blöcke a 16 Bytes 128 MBytes)?
von andy (Gast)


Lesenswert?

Hallo,damit stellst du die blockgrösse auf 512 Bytes.Es gibt ein paar 
karten,wo die blockgrösse anders voreingestellt ist.
gruss
andy
von Sony7600 (Gast)


Lesenswert?

Das ist nicht richtig und beantwortet meine Frage nicht. Laut 
Spezifikationen kann bei Standard SD-Cards die Blockgröße ab 1 Byte 
eingestellt werden. Die Frage ist: beeinflusst die Göße der Blöcke die 
verfügbare Kapazität.
von andy (Gast)


Lesenswert?

Hallo,komisch das meine Karte nach senden von cmd16 eine Blockgrösse von 
512 Bytes hat.Aber wenn du es besser weisst,dann ist ja gut.
von holger (Gast)


Lesenswert?

>Laut
>Spezifikationen kann bei Standard SD-Cards die Blockgröße ab 1 Byte
>eingestellt werden.

KANN , muss aber nicht.

Set length is valid for memory access
commands only if partial block read
operation are allowed in CSD.

In the case of a High Capacity SD
Memory Card, block length set by CMD16
command does not affect the memory
read and write commands. Always 512
Bytes fixed block length is used. This
command is effective for LOCK_UNLOCK
command.
In both cases, if block length is set larger
than 512Bytes, the card sets the
BLOCK_LEN_ERROR bit.
von Sony7600 (Gast)


Lesenswert?

Andy, du bist ein echter Ignorant. Du weißt definitiv nicht wie eine 
SD-Card auf dieses Kommando reagiert. Warum antwortest du überhaupt? 
Willst du dich wichtig mache? Ich habe eine ernsthafte Frage gestellt - 
auf die ich eine ebensolche Antwort möchte. Schau dir die 
Spezifikationen auf https://www.sdcard.org/home/ an, dann siehst du, 
dass ich recht habe. Eine Standard SD-Card lässt sich mit CMD16 auf 
Blockgrößen ab 1 Byte einstellen.
von Sony7600 (Gast)


Lesenswert?

Nett, Holger, aber dein Beitrag hilft mir nicht weiter.
von holger (Gast)


Lesenswert?

>Andy, du bist ein echter Ignorant. Du weißt definitiv nicht wie eine
>SD-Card auf dieses Kommando reagiert.

Er scheint es wohl ausprobiert zu haben.
Wie reagieren deine Karten auf das Kommando?

>Warum antwortest du überhaupt?

Weil er dir helfen möchte?

>Willst du dich wichtig mache? Ich habe eine ernsthafte Frage gestellt -
>auf die ich eine ebensolche Antwort möchte.

Kann es sein das du etwas unhöflich bist? Kann es sein
das du Null Ahnung hast? Kann es sein das dir hier deshalb keiner
mehr eine Antwort gibt?

>Spezifikationen auf https://www.sdcard.org/home/ an, dann siehst du,
>dass ich recht habe. Eine Standard SD-Card lässt sich mit CMD16 auf
>Blockgrößen ab 1 Byte einstellen.

Aber nur beim Lesen, hab ich aber auch noch nie probiert.
Alle meine SD Karten liefern in WRITE_BL_PARTIAL eine 0.
Schreiben geht also nur mit 512Byte pro Sektor.

Deine merkwürdige Frage mit kleinerer Blocklänge deutet
darauf hin das du mit einem viel zu kleinen Controller
auf eine SD Karte zugreifen möchtest. Nimm was mit mindestens
1kB RAM, dann klappt das auch.

Und jetzt spar dir bitte eine Antwort in deinem üblichen
beleidigendem Stil.
von Jim M. (turboj)


Lesenswert?

> Eine Standard SD-Card lässt sich mit CMD16 auf
> Blockgrößen ab 1 Byte einstellen.

Ich meine schon Karten gesehen zu habe, die READ_BL_PARTIAL = 0 liefern. 
Das ist dann für den Anwender doof, wenn eine Karte geht und eine andere 
nicht.

Karten mit gesetztem WRITE_BL_PARTIAL habe ich noch nie gesehen.

Ich würde immer die 512 Byte lesen und notfalls die Bytes wegschmeissen 
die nicht gebraucht werden. Ich habe hier schon sehr schlechte 
Erfahrungen mit "selten genutzten" SD Karten Features gemacht.

Zum Schreiben braucht man eh' einen 512 Byte Puffer.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.