Moin,
hab mal zwei Fragen zum USB Mass Storage Device.
Beim Endpoint-OUT (Bulk-Transfer) gibt es auch die Möglichkeit eines
Verfiys 0x2F - allerdings wird dieser beim Schreiben einer Datei auf den
MSC nicht aufgerufen; weiß jmd wann diese Verfiy Funktion aufgerufen
wird???
1 | #define SCSI_WRITE10 0x2A
|
2 | #define SCSI_VERIFY10 0x2F
|
3 | #define SCSI_READ12 0xA8
|
4 | #define SCSI_WRITE12 0xAA
|
5 |
|
6 | //endpoint-out function call
|
7 | void MSC_BulkOut (void)
|
8 | {
|
9 | //daten holen vom Endpoint
|
10 | BulkLen = USB_ReadEP(MSC_EP_OUT, BulkBuf);
|
11 |
|
12 | switch(BulkBuf)
|
13 | {
|
14 | case SCSI_WRITE10:
|
15 | case SCSI_WRITE12:
|
16 | MemoryWrite();
|
17 | break;
|
18 |
|
19 | case SCSI_VERIFY10:
|
20 | MemoryVerfiy(); //<- never called
|
21 | break;
|
22 |
|
23 | //usw
|
24 | }
|
25 | }
|
Beim MemoryWrite ist mir aufgefallen, dass zuerst das Stammverzeichnis
komplett überschrieben wird - allerdings ohne einem Size-Eintrag (ist
0x00) für die neu zu speichernede Datei. Dann wird die FAT geändert,
dann nochmal das Stammverzeichnis überschrieben (jetzt mit size Eintrag)
und danach werden die Daten geschrieben.
Gibt es hierfür irgendwo eine genaue Beschreibung - im MSC Dokument von
usb.org hab ich leider kein Ablaufdiagramm gefunden. Da werden nur die
SCSI etc. Sachen erklärt...
Gruß
Michael