Forum: Mikrocontroller und Digitale Elektronik USB Mass Storage Class auf STM32


von runout (Gast)


Lesenswert?

Hallo Gemeinde,

ich möchte, dass beim Anstecken meines Nucleo-Boards
über USB an den PC, ein Laufwerk erscheint.
(z.B. im Windows Explorer)
Diese soll les- und schreibbar sein.

Bevor ich jetzt in die falsche Richtung losmarschiere,
hier meine Fragen:

Ist das Nucleo-Board für diesen Modus ein Host oder ein Device?
Kann CubeMx dafür hilfreich sein, oder gibt es bessere 
Implementierungen?

Target wäre ein STM32L496.

Viele Grüße
Runout

von Cyblord -. (cyblord)


Lesenswert?

runout schrieb:

> Ist das Nucleo-Board für diesen Modus ein Host oder ein Device?

DAS kannst du nicht beantworten? Ist ein USB Stick Host oder Device?

von runout (Gast)


Lesenswert?

Hi,

das wäre zu einfach... ;-)
Der USB-Stick ist quasi der PC.

Wenn ich einen USB-Stick an die MCU anschließe,
dann ist der Stick das Device und die MCU der Host.

Der "Stick" ist über USB-Mass-Storage-Class
angeschlossen.

Es gibt von STM entsprechende Host- und/oder Device-Lib.
Daher das Verständnisproblem.

Grüße Runout

von Cyblord -. (cyblord)


Lesenswert?

runout schrieb:
> Hi,
>
> das wäre zu einfach... ;-)

Nein. Es ist einfach.

> Der USB-Stick ist quasi der PC.

Wirr? Es geht darum ein Nucleo Board als USB-Stick-Ersatz zu betreiben.

> Wenn ich einen USB-Stick an die MCU anschließe,
> dann ist der Stick das Device und die MCU der Host.
>
> Der "Stick" ist über USB-Mass-Storage-Class
> angeschlossen.
>
> Es gibt von STM entsprechende Host- und/oder Device-Lib.
> Daher das Verständnisproblem.

Bei so viel Wirrnes und Unverständnis wird das nichts.

von Johannes S. (Gast)


Lesenswert?

Du brauchst ein MSD Device.

von Vn N. (wefwef_s)


Lesenswert?

runout schrieb:
> ich möchte, dass beim Anstecken meines Nucleo-Boards
> über USB an den PC, ein Laufwerk erscheint.
> (z.B. im Windows Explorer)
> Diese soll les- und schreibbar sein.

widerspricht

runout schrieb:
> Der USB-Stick ist quasi der PC.
>
> Wenn ich einen USB-Stick an die MCU anschließe,
> dann ist der Stick das Device und die MCU der Host.


Was willst du nun genau machen?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

runout schrieb:
> Ist das Nucleo-Board für diesen Modus ein Host oder ein Device?

Device.

runout schrieb:
> ich möchte, dass beim Anstecken meines Nucleo-Boards
> über USB an den PC, ein Laufwerk erscheint.

Sicher dass das die beste Idee ist? Soll das Nucleo hier wirklich nur 
als Datenablage fungieren (mit SD-Karte oder so) oder soll das Nucleo 
die Daten doch auch selbst verarbeiten, als Steuerung für irgendwas? 
Dann wäre Mass Storage (USB-MSC) ggf. ziemlich umständlich. Wenn es nur 
darum geht, dass du ohne Treiber-Installation Daten austauschen 
möchtest, gibt es bessere Wege - z.B. als WinUSB Device. Was möchtest du 
also genau erreichen?

runout schrieb:
> Kann CubeMx dafür hilfreich sein, oder gibt es bessere
> Implementierungen?

Das enthält Libraries dafür, ja. Wenn du es selbst implementieren 
möchtest, und/oder doch keine der dort gebotenen Standard-Klassen 
verwenden willst (was wie gesagt möglicherweise sowieso nicht die beste 
Idee sein könnte):
USB-Tutorial mit STM32
Wobei das auf den STM32L496 nicht so zutrifft, weil der die komplexere 
"USB-OTG" Peripherie hat.

von Johannes S. (Gast)


Lesenswert?

Bzw steckt in MSD das D für device ja schon drin.

von Cyblord -. (cyblord)


Lesenswert?

Johannes S. schrieb:
> Bzw steckt in MSD das D für device ja schon drin.

Was aber niemanden daran hindert trotzdem maximal verwirrt zu sein. 
Klare und logische Schlussfolgerungen sind des TE Sache nicht.

von runout (Gast)


Lesenswert?

Hallo,

zur Funktion:
Es soll nur ein ca. 1MB großes Firwarefile in diesem Laufwerk abgelegt 
werden.
Der von Niklas vorgeschlagene, umgekehrte Weg wäre besser,
ist aber nicht gewünscht.

Habe jetzt zwei brauchbare Quellen gefunden.
-"STM32_USB-Host-Device_Lib_V2.2.0" (STM32F4)
-HAL generiertes Projekt (STM32L4)

und DIE Referenz: usbmassbulk_10_Ref1_0.pdf

Vielen Dank an alle, vor allem Cyblord,
dem pädagogischen Feinfinger in diesem Forum...

Grüße
Runout

von Niklas Gürtler (Gast)


Lesenswert?

runout schrieb:
> Der von Niklas vorgeschlagene, umgekehrte Weg wäre besser,
> ist aber nicht gewünscht.

Was ist denn daran "umgekehrt"?

runout schrieb:
> Es soll nur ein ca. 1MB großes Firwarefile in diesem Laufwerk abgelegt
> werden.

Und was passiert dann damit? Soll der Controller sich damit selbst 
überschreiben? Oder das auf einen anderen Controller flashen?

von Johannes S. (Gast)


Lesenswert?

eine weitere Quelle: mbed, das Nucleo L496 wird auch unterstützt.
https://os.mbed.com/docs/mbed-os/v5.13/apis/usbmsd.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.