TinyUSB

针对嵌入式系统的开源 USB 堆栈
授权协议 MIT
开发语言 C/C++
所属分类 其他开源、 硬件驱动/工具
软件类型 开源软件
地区 不详
投 递 者 仲孙宇定
操作系统 嵌入式
开源组织
适用人群 未知
 软件概览

TinyUSB 是用于嵌入式系统的开源跨平台 USB 主机/设备堆栈,旨在实现无动态分配的内存安全和延迟所有中断事件的线程安全,然后在非ISR任务功能中进行处理。

.
├── docs            # Documentation
├── examples        # Sample with Makefile and Segger Embedded build support
├── 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            # Unit tests for the stack
└── tools           # Files used internally

支持的 MCU

支持以下MCU:

  • Espressif: ESP32-S2
  • Dialog: DA1469x
  • MicroChip: SAMD11, SAMD21, SAMD51, SAME5x, SAMG55
  • NordicSemi: nRF52833, nRF52840
  • Nuvoton: NUC120, NUC121/NUC125, NUC126, NUC505
  • NXP:
    • iMX RT Series: RT1011, RT1015, RT1021, RT1052, RT1062, RT1064
    • Kinetis: KL25
    • LPC Series: 11Uxx, 13xx, 175x_6x, 177x_8x, 18xx, 40xx, 43xx, 51Uxx, 54xxx, 55xx
  • Raspberry Pi: RP2040
  • Sony: CXD56
  • ST: STM32 series: L0, F0, F1, F2, F3, F4, F7, H7 
  • TI: MSP430
  • ValentyUSB eptri

设备堆栈

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

  • USB Audio Class 2.0(UAC2)仍在开发中
  • 蓝牙主机控制器接口(BTH HCI)
  • CDC
  • 设备固件更新(DFU):仅 Runtinme
  • 人机界面设备(HID):通用输入和输出设备,键盘、鼠标和游戏手柄等...
  • 大容量存储类(MSC):具有多个LUN
  • MIDI
  • 带有 RNDIS,CDC-ECM 的网络
  • USB 测试和测量类别(USBTMC)
  • 具有供应商特定类的WebUSB

主机堆栈

主机堆栈正在重构,并且未经测试。

  • 人机界面设备(HID):键盘,鼠标,通用
  • 大容量存储类(MSC)
  • 集线器目前仅支持1级集线器
  • usb 802.11 wifi网卡,遇到点问题。 对tinyusb的架构有一点小了解了。 发送路径: 用户调用tud_vendor_write(urb_msg,urb_len);    启动传输 tud_vendor_write() >tud_vendor_n_write(0, buffer, bufsize); >>tu_fifo_write_n(&p_itf->tx_ff, buffer, b

  • 项目有用到USB,芯片厂家给了USB使用案例,里面有TinyUSB的使用例程,觉得非常不错,但相关的资料甚少,因为自己对USB驱动协议这块不是太熟悉,遂尽可能的搜集到一些与TinyUSB相关的资料,集中以供查之。 链接:TinyUSB项目 链接:GitHub源码库 链接:参考 链接: TinyUSB 各种描述符写法

  • TinyUSB 基本使用 – TaterLi 个人博客,感谢这位大神的分享。

 相关资料
  • 主要内容:嵌入式系统硬件,嵌入式系统软件在学习物联网或在物联网上构建项目时,了解嵌入式设备非常重要。嵌入式设备是构建独特计算系统的对象。这些系统可能连接也可能不连接到Internet。 嵌入式设备系统通常作为单个应用程序运行。但是,这些设备可以通过互联网连接进行连接,并且可以通过其他网络设备进行通信。 嵌入式系统硬件 嵌入式系统可以是微控制器型或微处理器型。这两种类型都包含集成电路(IC)。 嵌入式系统的基本组件是RISC系列微控制器,

  • 本文向大家介绍开源操作系统,包括了开源操作系统的使用技巧和注意事项,需要的朋友参考一下 开源操作系统是根据许可发布的,版权所有者允许他人学习,更改并将软件分发给他人。可以出于任何原因完成此操作。市场上可用的不同开源操作系统是- 宇宙 这是一个主要使用C#语言编写的开源操作系统。其完整格式为C#开源托管操作系统。直到2016年,Cosmos都不打算成为一个完整的操作系统,而是一个允许其他开发人员轻松

  • 全程45分钟 面试官人很好,进会议后先闲聊了一阵子 问了下城市、地域选择相关的 自我介绍+项目介绍 为什么采用linux操作系统 进程、线程、锁相关(区别、为什么、怎么用) 项目分工是怎样 项目上遇到的问题(协调问题、工程问题、技术问题) 驱动相关问题(用到哪些、怎么实现) 内核相关问题(难,直说只是了解过) 按下一个按键,信号传输到soc,这个功能实现流程是怎么样的?(一开始没太懂面试官啥意思)

  • 是否可以在高可用性(HA)模式下运行Neo4j,并对多个java客户端(java嵌入式)进行读/写访问? 如果是,是否需要特殊配置?(除了标准HA配置之外) 我想在我的计算机上运行一个包含三个本地服务器的HA集群。使用套接字从三个java客户端写入和读取。

  • 在 macOS,一个窗口可以设置它展示的文件,文件的图标可以出现在标题栏,当用户 Command-Click 或者 Control-Click 标题栏,文件路径弹窗将会出现。 您还可以设置窗口的编辑状态,以便文件图标可以指示 该窗口中的文档是否已修改。 文件展示弹出菜单: 要设置展示文件窗口,可以使用 BrowserWindow.setRepresentedFilename 和 BrowserWi

  • 平时一直在用thinkphp的thinkcmf, 但cms发展也很快,国内有比较好的开源cms系统吗?说一下对比一下。