《快看!CherryUSB这个小而美的“宝藏”,高性能USB主从协议栈,嵌入式系统必备,移植超简单!》

Linux阅码场 2025-04-26 15:39

CherryUSB

CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统(带 USB IP)的高性能 USB 主从协议栈。

为什么选择 CherryUSB        

易于学习 USB        

为了方便用户学习 USB 基本知识、枚举、驱动加载、IP 驱动,因此,编写的代码具备以下优点:

-代码精简,逻辑简单,无复杂 C 语言语法

-树状化编程,代码层层递进    

-Class 驱动和 porting 驱动模板化、精简化

-API 分类清晰(从机:初始化、注册类、命令回调类、数据收发类;主机:初始化、查找类、数据收发类)    

易于使用 USB        

为了方便用户使用 USB 接口,考虑到用户学习过 uart 和 dma,因此,设计的数据收发类接口具备以下优点:

-等价于使用 uart tx dma/uart rx dma

-收发长度没有限制,用户不需要关心 USB 分包过程(分包过程在 porting 中处理)

易于发挥 USB 性能        

考虑到 USB 性能问题,尽量达到 USB 硬件理论带宽,因此,设计的数据收发类接口具备以下优点:

-Porting 驱动直接对接寄存器,无抽象层封装

-Memory zero copy

-IP 如果带 DMA 则使用 DMA 模式(DMA 带硬件分包功能)

-长度无限制,方便对接硬件 DMA 并且发挥 DMA 的优势

-分包过程在中断中执行

目录结构        

目录名

描述

class

usb class 类主从驱动

common

usb spec 定义、常用宏、标准接口定义

core

usb 主从协议栈核心实现

demo        

主从 class demo

docs

文档

osal

os 封装层

platform

其他 os 全家桶适配

port

usb 主从需要实现的 porting 接口

tools

工具链接

Device 协议栈简介        

CherryUSB Device 协议栈对标准设备请求、CLASS 请求、VENDOR 请求以及 custom 特殊请求规范了一套统一的函数框架,采用面向对象和链表的方式,能够使得用户快速上手复合设备,不用管底层的逻辑。同时,规范了一套标准的 dcd porting 接口,用于适配不同的 USB IP,达到面向 ip 编程。

CherryUSB Device 协议栈当前实现以下功能:

-支持 USB2.0 全速和高速设备(USB3.0 超高速 TODO)

-支持端点中断注册功能,porting 给用户自己处理中断里的数据    

-支持复合设备

-支持 Communication Device Class (CDC_ACM, CDC_ECM)

-支持 Human Interface Device (HID)

-支持 Mass Storage Class (MSC)

-支持 USB VIDEO CLASS (UVC1.0、UVC1.5)

-支持 USB AUDIO CLASS (UAC1.0、UAC2.0)

-支持 Device Firmware Upgrade CLASS (DFU)

-支持 USB MIDI CLASS (MIDI)    

-支持 Remote NDIS (RNDIS)

-支持 WINUSB1.0、WINUSB2.0、WEBUSB、BOS

-支持 Vendor 类 class

-支持 UF2

-支持 Android Debug Bridge (Only support shell)

-支持相同 USB IP 的多从机

CherryUSB Device 协议栈资源占用说明(GCC 10.2 with -O2):

file

FLASH (Byte)

No Cache RAM (Byte)

RAM (Byte)

Heap (Byte)

usbd_core.c

~4400

512(default) + 320

0

0

usbd_cdc_acm.c

~400

0

0

0

usbd_msc.c

~3800

128 + 512(default)

16

0

usbd_hid.c

~360

0

0

0

usbd_audio.c

~1500

0

0

0

usbd_video.c

~2600

0

84

0

usbd_rndis.c

~2100

2 * 1580(default)+156+8

76

0

Host 协议栈简介        

CherryUSB Host 协议栈对挂载在 root hub、外部 hub 上的设备规范了一套标准的枚举实现,对不同的 Class 类也规范了一套标准接口,用来指示在枚举后和断开连接后该 Class 驱动需要做的事情。同时,规范了一套标准的 hcd porting 接口,用于适配不同的 USB IP,达到面向 IP 编程。最后,协议栈使用 OS 管理,并提供了 osal 用来适配不同的 os。    

CherryUSB Host 协议栈当前实现以下功能:

-支持 USB2.0 full speed 和 high speed(USB3.0 TODO)

-自动加载支持的Class 驱动

-支持阻塞式传输和异步传输    

-支持复合设备

