Die Ausgabe des TinyUSB 0.19 Projekts ist verfĂŒgbar, das eine plattformĂŒbergreifende USB-Stack fĂŒr eingebettete Systeme entwickelt. Es werden USB-Stack-Komponenten fĂŒr USB-Hosts (USB Host) und fĂŒr angeschlossene GerĂ€te (USB Device) bereitgestellt. Der Projektcode ist in C geschrieben und wird unter der MIT-Lizenz vertrieben.
Um die Sicherheit von TinyUSB zu erhöhen, werden keine dynamischen Speicherzuweisungen verwendet. Die Nutzung in Multithreading-Anwendungen wird unterstĂŒtzt. FĂŒr sicheres Multithreading werden alle Ereignisse, die mit Interrupts zusammenhĂ€ngen, nicht sofort bei Eingang des ISR (Interrupt Service Request) verarbeitet, sondern in eine Warteschlange eingeordnet, die im Kontext der AnwendungsdurchfĂŒhrung und nicht des Interrupt-Handlers bearbeitet wird. Beim Zugriff auf gemeinsam genutzte Ressourcen wie FIFO CDC (Communication Device Class) werden Semaphore und Mutexe verwendet.
Der Stack ist von der Betriebssystemumgebung abstrahiert und kann als eigenstĂ€ndige Komponente verwendet werden, die nicht an die Funktionen von Betriebssystemen gebunden ist. Module zur Integration von TinyUSB mit den Betriebssystemen FreeRTOS, RT-Thread und Apache Mynewt stehen zur VerfĂŒgung. Funktionen zur Reduzierung des Energieverbrauchs, wie der Ăbergang in den Schlafmodus und die Aktivierung bei AktivitĂ€ten, werden unterstĂŒtzt. Es gibt eine erste Implementierung des PD 3.0 (Power Delivery) Protokolls zur Steuerung der StromĂŒbertragung ĂŒber USB Type-C.

TinyUSB erlaubt die UnterstĂŒtzung eigener Klassen von USB-GerĂ€ten und -Hosts, ohne den USB-Stack modifizieren zu mĂŒssen. Zu den bereits in TinyUSB unterstĂŒtzten GerĂ€tekategorien gehören:
- UAC2 â Audio Class 2.0;
- BTH HCI â Bluetooth Host Controller Interface;
- CDC â Communication Device Class;
- DFU â Device Firmware Update;
- HID â Human Interface Device (Tastatur, Maus, Gamepad);
- MSC â Mass Storage Class (einschlieĂlich SpeichergerĂ€te mit mehreren logischen GerĂ€ten);
- MIDI â Musical Instrument Digital Interface;
- MTP/PTP â Media Transfer Protocol;
- RNDIS, ECM (Ethernet Control Model) und NCM (Network Control Model) â Netzwerkinteraktion ĂŒber USB;
- USBTMC â Test and Measurement Class;
- UVC â Video class 1.5;
- WebUSB.
UnterstĂŒtzte Klassen von USB-Hosts:
- HID â Human Interface Device;
- MSC â Mass Storage Class;
- CDC-ACM â Communication Device Class;
- FTDI, CP210x, CH34x, PL2303 â Durchschleifen des seriellen Ports ĂŒber USB;
- USB Hub.
In der neuen Version wurde die API fĂŒr GerĂ€te und Hosts erweitert. Im USB-Host wurde die UnterstĂŒtzung fĂŒr GerĂ€te mit mehreren Konfigurationen hinzugefĂŒgt. UnterstĂŒtzung fĂŒr Mikrocontroller und Platinen wurde hinzugefĂŒgt:
- ESP32-H4, ESP32-C5, ESP32-C61;
- STM32U0, STM32WBA, STM32N6;
- AT32F405, AT32F403A, AT32F415, AT32F423;
- CH32V305 und CH32V20x (USB-Host);
- MCXA156 SDK 2.16 und FRDM-MCXA156.
Quelle: opennet.ru
