Gast
#133844
Hallo zusammen, ich habe ein kleines Problem mit dem Tusb3410[1] von TI. Und zwar bin ich bei der Programmierung des Usb-Enumeration-Vorgangs auf Schwierigkeiten gestossen. Nachdem der Tusb3410 eine Adresse vom Host zugewiesen bekommt, empfängt er einen GetDescriptor-Request (dabei handelt es sich um einen Devicedescriptor-Request mit wLength=0x08). Trotz der vielen Versuche scheint der Tusb3410 keinen Devicedescriptor zum Host zu senden, und aus diesem Grund wird er nicht vollständig enumeriert. Am Oszi kann man beobachten, dass nach dem Empfang des Getdescriptor-Requests weitere Datenpakete übertragen werden, aber leider kann ich nicht feststellen, vom welchen Busteilnehmer diese gesendet werden, und um welche Datenpakete es sich dabei handelt. Nun möchte ich den Datenverkehr zwischen Host und Device genauer untersuchen, aber leider ist die Dekodierung an meinem Oszi sehr schwierig, und deswegen habe ich nach einer Software gesucht, die mir die Datenpakete protokolliert. Leider arbeiten alle Usb-Sniffers, die ich gefunden habe, erst nach der Enumeration (oder kennt vielleicht jemand einen Usb-Sniffer, der auch die Enumeration mitprotokolliert..!?) und helfen mir bei meinem Problem nicht weiter. Danach habe ich nach Hardware-Lösungen gesucht und auch welche gefunden. Mit einem Usb Analyzer, wie z.B. der SBAE-30 von Catylst[2] könnte ich mein Problem genauer untersuchen, aber leider ist das Gerät für mich zu teuer. Also habe ich mich gefragt, wie schwer es wohl wäre, einen Usb "Analyzer" zu entwickeln. Mit Analyzer meine ich einen uC, der am Usb-Bus angeschlossen wird, und Datenpakete über einen Zeitraum in einem Buffer speichert. Der Zeitraum für die Aufnahme könnte mit Hilfe eines externen IO-Ports des Tusb3410 getriggert werden, oder vielleicht direkt über das Sync-Feld des Usb-Frames. Da der Tusb3410 in Full-Speed-Modus (12MBits/s, tBit ~80ns) arbeitet, muss der uC schnell genug sein, um die Daten in einem Buffer (vielleicht reicht ein uC mit on-chip XRAM in der Größenordnung einiger KBytes aus !?!) zu speichern. Die aufgenommenen Daten könnte man danach am PC weiterverarbeiten und filtern, bis man die einzelne Usb-Datenpakete erhält. Leider kenne ich mich mit Mikrocontrollern nicht so gut aus, deswegen würde ich gerne die Meinung von Euch lesen, um zu erfahren, ob es überhaupt möglich ist, mit einfachen Mitteln (uC, RAM, Usb-Bustreiber, ...??) einen solchen Analyzer zu realisieren. Für Kommentare oder andere Lösungsansätze zu diesem Thema wäre ich sehr dankbar. Danke im Voraus Felipito PS: ich habe die Suchfunktion verwendet, und habe einen Thread vom 02.08.2002 gefunden. Aber vielleicht ist es heute ein wenig leichter einen solchen Analyzer zu entwickeln; wobei mir klar ist, dass bereits die Verarbeitung der Datenpakete im PC auch nicht leicht sein wird (NRIZ-Kodierung, Bit-Stuffing, ...) PS2: falls jemand den Tusb3410 programmiert hat, dann bitte melden [1] http://focus.ti.com/docs/toolsw/folders/print/tusb3410gpiopdk.html [2] http://www.getcatalyst.com/analyzers_pro_SBAE30.jsp