mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CBW CBWTag USB SCSI Massdata Storage Prorokoll


Autor: whitenoise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage zum CBWTag Eintrag.

wie setzt er sich genau zusammen, ich habe hier zwar schon ein recht 
anschauliches Beispiel:

http://www.nxp.com/acrobat_download/usermanuals/d1...

In diesem Fall stellt es ein SCSI Read command dar: 28 E8 31 FE.
Das Kürzel für SCSI Read ist hex 28, doch was bedeuten die anderen 3 
Bytes!?

Zu SCSI generell vielleicht noch eine Kleinigkeit, ich habe noch kein 
Kommando zum löschen gefunden (erase device) - gibt es das überhaupt!?

eine recht anschauliche Liste mit den gängigsten Befehlen habe ich bei 
microchip gefunden:

http://ww1.microchip.com/downloads/en/AppNotes/01169a.pdf

gruß,
w.

Autor: whitenoise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

die frage zu tag hat sich mittlerweile beantwortet, es wird vom os 
ausgefüllt und ist wirklich nur die kennung für den befehl.
der eigentliche scsi befehl im usb datanstrom ist dann doch nur ein byte 
groß.

ich habe hier noch ein wirklich gutes dokument dazu gefunden, hier ist 
es sehr schön farblich hinterlegt.

http://mcu.emea.fujitsu.com/document/appnotes/Publ...

zum thema scsi erase command habe ich noch dieses listing gefunden:

http://en.wikipedia.org/wiki/SCSI_command

Mittlerseile kann ich mit meinem modifizierten cypress treiber den es 
als kit zum cy7c68001 dazu gab (die api ist dort sehr schön), über eine 
selbstgebastelte emulierung des command block wrappers alle art 
informationen auslesen, momentan habe ich gerade den mbr des sticks 
ausgelesen  - schonmal klasse, das klappt.

letztendlich hilft auch ein usb sniffer ungemein, hier habe ich usbsnoop 
verwendet, leider sind die ausgaben nur in einer textdatei und die 
interpretation kostet ein wenig nerven, aber es ist besser als nichts...

dennoch stellt windows eine ganze menge anfragen an so ein usb device, 
teilweise doppelt und teilweise zyklisch...

momentan hänge ich an einer stelle mit dem usb sniffer tool fest, dort 
gibt es gewisse transfer flags, deren bedeutung mir noch nicht ganz klar 
ist. hier mal ein ausschnitt vom auslesen des mbr:

-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 84ed9fdc [endpoint 0x00000002]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT, 
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000001f
  TransferBuffer       = 8475db48
  TransferBufferMDL    = 00000000
    00000000: 55 53 42 43 08 40 02 85 00 02 00 00 80 00 0a 28
    00000010: 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
  UrbLink              = 00000000
[405 ms] UsbSnoop - MyInternalIOCTLCompletion(f78fddb0) : fido=85073480, 
Irp=85024008, Context=850e8808, IRQL=2
[405 ms]  <<<  URB 27 coming back  <<<
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 84ed9fdc [endpoint 0x00000002]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT, 
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000001f
  TransferBuffer       = 8475db48
  TransferBufferMDL    = 84e7e8d0
  UrbLink              = 00000000
