Forum: Mikrocontroller und Digitale Elektronik Problem mit USB MSD / UFI cmd


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas Z. (usbman)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.