kennt sich ihr jemand mit der Linux USB gatget aus?
Ich mache folgendes:
auf meinem Device(embedded Linux) lade ich das Modul g_mass_storage um
das Device als Massenspeicher(USB Flash Stick) zu nutzen und so Daten an
den PC weiter zu geben. Über eine Taster(gpio) starte ich ein Programm
das mir die Daten erzeugt.
der Ablauf:
1 | modprobe g_mass_storage file=/home/root/data/backing_file
|
->Device ist ein Flash Speicher
->Taster wird gedrückt und erkannt.
1 | modprobe g_mass_storage -r
|
2 | losetup -o 1048576 /dev/loop0 /home/root/data/backing_file
|
3 | mount -t vfat /dev/loop0 /mnt/loop/
|
->backing_file wurde unter /mnt/loop/ gemountet
->Programm wird gestartet, welches Daten in eine Datei unter /mnt/loop/
schreibt.
->Programm endet
1 | umount /dev/loop0
|
2 | losetup -d /dev/loop0
|
3 | modprobe g_mass_storage file=/home/root/data/backing_file
|
->wieder am Anfang
das Problem:
wenn ich "modprobe g_mass_storage -r" ausführe wird der gadget Treiber
zwar entladen aber er meldet sich nicht am PC ab. der PC denkt immer
noch der Massenspeicher ist noch da. wenn ich jetzt während das Programm
auf dem Device läuft am PC den erkannten Speicher Stick anklicke, hängt
das System eine weile und dann kommt eine Fehlermeldung und die
Aufforderung, dass ich den Stick auf Fehler untersuchen soll.
ich vermute ich habe in meiner Befehlskette etwas vergessen oder ich
mache da etwas falsch. Wie kann ich das Modul g_mass_storage
ordnungsgemäß ausschalten und die Datei /home/root/data/backing_file zum
beschreiben freigeben?