Problem mit USB MSD / UFI cmd

OP #6574974
Lesenswert?
• ▲
▼
Ich versuche mich gerade an einem USB MSDevice auf Basis eines SPI 
Flashs.Das funktioniert auch schon, kommt durch die ENUM, zeigt im 
GeräteManager ein (USB)Laufwerk an, und ich bekomme unter W10 den 
Formatier Dialog, da ich beim UFI READ(10) glöschte Blocks (alles 0xFF) 
zurückgebe. Ich reporte im Moment 16 Mbyte und eine Blocksize von 4k da 
mein SPI Flash 4k pages beim löschen hat. Ein Flash File System habe ich 
(noch) nicht eingebaut.
Das Endziel ist ein universeller MSD ClassCode in c bei dem man 
lediglich noch EndPoints, Speichergröße, und Blockgröße einstellen muss.

Nun zum Problem:
Im Formatier Dialog bekomme ich 8kb Blocksize bei 16MB bzw 16Kb 
Blocksize bei 32MB voreingestellt. Ich kann da auch nicht meine 4kb 
auswählen. Mein Verdacht ist, dass dies daran liegt weil READ FORMAT 
CAPACITIES (UFI 0x23) momentan nicht unterstützt wird. Das war auch im 
Beispiel Code den ich als Basis benutzt habe so. Windows macht diesen 
Request ein paar mal mit unterschiedliche Parametern. Ich hab dazu 
natürlich in der UFI spec gelesen, verstehe aber nicht wie diese 
Deskriptoren auszusehen haben bzw welche Deskriptoren da zurückgegeben 
werden sollen.

Folgendes hab ich schon probiert:
1
uint8_t ReadFormatCapData [] =
2
{
3
    0x00,                          // reserved
4
    0x00,
5
    0x00,
6
    0x08,                          // 8 bytes follow
7
    (DISK_SEC_LAST >> 24) & 0xFF,  // number of blocks
8
    (DISK_SEC_LAST >> 16) & 0xFF,  // 4095 for 16MB
9
    (DISK_SEC_LAST >>  8) & 0xFF, 
10
    (DISK_SEC_LAST >>  0) & 0xFF,
11
    0x02,                          // code: Formatted Media
12
    (DISK_SEC_LEN  >> 16) & 0xFF,  // 4k blocksize
13
    (DISK_SEC_LEN  >>  8) & 0xFF, 
14
    (DISK_SEC_LEN  >>  0) & 0xFF
15
};
Kennt sich jemand damit aus?

Jan Axelsons Bücher, die ich ansonsten sehr schätze, sind diese mal 
leider auch nicht sonderlich hilfreich genau zu diesem Kapitel schreibt 
sie fast nichts.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.