Hallo Besucher, der Thread wurde 1,2k mal aufgerufen und enthält 7 Antworten

letzter Beitrag von cbmhardware am

Linux und Selfmade-USB-Device ?

  • Ich habe mal ein paar Fragen mit etwas Überschneidung. Ich möchte mir in Zukunft mit einem AVR ein kleines USB-Gerät bauen. Das sollte dann erstmal testweise irgendetwas machen.


    Dieser Artikel war da schon eine große Hilfe : http://www.linuxjournal.com/article/7353?page=0,0 . Habe das nur mal oberflächlich gelesen, scheint aber nicht allzu kompliziert sein.


    Wie sieht es eigentlich mit einem Wechselmedium aus ? Ich möchte z.B. eine kleine Datei (in meinem Fall bis 32kB) übertragen. Ich habe schon eine Anleitung zu Linux gefunden ( http://www.linux-usb.org/ ), aber vielleicht kann es mir jemand in ein paar Sätzen vorab erklären ...? - Lesen werde ich das auch noch. ;)


    Ich möchte einen Kernel-Driver für ein Wechselmedium. Mit z.B. "cp test.prg /media/cbmdrive" und gemountetem USB-Drive (AVR) sollte das dann übertragen werden.

  • Ich möchte einen Kernel-Driver für ein Wechselmedium.


    Baue dein USB-Gerät so, dass es sich mit der Geräteklasse "Mass Storage" (siehe Dokumente auf http://www.usb.org/developers/devclass_docs#approved) meldet, dann brauchst du keinen eigenen Kerneltreiber schreiben weil es sich wie ein USB-Stick verhält.


  • Baue dein USB-Gerät so, dass es sich mit der Geräteklasse "Mass Storage" (siehe Dokumente auf http://www.usb.org/developers/devclass_docs#approved) meldet, dann brauchst du keinen eigenen Kerneltreiber schreiben weil es sich wie ein USB-Stick verhält.



    Genau, ein vorhandener Kernel-Driver könnte eine Option sein. Ich muss mich da mal grundlegend etwas einlesen. Wenn der AVR sich passend im System meldet, bin ich schon einen großen Schritt weiter. Viel Stoff für wenig Zeit.




    Balacuda: Willkommen auf meiner Ignore-List.

  • Ich habe mal ein paar Runden gegoogelt und diverse Beiträge gelesen. Von "Mass Storage" wird im Allgemeinen abgeraten, da der Aufwand in keinem Verhältnis zum Nutzen steht.


    Ich habe nun aber libusb wieder entdeckt. Das hatte ich vor langer Zeit schon mal installiert und mittlerweile total vergessen. :/ Damit sollte das Ansprechen eines eigenen Gerätes doch viel einfacher sein ? - Dann muss man gar nicht so intensiv in die Untiefen der USB-Spezifikationen.
    Mal ein Beispiel-Szenario: Ich habe ein USB-Gerät am Bus, das nur auf einen Init und Übernahme von weiteren Rohdaten wartet. Es schnüffelt also am USB-Bus um auf seinen Einsatz zu warten. Mit (usb_open) usb_bulk_write (http://libusb.sourceforge.net/doc/function.usbbulkwrite.html) steht mir doch genau diese Funktion zur Verfügung.


    Mit usblib müsste doch der Datentransfer PC_USB <> AVR-Commodore-Gerät im vertretbaren Aufwand realisierbar sein ?



    Anbei noch ein gefundener Source zum Auflisten der vorhandenen USB-Devices mit weiteren Informationen:


  • XU1541 ist mir auch aufgefallen. An so verzwickte Sachen möchte ich mich noch nicht wagen. Dieses Bit-Banging über USB zum Transfer und für das Protokoll der 1541 ist eine reife Leistung.


    Ich habe mir das v-usb-Paket mal etwas genauer angeschaut. Da ist eine Custom-Class zum Steuern einer LED über USB. Das ist ein "Hello World!"-Example nach meinem Geschmack. :o)
    Ich werde das mal an einen Mega328p @20Mhz anpassen.


    Bevor man rennen möchte, ist es sicher besser wenn man erstmal stehen kann.

  • Der erste Schritt ist schon mal getan. Das USB-Device ist nach kleinen Schwierigkeiten da. \o/ Mit dem Mega328p wollte es gar nicht. Hat nur den USB-Bus verwirrt. Ein Mega88 mit 16Mhz Quarz brachte sofortigen Erfolg.



    Nach obigen Listing:
    Auszug:


    Edit: Commandline-Tool ist auch spitze. Mit v-usb haben die wirklich mal eine gute USB-Lib gebaut.



    Wenn das mal kein schönes Spielzeug ist ... ? :)