-支持多级 HUB,最高可拓展到 7 级(目前测试 1拖 10 没有问题,仅支持 dwc2/ehci/xhci/rp2040)

-支持 Communication Device Class (CDC_ACM, CDC_ECM)

-支持 Human Interface Device (HID)

-支持 Mass Storage Class (MSC)

-Support USB Video CLASS (UVC1.0、UVC1.5)

-Support USB Audio CLASS (UAC1.0)

-支持 Remote NDIS (RNDIS)

-支持 USB Bluetooth (支持 nimble and zephyr bluetooth 协议栈,支持 CLASS: 0xE0 或者厂家自定义类,类似于 cdc acm 功能)

-支持 Vendor 类 class (serial, net, wifi)

-支持 USB modeswitch

-支持 Android Open Accessory

-支持相同 USB IP 的多主机    

同时,CherryUSB Host 协议栈还提供了 lsusb 的功能,借助 shell 插件可以查看所有挂载设备的信息,包括外部 hub 上的设备的信息。

CherryUSB Host 协议栈资源占用说明(GCC 10.2 with -O2):

file

FLASH (Byte)

No Cache RAM (Byte)

RAM (Byte)

Heap (Byte)

usbh_core.c

~9000

512 + 8 * (1+x) *n

28

raw_config_desc

usbh_hub.c

~6000

32 + 4 * (1+x)

12 + sizeof(struct usbh_hub) * (1+x)

0

usbh_cdc_acm.c

~900

7

4  + sizeof(struct usbh_cdc_acm) * x

0

usbh_msc.c

~2700

64

4  + sizeof(struct usbh_msc) * x

0

usbh_hid.c

~1400

256

4  + sizeof(struct usbh_hid) * x

0

usbh_video.c

~3800

128

4  + sizeof(struct usbh_video) * x

0

usbh_audio.c

~4100

128

4  + sizeof(struct usbh_audio) * x

0

usbh_rndis.c        

~4200

512 + 2 * 2048(default)

sizeof(struct usbh_rndis) * 1

0

usbh_cdc_ecm.c

~2200

2 * 1514 + 16

sizeof(struct usbh_cdc_ecm) * 1

0

usbh_cdc_ncm.c

~3300

2 * 2048(default) + 16 + 32

sizeof(struct usbh_cdc_ncm) * 1

0

usbh_bluetooth.c

~1000

2 * 2048(default)

sizeof(struct usbh_bluetooth) * 1

0

其中,sizeof(struct usbh_hub) 和 sizeof(struct usbh_hubport) 受以下宏影响:    

#define CONFIG_USBHOST_MAX_EXTHUBS          1          #define CONFIG_USBHOST_MAX_EHPORTS          4          #define CONFIG_USBHOST_MAX_INTERFACES       8          #define CONFIG_USBHOST_MAX_INTF_ALTSETTINGS 8          #define CONFIG_USBHOST_MAX_ENDPOINTS        4

x 受以下宏影响:

#define CONFIG_USBHOST_MAX_CDC_ACM_CLASS 4          #define CONFIG_USBHOST_MAX_HID_CLASS     4          #define CONFIG_USBHOST_MAX_MSC_CLASS     2          #define CONFIG_USBHOST_MAX_AUDIO_CLASS   1          #define CONFIG_USBHOST_MAX_VIDEO_CLASS   1

USB IP 支持情况        

仅列举标准 USB IP 和商业性 USB IP

IP

device

host

Support status

OHCI(intel)

none

OHCI

EHCI(intel)

none

EHCI

XHCI(intel)

none

XHCI

UHCI(intel)

none

UHCI

×

DWC2(synopsys)

DWC2

DWC2

MUSB(mentor)

MUSB

MUSB

FOTG210(faraday)

FOTG210

EHCI

CHIPIDEA(synopsys)

CHIPIDEA

EHCI

CDNS2(cadence)

CDNS2

CDNS2

CDNS3(cadence)

CDNS3

XHCI

×

DWC3(synopsys)

DWC3

XHCI

×

文档教程        

CherryUSB 快速入门、USB 基本概念、API 手册、Class 基本概念和例程,参考 CherryUSB Documentation Tutorial    

视频教程        

基于 V1.4.3:https://www.bilibili.com/cheese/play/ss707687201

描述符生成工具        

TODO

示例仓库        

Manufacturer

CHIP or Series

USB IP

Repo Url

Support version

Support status

Bouffalolab

BL702/BL616/BL808

bouffalolab/ehci

bouffalo_sdk

<= latest

Long-term

