CherryUSB — это легкий стек USB-устройств/хостов с открытым исходным кодом для встраиваемых систем с одним или несколькими интерфейсами USB. Стек реализует различные драйверы классов, такие как CDC, HID, MSC, аудио, видео и так далее.
По-видимому, он является частью SDK Boufallo Lab (например микроконтроллера BL702), и был портирован и протестирован с микроконтроллером WCH CH32V307 RISC-V, STMicro STM32F4 и микроконтроллером Nuvoton NUC442 Cortex-M4, а также с двумя микроконтроллерами Arm Cortex-M3, о которых мы никогда не слышали: EastSoft ES32F3 и MindMotion MM32L3xx .
Особенности стека устройств CherryUSB:
- Поддержка полной и высокой скорости USB2.0
- Обратный вызов для прерывания конечной точки
- Поддержка классов USB
- Составное устройство
- Communication Device Class (CDC)
- Human Interface Device (HID), включая «Custom HID»
- Mass Storage Class (MSC)
- USB VIDEO Class (UVC1.0,UVC1.5)
- USB AUDIO Class (UAC1.0, UAC2.0)
- Device Firmware Upgrade CLASS (DFU)
- MIDI CLASS (MIDI)
- Test and Measurement CLASS (TMC)
- Vendor class
- Поддержка удаленного NDIS (RNDIS)
- Поддержка WINUSB 1.0, WINUSB 2.0 с BOS (хранилище объектов двоичных устройств)
Ядро стека USB-устройств использует 3045 байт флэш-памяти и 373 байта ОЗУ, а класс HID занимает дополнительные 784 байта хранилища и 201 байт ОЗУ. Нам не говорят, на для каких целей, но можно представить.
Особенности хост-стека CherryUSB:
- Автоматическая загрузка поддерживаемых драйверов класса
- Составное устройство
- Класс коммуникационных устройств (CDC)
- Устройство интерфейса пользователя (HID)
- Класс запоминающих устройств (MSC)
- Класс поставщика
- Синхронные и асинхронные передачи
- Поддержка многоуровневого концентратора с возможностью расширения до 7 уровней
- Поддержка удаленного NDIS (RNDIS)
Нам не дали никакой оценки размера стека хост-устройства.
Исходный код можно найти на Github, выпущенный под лицензией Apache License 2.0. Существует также графический инструмент настройки, используемый для создания дескрипторов USB. Документация доступна, но только на китайском языке, и мы также заметили некоторые инструкции для RT-Thread RTOS, поэтому может поддерживаться больше микроконтроллеров, помимо списка, приведенного выше.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.