Opublikowano otwarty stos USB TinyUSB 0.19

Dostępna jest wersja projektu TinyUSB 0.19, rozwijającego wieloplatformowy stos USB dla systemów wbudowanych. Dostarczane są komponenty stosu USB dla hostów USB (USB Host) oraz dla urządzeń podłączanych (USB Device). Kod projektu jest napisany w języku C i rozpowszechniany na licencji MIT.

Aby zwiększyć bezpieczeństwo, w TinyUSB nie stosuje się operacji dynamicznego przydzielania pamięci. Obsługiwane jest użycie w aplikacjach wielowątkowych. Dla bezpiecznej pracy wielowątkowej wszystkie zdarzenia związane z przerwaniami nie są natychmiastowo przetwarzane przy odbiorze ISR (Interrupt Service Request), lecz umieszczane w kolejce, która jest przetwarzana i rozpatrywana w kontekście wykonania aplikacji, a nie obsługiwacza przerwań. Przy dostępie do współdzielonych zasobów, takich jak FIFO CDC (Communication Device Class), stosowane są semafory i mutexy.

Stos jest abstrahowany od systemu operacyjnego i może być używany jako samowystarczający komponent, niezwiązany z funkcjonalnością systemów operacyjnych. Dostępne są moduły do integracji TinyUSB z systemami FreeRTOS, RT-Thread i Apache Mynewt. Obsługiwane są funkcje oszczędzania energii, takie jak przejście w tryb uśpienia i przebudzenie w odpowiedzi na aktywność. Istnieje początkowa implementacja protokołu PD 3.0 (Power Delivery) do zarządzania transferem energii przez USB Type-C.

Opublikowano otwarty stos USB TinyUSB 0.19

TinyUSB umożliwia dodawanie wsparcia dla własnych klas urządzeń USB i hostów bez modyfikacji stosu USB. Wśród już obsługiwanych w TinyUSB klas urządzeń są:

  • UAC2 — Klasa Audio 2.0;
  • BTH HCI — Interfejs Kontrolera Host Bluetooth;
  • CDC — Klasa Urządzeń Komunikacyjnych;
  • DFU — Aktualizacja Oprogramowania Urządzenia;
  • HID — Urządzenie Interfejsu Użytkownika (klawiatura, mysz, gamepad);
  • MSC — Klasa Pamięci Masowej (w tym nośniki z wieloma urządzeniami logicznymi);
  • MIDI — Muzyczny Interfejs Cyfrowy;
  • MTP/PTP — Protokół Transferu Mediów;
  • RNDIS, ECM (Model Kontroli Ethernet) i NCM (Model Kontroli Sieci) — komunikacja sieciowa przez USB;
  • USBTMC — Klasa Testów i Pomiarów;
  • UVC — Klasa wideo 1.5;
  • WebUSB.

Obsługiwane klasy hostów USB:

  • HID — Urządzenie Interfejsu Użytkownika;
  • MSC — Klasa Pamięci Masowej;
  • CDC-ACM — Klasa Urządzeń Komunikacyjnych;
  • FTDI, CP210x, CH34x, PL2303 — przekazywanie portu szeregowego przez USB;
  • Hub USB.

W nowej wersji rozszerzone zostało API dla urządzeń i hostów. W implementacji hosta USB dodano wsparcie dla urządzeń z wieloma konfiguracjami. Dodano wsparcie dla mikrokontrolerów i płytek:

  • ESP32-H4, ESP32-C5, ESP32-C61;
  • STM32U0, STM32WBA, STM32N6;
  • AT32F405, AT32F403A, AT32F415, AT32F423;
  • CH32V305 i CH32V20x (host USB);
  • MCXA156 SDK 2.16 i FRDM-MCXA156.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster