ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ USB-стСк TinyUSB 0.19

ДоступСн выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° TinyUSB 0.19, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ кроссплатформСнный USB-стСк для встраиваСмых систСм. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ USB-стСка для USB-хостов (USB Host) ΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… устройств (USB Device). Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности Π² TinyUSB Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ динамичСского выдСлСния памяти. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ использованиС Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… прилоТСниях. Для бСзопасной ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всС события, связанныС с Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ сразу ΠΏΡ€ΠΈ поступлСнии ISR (Interrupt Service Request), Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, которая разбираСтся ΠΈ обрабатываСтся Π² контСкстС выполнСния прилоТСния, Π° Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. ΠŸΡ€ΠΈ доступС ΠΊ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ рСсурсам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ FIFO CDC (Communication Device Class), ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ сСмафоры ΠΈ ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹.

Π‘Ρ‚Π΅ΠΊ абстрагирован ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ самодостаточный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ привязанных ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. ΠŸΡ€ΠΈ этом доступны ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ TinyUSB с ОБ FreeRTOS, RT-Thread ΠΈ Apache Mynewt. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ возмоТности сниТСния энСргопотрСблСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² спящий Ρ€Π΅ΠΆΠΈΠΌ ΠΈ ΠΏΡ€ΠΎΠ±ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ появлСнии активности. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ рСализация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° PD 3.0 (Power Delivery) для управлСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ элСктроэнСргии Ρ‡Π΅Ρ€Π΅Π· USB Type-C.

 ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ USB-стСк TinyUSB 0.19

TinyUSB позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ собствСнных классов USB-устройств ΠΈ хостов Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ USB-стСка. Π‘Ρ€Π΅Π΄ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² TinyUSB классов устройств:

  • UAC2 β€” Audio Class 2.0;
  • BTH HCI β€” Bluetooth Host Controller Interface;
  • CDC β€” Communication Device Class;
  • DFU β€” Device Firmware Update;
  • HID β€” Human Interface Device (ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, ΠΌΡ‹ΡˆΡŒ, Π³Π΅ΠΉΠΌΠΏΠ°Π΄);
  • MSC β€” Mass Storage Class (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ с нСсколькими логичСскими устройствами);
  • MIDI β€” Musical Instrument Digital Interface;
  • MTP/PTP β€” Media Transfer Protocol;
  • RNDIS, ECM (Ethernet Control Model) ΠΈ NCM (Network Control Model) β€” сСтСвоС взаимодСйствиС Ρ‡Π΅Ρ€Π΅Π· USB;
  • USBTMC β€” Test and Measurement Class;
  • UVC β€” Video class 1.5;
  • WebUSB.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ классы USB-хостов:

  • HID β€” Human Interface Device;
  • MSC β€” Mass Storage Class;
  • CDC-ACM β€” Communication Device Class;
  • FTDI, CP210x, CH34x, PL2303 β€” проброс ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ… USB;
  • USB Hub.

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ API для устройств ΠΈ хостов. Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ USB-хоста появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° устройств с нСсколькими конфигурациями. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΈ ΠΏΠ»Π°Ρ‚:

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