一个开源跨平台嵌入式USB设备协议:TinyUSB

昨天 9316阅读 0评论

概述

        TinyUSB 是一个用于嵌入式系统的开源跨平台 USB 主机/设备堆栈,设计为内存安全,无需动态分配,线程安全,所有中断事件都被推迟,然后在非 ISR 任务函数中处理。查看在线文档以获取更多详细信息。

源码链接:GitHub - chjun8/tinyusb: An open source cross-platform USB stack for embedded system

一个开源跨平台嵌入式USB设备协议:TinyUSB 第1张

.

├── docs            # Documentation

├── examples        # Examples with make and cmake build system

├── hw

│   ├── bsp         # Supported boards source files

│   └── mcu         # Low level mcu core & peripheral drivers

├── lib             # Sources from 3rd party such as freeRTOS, fatfs ...

├── src             # All sources files for TinyUSB stack itself.

├── test            # Tests: unit test, fuzzing, hardware test

└── tools           # Files used internally

入门

有关使用 TinyUSB 及其实现方式的信息,请参阅在线文档。

我们使用GitHub Discussions作为我们的论坛。这是向社区提出问题和建议或讨论基于 TinyUSB 的项目的好地方。

对于错误和功能请求,请提出问题并遵循那里的模板。

查看入门指南,将 TinyUSB 添加到您的项目或构建示例。如果您是 TinyUSB 的新手,我们建议您从cdc_msc示例开始。

请参阅移植指南以添加对新 MCU 和板的支持。

设备堆栈

通过动态更改 USB 描述符、挂起、恢复和远程唤醒等低功耗功能来支持多种设备配置。支持以下设备类别:

  • 音频等级 2.0 (UAC2)
  • 蓝牙主机控制器接口 (BTH HCI)
  • 通信设备类 (CDC)
  • 设备固件更新 (DFU):DFU 模式 (WIP) 和运行时
  • 人机接口设备 (HID):通用(输入和输出)、键盘、鼠标、游戏手柄等...
  • 海量存储类 (MSC):具有多个 LUN
  • 乐器数字接口 (MIDI)
  • 与 RNDIS 网络、以太网控制模型 (ECM)、网络控制模型 (NCM)
  • 测试与测量类 (USBTMC)
  • 视频等级 1.5 (UVC):正在进行中
  • 具有通用输入和输出端点的供应商特定类支持。可与 MS OS 2.0 兼容描述符一起使用,无需 INF 文件即可加载 winUSB 驱动程序。
  • 具有供应商特定类的WebUSB

    如果您有特殊要求,可以使用usbd_app_driver_get_cb()编写自己的类驱动程序,而无需修改堆栈。以下是 RPi 团队如何添加重置接口raspberrypi/pico-sdk#197

    主机堆栈

    • 人机接口设备 (HID):键盘、鼠标、通用
    • 海量存储类 (MSC)
    • 通信设备类别:CDC-ACM
    • 通过 USB 的供应商串行:FTDI、CP210x
    • 具有多级支持的集线器

      与设备堆栈类似,如果您有特殊要求,可以使用usbh_app_driver_get_cb()编写自己的类驱动程序,而无需修改堆栈。

      TypeC PD 堆栈

      • 支持 USB Type-C 的供电 3.0 (PD3.0) (WIP)
      • 超早期阶段,仅用于测试目的
      • 仅支持STM32 G4

        操作系统抽象层

        TinyUSB 是完全线程安全的,它将所有中断服务请求 (ISR) 事件推送到中央队列,然后在非 ISR 上下文任务函数中对其进行处理。它还使用信号量/互斥体来访问共享资源,例如通信设备类 (CDC) FIFO。因此,堆栈需要使用操作系统的一些基本 API。以下操作系统已经得到开箱即用的支持。

        • 无操作系统
        • 自由实时操作系统
        • RT-Thread:回购协议
        • Mynewt由于 newt 包构建系统,Mynewt 示例最好位于其自己的存储库中

          支持的CPU

          支持以下 CPU,请查看支持的设备以获取每个 CPU 的驱动程序和功能的完整列表。

          支持以下 CPU,请查看支持的设备以获取每个 CPU 的驱动程序和功能的完整列表。

          制造商家庭
          全志F1C100/F1C200
          模拟MAX3421E(USB主机扩展板)
          布里格泰克FT90x
          博通BCM2711、BCM2837
          对话DA1469x
          乐鑫ESP32 S2、S3
          兆易创新GD32VF103
          英飞凌XMC4500

          微芯片

          萨姆 | D11、D21、D51、E5x、G55、L2x、E7x、S7x、V7x

          ---+-------------------------------------------------------- ----------+

          图片| 24、32mm、32mk、32mx、32mz、dsPIC33

          心灵感应毫米32
          北欧半导体nRF52833、nRF52840、nRF5340
          新唐NUC 120, 121, 125, 126, 505

          恩智浦

          iMXRT | RT10xx、RT11xx

          ------+---------------------------------------- ----------+

          动力学|吉隆坡,K32L2

          ------+---------------------------------------- ----------+

          液化石油气 | 11u、13、15、17、18、40、43、51u、54、55

          ------+---------------------------------------- ----------+

          MCX | A15、N9

          树莓派RP2040
          瑞萨接收| 63N、65N、72N
          RA | 4M1、4M3、6M1、6M5
          西拉布斯EFM32GG12
          索尼CXD56
          意法半导体STM32F0、F1、F2、F3、F4、F7、H7、G0、G4、L0、L1、L4、L4+ U5、WB
          TIMSP430、MSP432E4、TM4C123
          价USB埃普特里
          世界卫生大会CH32F20x、CH32V307、

          执照

          文件夹中的所有 TinyUSB 源src均已获得 MIT 许可证的许可,完整许可证位于此处。但是,每个文件都可以单独许可,尤其是lib和hw/mcu文件夹中的文件。请确保您了解项目中使用的文件的所有许可条款。

          文档

          • 信息
            • 用途
            • 变更日志
            • 贡献者
          • 参考
            • 支持的设备
            • 入门
            • 依赖关系
            • 并发性
          • 贡献
            • 行为守则
            • 结构
            • 移植

             移植教程,后续补上,蟹蟹参阅!!!

            STM32 移植参考文章:

            1、TinyUSB 基本使用 – TaterLi 个人博客

            2、【RT-Thread】 TinyUSB挂载成U盘和文件系统,基于STM32F405RG-CSDN博客

            ESP32 移植参考文章:4. ESP32S3 使用USB 加载SD_SDIO 当作 U盘使用_esp32的usb使用-CSDN博客 

            MM32 移植参考文章:基于 TinyUSB 协议栈实现 CMSIS-DAP_开源usb协议栈-CSDN博客


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,9316人围观)

还没有评论,来说两句吧...

目录[+]