CherryUSB,用于嵌入式系统的轻量级USB设备和主机协议栈

原文链接:CherryUSB – A lightweight USB device/host stack for embedded systems 由Jean-Luc Aufranc撰写。
本文共计602字,预计阅读2分钟

CherryUSB是一种轻量级的开源USB设备/主机协议栈,适用于具有一个或多个USB接口的嵌入式系统。它目前已经能应用于各类驱动程序了,例如CDC、HID、MSC、音频、视频等。

显然CherryUSB协议栈是Boufallo Lab SDK的一部分(例如用于BL702 MCU),而且它已经在WCH CH32V307 RISC-V MCU、意法半导体STM32F4、新塘NUC442 Cortex-M4微控制器,以及EastSoft ES32F3和 MindMotion MM32L3xx这两个从未听说过的Arm Cortex-M3微控制器上进行过移植和测试了。

用于嵌入式系统的CherryUSB USB协议栈
用于嵌入式系统的CherryUSB USB协议栈

CherryUSB设备协议栈的亮点:

  • 支持0全速和高速
  • 端点中断回调
  • USB类支持
    • 复合设备
    • 通信设备类(CDC)
    • 人机接口设备(HID),包括“自定义HID”
    • 大容量存储类(MSC)
    • USB视频类(UVC1.0,UVC1.5)
    • USB音频类(UAC1.0、UAC2.0)
    • 设备固件升级类(DFU)
    • MIDI类(MIDI)
    • 测试和测量类(TMC)
    • 供应商类
  • 远程NDIS (RNDIS)支持
  • 支持WinUSB 1.0、WinUSB 2.0 with BOS(二进制设备对象存储)

CherryUSB的USB类设备堆栈内核使用的是3045字节的闪存和373字节的RAM,而HID类则需要额外的784字节存储空间和201字节RAM。目前我还不知道这些数据具体是基于哪些芯片的,但至少可以做个简单参考。

CherryUSB主机协议栈的特性:

  • 自动加载支持的类驱动程序
    • 复合设备
    • 通信设备类(CDC)
    • 人机接口设备(HID)
    • 大容量存储类(MSC)
    • 供应商类
  • 同步和异步传输
  • 多级HUB支持,最多可扩展到7级
  • 支持远程NDIS(RNDIS)

对了,我目前也还不知晓主机堆栈占用的资源情况。

他们的源代码可以在Github上找到,开源许可协议是Apache 2.0 。他们的Github上还有一个用于生成USB描述符的图形配置工具。他们的文档也是可使用的,不过暂时只有中文版本。此外,我还注意到了他们一些关于RT-Thread RTOS的说明,因此除了介绍中提供的列表之外,该协议栈应该也可以支持其他的微控制器。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论