Die Veröffentlichung des Projekts TinyUSB 0.19 ist verfĂŒgbar, das eine plattformĂŒbergreifende USB-Stack fĂŒr eingebettete Systeme entwickelt. Es werden Komponenten des USB-Stacks fĂŒr USB-Hosts (USB Host) und fĂŒr angeschlossene GerĂ€te (USB Device) bereitgestellt. Der Code des Projekts ist in C geschrieben und steht unter der MIT-Lizenz.
Zur Erhöhung der Sicherheit verwendet TinyUSB keine dynamische Speicherzuweisung. Es wird die Verwendung in Multi-Thread-Anwendungen unterstĂŒtzt. FĂŒr eine sichere Bearbeitung im Multi-Thread-Betrieb werden alle Ereignisse, die mit Interrupts (ISR - Interrupt Service Request) verbunden sind, nicht sofort bei Eintreffen verarbeitet, sondern in eine Warteschlange gestellt, die im Kontext der AusfĂŒhrung der Anwendung und nicht im Interrupt-Handler abgearbeitet wird. Beim Zugriff auf gemeinsam genutzte Ressourcen, wie FIFO CDC (Communication Device Class), werden Semaphore und Mutexe verwendet.
Der Stack ist von dem Betriebssystem abstrahiert und kann als eigenstĂ€ndige Komponente verwendet werden, die nicht an die FunktionalitĂ€t von Betriebssystemen gebunden ist. Es stehen Module zur Integration von TinyUSB mit den Betriebssystemen FreeRTOS, RT-Thread und Apache Mynewt zur VerfĂŒgung. Funktionen zur Reduzierung des Energieverbrauchs, wie der Wechsel in den Energiesparmodus und das Aufwachen bei AktivitĂ€t, sind verfĂŒgbar. Es gibt eine erste Implementierung des Protokolls PD 3.0 (Power Delivery) zur Steuerung der EnergieĂŒbertragung ĂŒber USB Type-C.

TinyUSB ermöglicht das HinzufĂŒgen von UnterstĂŒtzung fĂŒr eigene Klassen von USB-GerĂ€ten und Hosts, ohne den USB-Stack zu modifizieren. Zu den bereits von TinyUSB unterstĂŒtzten GerĂ€tetypen 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 Speichermedien 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 â Durchreiche von seriellen Ports ĂŒber USB;
- USB-Hub.
In der neuen Ausgabe wurde die API fĂŒr GerĂ€te und Hosts erweitert. Die Implementierung des USB-Hosts unterstĂŒtzt jetzt GerĂ€te mit mehreren Konfigurationen. UnterstĂŒtzung fĂŒr Mikrocontroller und Boards 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