ST

STM32F1x

fsdev

stm32_repo

<= latest

Long-term

ST

STM32F4/STM32H7

dwc2

stm32_repo

<= latest

Long-term

HPMicro

HPM6000/HPM5000

hpm/ehci

hpm_sdk

<= latest

Long-term

Essemi

ES32F36xx

musb

es32f369_repo

<= latest

Long-term

Phytium

e2000

pusb2/xhci

phytium_repo

>=1.4.0

Long-term

Artinchip

d12x/d13x/d21x

aic/ehci/ohci

luban-lite

<= latest        

Long-term

Espressif

esp32s2/esp32s3/esp32p4

dwc2

esp32_repo

<= latest

Long-term

NXP

mcx

kinetis/chipidea/ehci

nxp_mcx_repo

<= latest

Long-term

Kendryte

k230

dwc2

k230_repo

v1.2.0

Long-term

Raspberry pi

rp2040/rp2350

rp2040

pico-examples

<= latest

Long-term

AllwinnerTech        

F1C100S/F1C200S

musb

cherryusb_rtt_f1c100s

<= latest

the same with musb

Bekencorp

bk7256/bk7258

musb

bk_idk

v0.7.0

the same with musb

Sophgo

cv18xx

dwc2

cvi_alios_open

v0.7.0

TBD

WCH

CH32V307/ch58x

ch32_usbfs/ch32_usbhs/ch58x

wch_repo

<= v0.10.2        

TBD

软件包支持        

CherryUSB 软件包可以通过以下方式获取:

-RT-Thread

-YOC

-ESP-Registry

商业支持        

参考 https://cherryusb.readthedocs.io/zh-cn/latest/support/index.html 。


支持企业        

感谢以下企业支持(顺序不分先后):    

          

 

    

联系  

扫描二维码加入技术交流群  

加小月微信:


