Forum: Mikrocontroller und Digitale Elektronik #error "You need to select USB Type: 'MTP Disk (Experimental)'"


von Markus C. (cano)


Lesenswert?

Hallo

Ich experimentiere gerade mit:
Software: Arduino 1.8.5 und Teensy 3.5

Ich habe erfolgreich die Demos USB RAW HID und USB MTP getestet.
Nun möchte ich gerne meine Anwendung mit USB RAW HID steuern und später 
über USB MTP Files übertragen. Also nicht gleichzeitig. Einmal nutze ich 
HID das andere Mal MTP.

Ich habe den Code von beiden Demos in eine Sourcecode Datei vereint.
Problem:
Weil man sich vor dem Compilieren im Pull Down-Menü: Werkzeuge-USB Typ, 
…
für einen Typ entscheiden muss, kommt es zu dem Fehler in der 
Betreff-Zeile.

Was kann ich tun, dass ich beide Typen in einem Programm übersetzt 
bekomme?
Das sind jetzt wohl die Grenzen in der Arduino IDE ?

Grüße Markus

von Jim M. (turboj)


Lesenswert?

markus c. schrieb:
> Also nicht gleichzeitig. Einmal nutze ich
> HID das andere Mal MTP.

Das ist aber deutlich schwieriger zu Lösen als gleichzeitig.

Ohne große und komplexe Änderungen würde das auf 2 verschiedene 
Programme hinauslaufen, die an unterschiedliche Stellen im Flash gelinkt 
werden.
Passt z.B. für den Anwendungsfall Booloader vs. main Firmware.

markus c. schrieb:
> Das sind jetzt wohl die Grenzen in der Arduino IDE ?

Nö. Das sind die Grenzen des Programmierers, der den fremden Code nicht 
versteht.

Die Programme zu kombinieren erfordert Änderungen an den Deskriptoren 
(z.B. IAD), und i.d.R. auch die Anpassung einiger Endpoints (weil man 
andere Nummern vergeben muss).

Nicht übermäßig schwer bei Erfahrung mit USB - aber auch keine 
Anfängerübung.

von Markus C. (cano)


Lesenswert?

Jim M. schrieb:
> Die Programme zu kombinieren erfordert Änderungen an den Deskriptoren
> (z.B. IAD), und i.d.R. auch die Anpassung einiger Endpoints (weil man
> andere Nummern vergeben muss).
>
> Nicht übermäßig schwer bei Erfahrung mit USB - aber auch keine
> Anfängerübung.

hmmm?
Ich möchte schon, dass beide Protokolle gleichzeitig laufen. Ich werde 
sie nur nicht gleichzeitig nutzen. Das wollte ich damit ausdrücken.

Änderungen an den Deskriptoren?
Wie steigt man da am schnellsten ein, wenn man noch gar keine Ahnung 
davon hat?

Grüße Markus

von Markus F. (mfro)


Lesenswert?

markus c. schrieb:
> Wie steigt man da am schnellsten ein, wenn man noch gar keine Ahnung
> davon hat?

Du wirst es nicht hören wollen, aber die Antwort ist: ganz unten.

Ohne die Grundlagen verstanden zu haben, wird's mit USB schwierig, wenn 
man die ausgetretenen Pfade verlassen will.

von Jim M. (turboj)


Lesenswert?

markus c. schrieb:
> Wie steigt man da am schnellsten ein, wenn man noch gar keine Ahnung
> davon hat?

Man kauft sich ein Buch und liesst es. Ja ist oldschool, ich weiss.

Es ist übrigens alles[1] haarklein auf USB.org dokumentiert - aber ehe 
man da wirklich durchsieht hat man das o.g. Buch gelesen. Jemand hatte 
mal den guten Tipp die 1.1 Spec zuerst durchzugehen, da in 2.0 viel 
Zeuchs für High Speed dazu kam das man im µC oft nicht braucht.

Probleme macht u.U. dass die Herstelle ihr USB Peripherial nach 
Gutdünken bauen - die sind also subtil verschieden. Dadurch läuft 
Beispielcode immer nur auf einer konkrenten µC Familie - das sollte man 
eventuell bei der Auswahl der Literatur beachten.





[1] Allerdings werden oft Verweise benutzt, z.B. verweist die Mass 
Storage Doku auf die nicht-öffentliche SCSI Spec.

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.