À propos du projet
TinyUSB est une pile USB hôte/périphérique open-source multiplateforme pour systèmes embarqués. Elle est conçue pour la sécurité mémoire (aucune allocation dynamique) et la sécurité des threads (toutes les interruptions sont différées vers des fonctions de tâches non-ISR), en mettant l'accent sur la portabilité, une empreinte réduite et des performances en temps réel sur plus de 50 familles de microcontrôleurs.
Les caractéristiques clés incluent un fonctionnement thread-safe via une file d'attente centrale pour les événements ISR, des tampons statiques sans allocation dynamique, une portabilité sur de nombreuses familles de MCU, et la prise en charge des fonctionnalités CDC, HID, MSC, Audio et Hôte. Elle fonctionne avec bare metal, FreeRTOS, RT-Thread et Mynewt.
La structure du dépôt comprend des documents, des exemples avec des systèmes de construction make et cmake, des BSP matériels et des pilotes MCU, des bibliothèques tierces, les sources de la pile, des tests (unitaires, fuzzing, matériels) et des outils internes.
La pile périphérique prend en charge plusieurs configurations via des descripteurs USB dynamiques, des fonctions basse consommation comme suspend, resume et remote wakeup, et des classes telles que Audio 1.0/2.0, BTH HCI, CDC, DFU, HID, Printer, MSC avec plusieurs LUN, MIDI, MTP/PTP, RNDIS/ECM/NCM networking, USBTMC, UVC (travail en cours), des classes spécifiques au vendeur et WebUSB. Des pilotes de classes personnalisés peuvent être ajoutés via usbd_app_driver_get_cb().
La pile hôte prend en charge CDC-ACM, série vendeur sur USB (FTDI, CP210x, CH34x, PL2303), HID, MSC, MIDI et des hubs à plusieurs niveaux. Des pilotes hôtes personnalisés peuvent être ajoutés via usbh_app_driver_get_cb().
Une pile de distribution d'énergie (PD3.0 avec USB Type-C) est à un stade très précoce, uniquement pour les tests et uniquement sur STM32 G4.
Une couche d'abstraction du système d'exploitation pousse tous les événements ISR dans une file d'attente centrale traitée dans un contexte non-ISR, en utilisant des sémaphores/mutex pour les ressources partagées. Les systèmes d'exploitation pris en charge incluent No OS, FreeRTOS, RT-Thread et Mynewt.
Les CPU pris en charge couvrent de nombreux fabricants, notamment Allwinner, Analog, Artery AT32, Bridgetek, Broadcom, Dialog, Espressif, Geehy, GigaDevice, HPMicro, Infineon, MicroChip, MindMotion, NordicSemi, Nuvoton, NXP, Puya, Raspberry Pi, Renesas, Silabs, Sony, ST STM32, TI, ValentyUSB et WCH, avec une prise en charge variable des modes périphérique, hôte et haute vitesse.
Les outils de développement fournis gratuitement incluent IAR Build Tools, JetBrains CLion et l'analyseur statique PVS-Studio.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.