Linux阅码场 专业的Linux技术社区和Linux操作系统学习平台,内容涉及Linux内核,Linux内存管理,Linux进程管理,Linux文件系统和IO,Linux性能调优,Linux设备驱动以及Linux虚拟化和云计算等各方各面.
评论
  •   军事仿真推演系统平台核心解析   北京华盛恒辉军事仿真推演系统平台以计算机仿真技术为基石,在功能、架构、应用及效能上展现显著优势,成为提升军事作战与决策能力的核心工具。   应用案例   目前,已有多个仿真推演系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润仿真推演系统。这些成功案例为仿真推演系统的推广和应用提供了有力支持。   一、全流程功能体系   精准推演控制:覆盖推演启动至结束全流程。   智能想定管理:集成作战信息配置、兵力部署功能。   数据模型整合
    华盛恒辉l58ll334744 2025-05-14 17:11 119浏览
  •   电磁数据管理系统深度解析   北京华盛恒辉电磁数据管理系统作为专业的数据处理平台,旨在提升电磁数据的处理效率、安全性与可靠性。以下从功能架构、核心特性、应用场景及技术实现展开分析:   应用案例   目前,已有多个电磁数据管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁数据管理系统。这些成功案例为电磁数据管理系统的推广和应用提供了有力支持。   一、核心功能模块   数据采集与接入:实时接收天线、频谱仪等设备数据,兼容多协议接口,确保数据采集的全面性与实时性
    华盛恒辉l58ll334744 2025-05-13 10:59 319浏览
  • 在当下竞争激烈的 AI 赛道,企业高层的变动往往牵一发而动全身,零一万物近来就深陷这样的动荡漩涡。近日,零一万物联合创始人、技术副总裁戴宗宏离职创业的消息不胫而走。这位在大模型基础设施领域造诣颇深的专家,此前在华为云、阿里达摩院积累了深厚经验,在零一万物时更是带领团队短期内完成了千卡 GPU 集群等关键设施搭建,其离去无疑是重大损失。而这并非个例,自 2024 年下半年以来,李先刚、黄文灏、潘欣、曹大鹏等一众联创和早期核心成员纷纷出走。
    用户1742991715177 2025-05-13 21:24 207浏览
  • 在当下的商业版图中,胖东来宛如一颗璀璨的明星,散发着独特的光芒。它以卓越的服务、优质的商品以及独特的企业文化,赢得了消费者的广泛赞誉和业界的高度关注。然而,近期胖东来与自媒体博主之间的一场激烈对战,却如同一面镜子,映照出了这家企业在光环背后的真实与挣扎,也引发了我们对于商业本质、企业发展以及舆论生态的深入思考。​冲突爆发:舆论场中的硝烟弥漫​2025年4月,抖音玉石博主“柴怼怼”(粉丝约28万)突然发难,发布多条视频直指河南零售巨头胖东来。他言辞犀利,指控胖东来在玉石销售方面存在暴利行为,声称其
    疯人评 2025-05-14 13:49 129浏览
  •   军事领域仿真推演系统的战略价值与发展前瞻   北京华盛恒辉仿真推演系统通过技术创新与应用拓展,已成为作战效能提升的核心支撑。以下从战略应用与未来趋势展开解析:   应用案例   目前,已有多个仿真推演系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润仿真推演系统。这些成功案例为仿真推演系统的推广和应用提供了有力支持。   一、核心战略应用   1. 作战理论创新引擎   依托低成本仿真平台,军事人员可高效验证新型作战概念。   2. 装备全周期优化   覆盖武器
    华盛恒辉l58ll334744 2025-05-14 16:41 141浏览
  • PT100温度传感器凭借其高精度(±0.1℃级)和宽温域(-200℃~850℃)特性,广泛应用于以下核心场景:‌一、工业过程控制‌1、‌化工与石油‌l 监测反应釜温度(-200℃~850℃),通过PID算法调控加热/冷却系统,提升化学反应效率与**性。l 原油输送管道中采用浸入式铠装设计(316L不锈钢套管),实现-50℃~300℃范围的黏度与温度联动控制。2、‌电力设备‌l 监测变压器绕组表面温度(≤180℃),结合光纤绝缘层预防热老化故障。l 发电机冷
    锦正茂科技 2025-05-15 13:02 76浏览
  • 在智能设备与物联网技术深度融合的产业浪潮下,无线遥控技术早已突破电视机、空调与投影仪等传统遥控领域的应用边界,完成了从基础单向指令传输向多维智能交互体系的补充迭代,可精准匹配现代工业领域对遥控距离、遥控精度与环境适应性等能力的核心诉求。其中,无线射频作为一种具备远距离传输、抗干扰能力强与技术成熟度高等优势的无线通信技术,尤其是在Sub-GHz频段下,其低功耗、强穿透与广覆盖的特性进一步凸显,是在各种复杂工业环境中实现高可靠性的无线遥控方案之一。Sub-GHz射频在工业遥控方案中有那些应用优势?众
    华普微HOPERF 2025-05-15 11:19 95浏览
  • PT100温度传感器是一种基于铂(Pt)电阻特性的温度测量器件,广泛应用于工业、医疗和科研领域。以下是其核心特性与应用解析:‌1. 定义与原理‌‌基本特性‌:PT100在0℃时基准阻值为100Ω,其阻值随温度升高近似线性增长(100℃时约138.5Ω),遵循公式 ‌R=Ro(1+αT)‌(Ro为0℃阻值,α为温度系数)。‌工作原理‌:通过铂电阻的阻值变化反映温度,测温范围覆盖 ‌-200℃至+850℃‌,精度可达A级(±0.15℃)或B级(±0.30℃)。2.&nb
    锦正茂科技 2025-05-15 11:40 81浏览
  •   舰艇电磁兼容分析与整改系统平台解析   北京华盛恒辉舰艇电磁兼容分析与整改系统平台是保障海军装备作战效能的关键技术,旨在确保舰艇电子设备在复杂电磁环境中协同运行。本文从架构、技术、流程、价值及趋势五个维度展开解析。   应用案例   目前,已有多个舰艇电磁兼容分析与整改系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润舰艇电磁兼容分析与整改系统。这些成功案例为舰艇电磁兼容分析与整改系统的推广和应用提供了有力支持。   一、系统架构:模块化智能体系   电磁环境建模:基
    华盛恒辉l58ll334744 2025-05-14 11:22 121浏览
  • 在全球能源结构转型加速推进与政策驱动的双重作用下,油气输送、智慧水务及化学化工等流体计量场景正面临效率革命与智能化升级的迫切需求。传统机械式流量计虽在工业初期有效支撑了基础计量需求,但其机械磨损、精度衰减与运维困难等固有缺陷已难以适应现代工业对精准化、智能化与可持续发展的多维诉求。在此背景下,超声波流量计则凭借着高精度探测、可实时监测、无侵入式安装、无阻流部件、易于维护与绿色环保等优势实现了突破性发展,成为当代高精度流体计量体系中不可或缺的重要一环。该技术不仅是撬动能源利用效率提升、支撑智慧管网
    华普微HOPERF 2025-05-14 11:49 94浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