[405 ms] UsbSnoop - DispatchAny(f78fc610) : 
IRP_MJ_INTERNAL_DEVICE_CONTROL
[405 ms] UsbSnoop - MyDispatchInternalIOCTL(f78fde80) : fdo=84e7d188, 
Irp=85024008, IRQL=2
[405 ms]  >>>  URB 28 going down  >>>
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 84ed9fbc [endpoint 0x00000081]
  TransferFlags        = 00000002 (USBD_TRANSFER_DIRECTION_OUT, 
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000200
  TransferBuffer       = 00000000
  TransferBufferMDL    = 84f12538
    00000000: 00 b0 9d 84 a0 c4 55 80 00 00 00 00 03 00 00 00
    00000010: 00 80 41 84 00 00 00 00 28 00 00 00 f0 0b 00 00
    00000020: e8 0f 00 00 00 00 00 00 e8 02 00 00 7e 00 73 02
    00000030: 00 00 45 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000040: 2d 55 01 00 00 00 b3 02 90 00 80 00 00 00 00 00
    00000050: 72 02 00 00 00 00 73 02 82 97 9a 93 97 e1 c8 01
    00000060: 82 97 9a 93 97 e1 c8 01 82 97 9a 93 97 e1 c8 01
    00000070: 82 97 9a 93 97 e1 c8 01 00 2a 00 00 00 00 00 00
    00000080: dc 29 00 00 00 00 00 00 20 20 00 00 00 00 00 00
    00000090: 1f 01 53 00 4d 00 53 00 5f 00 53 00 4e 00 49 00
    000000a0: 46 00 46 00 5f 00 53 00 54 00 55 00 46 00 46 00
    000000b0: 2e 00 45 00 58 00 45 00 2d 00 31 00 43 00 38 00
    000000c0: 46 00 35 00 36 00 42 00 32 00 2e 00 70 00 66 00
    000000d0: 2d 55 01 00 00 00 b3 02 68 00 58 00 00 00 00 00
    000000e0: 72 02 00 00 00 00 73 02 82 97 9a 93 97 e1 c8 01
    000000f0: 82 97 9a 93 97 e1 c8 01 82 97 9a 93 97 e1 c8 01
    00000100: 82 97 9a 93 97 e1 c8 01 00 2a 00 00 00 00 00 00
    00000110: dc 29 00 00 00 00 00 00 20 20 00 00 00 00 00 00
    00000120: 0b 02 53 00 4d 00 53 00 5f 00 53 00 4e 00 7e 00
    00000130: 31 00 2e 00 50 00 46 00 dc bc 00 00 00 00 5c 00
    00000140: 80 00 6c 00 00 00 00 00 72 02 00 00 00 00 73 02
    00000150: 49 d4 63 8e 8c e5 c8 01 49 d4 63 8e 8c e5 c8 01
    00000160: 49 d4 63 8e 8c e5 c8 01 49 d4 63 8e 8c e5 c8 01
    00000170: 00 e6 00 00 00 00 00 00 0a e4 00 00 00 00 00 00
    00000180: 20 20 00 00 00 00 00 00 15 01 53 00 4e 00 49 00
    00000190: 46 00 46 00 2e 00 45 00 58 00 45 00 2d 00 33 00
    000001a0: 31 00 46 00 45 00 42 00 37 00 44 00 30 00 2e 00
    000001b0: 70 00 66 00 70 00 66 00 f9 bc 00 00 00 00 c5 00
    000001c0: 90 00 7a 00 00 00 00 00 72 02 00 00 00 00 73 02
    000001d0: 25 1a 2c 8f 8c e5 c8 01 25 1a 2c 8f 8c e5 c8 01
    000001e0: 25 1a 2c 8f 8c e5 c8 01 25 1a 2c 8f 8c e5 c8 01
    000001f0: 00 9e 00 00 00 00 00 00 bc 9d 00 00 00 00 e8 02
  UrbLink              = 00000000
[405 ms] UsbSnoop - MyInternalIOCTLCompletion(f78fddb0) : fido=85073480, 
Irp=85024008, Context=84fa9300, IRQL=2
[405 ms]  <<<  URB 28 coming back  <<<
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 84ed9fbc [endpoint 0x00000081]
  TransferFlags        = 00000003 (USBD_TRANSFER_DIRECTION_IN, 
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000200
  TransferBuffer       = 00000000
  TransferBufferMDL    = 84f12538
    00000000: fc 31 c0 8e d0 31 e4 8e d8 8e c0 be 00 7c bf 00
    00000010: 06 b9 00 01 f3 a5 be ee 07 b0 08 ea 20 06 00 00
    00000020: 80 3e b3 07 ff 75 04 88 16 b3 07 80 3c 00 74 04
    00000030: 08 06 af 07 83 ee 10 d0 e8 73 f0 90 90 90 90 90
    00000040: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
    00000050: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
    00000060: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
    00000070: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 be be
    00000080: 07 b0 00 b9 04 00 80 3c 00 75 6e fe c0 83 c6 10
    00000090: e2 f4 31 db b4 0e be 9d 07 8a 0e af 07 ac d0 e9
    000000a0: 73 02 cd 10 08 c9 75 f5 b0 3a cd 10 31 c0 cd 16
    000000b0: 3c 00 74 f8 be 8b 07 b9 02 00 e8 ba 00 3c 0d 74
    000000c0: b4 3c 61 72 06 3c 7a 77 02 2c 20 88 c3 be 9d 07
    000000d0: 8a 0e af 07 ac d0 e9 73 04 38 c3 74 06 08 c9 75
    000000e0: f3 eb af b8 0d 0e 31 db cd 10 8d 84 62 00 3c 07
    000000f0: 75 07 b0 1f a2 af 07 eb 99 31 d2 b9 01 00 3c 04
    00000100: 74 11 73 f3 30 e4 b1 04 d2 e0 be be 07 01 c6 8a
    00000110: 16 b3 07 bf 05 00 56 f6 c2 80 74 31 b4 41 bb aa
    00000120: 55 52 cd 13 5a 5e 56 72 1e 81 fb 55 aa 75 18 f6
    00000130: c1 01 74 13 8b 44 08 8b 5c 0a be 8d 07 89 44 08
    00000140: 89 5c 0a b4 42 eb 0c 8a 74 01 8b 4c 02 b8 01 02
    00000150: bb 00 7c 50 c6 06 8f 07 01 cd 13 58 5e 73 05 4f
    00000160: 75 b4 eb 93 81 3e fe 7d 55 aa 75 f6 ea 00 7c 00
    00000170: 00 be 83 07 b9 0a 00 50 b4 0e 31 db ac cd 10 e2
    00000180: fb 58 c3 54 65 73 74 44 69 73 6b 0d 0a 10 00 01
    00000190: 00 00 7c 00 00 00 00 00 00 00 00 00 00 31 32 33
    000001a0: 34 46 00 00 41 4e 44 54 6d 62 72 00 02 02 02 1f
    000001b0: c7 00 00 80 00 00 00 00 00 00 00 00 a5 01 00 01
    000001c0: 01 00 0b fe 3f 3d 3f 00 00 00 7f 32 0f 00 00 00
    000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa
  UrbLink              = 00000000
[405 ms] UsbSnoop - DispatchAny(f78fc610) : 
IRP_MJ_INTERNAL_DEVICE_CONTROL
[405 ms] UsbSnoop - MyDispatchInternalIOCTL(f78fde80) : fdo=84e7d188, 
Irp=85024008, IRQL=2
[405 ms]  >>>  URB 29 going down  >>>
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 84ed9fbc [endpoint 0x00000081]
  TransferFlags        = 00000002 (USBD_TRANSFER_DIRECTION_OUT, 
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000200
  TransferBuffer       = 8475db48
  TransferBufferMDL    = 00000000
    00000000: 55 53 42 43 08 40 02 85 00 02 00 00 80 00 0a 28
    00000010: 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
    00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  UrbLink              = 00000000
[406 ms] UsbSnoop - MyInternalIOCTLCompletion(f78fddb0) : fido=85073480, 
Irp=85024008, Context=84ec70f0, IRQL=2
[406 ms]  <<<  URB 29 coming back  <<<
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 84ed9fbc [endpoint 0x00000081]
  TransferFlags        = 00000003 (USBD_TRANSFER_DIRECTION_IN, 
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000000d
  TransferBuffer       = 8475db48
  TransferBufferMDL    = 84e7e8d0
    00000000: 55 53 42 53 08 40 02 85 00 00 00 00 00
  UrbLink              = 00000000


der zweite große datenblock entspricht dem mbr des sticks, der erste 
datenblock ist nicht auf dem stick, dennoch kommen sie auf dem endpoint 
81 welcher eindeutig ein IN endpoint ist, in den flags die usbsnoop 
darstellt ist hierfür eine 2 eingetragen (OUT), beim mbr eine 3 (IN) - 
was mag dies bedeuten!?

ich aus meiner anwendungssicht sehe den ersten block garnicht.

vielleicht kennt jemand von euch das tool usbsnoop!?
gruß,
whitenoise

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.
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.

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