开源跨平台的 TinyUSB

Spoony 54.7m2019-11-172876 次点击1 人感谢
https://user-images.githubusercontent.com/249515/62646655-f9393200-b978-11e9-9c53-484862f15503.png

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

https://user-images.githubusercontent.com/249515/49858616-f60c9700-fe27-11e8-8627-e76936352ff7.png

议栈支持以下MCU
- nordic: nRF52840,nRF52833
- 恩智浦: LPC系列:11Uxx,13xx,175x_6x,177x_8x,18xx,40xx,43xx,51Uxx,54xxx,55xx
- micrpchip: SAMD21,SAMD51(仅设备)
- 索尼: CXD56
- ST: STM32系列:L0,F0,F1,F2,F3,F4,F7,H7(仅设备)

这是可以与提供的示例一起使用的受支持板的列表。设备堆栈通过动态更改USB描述符来支持多种设备配置。低功耗功能,例如暂停,恢复和远程唤醒。支持以下设备类:
- 通信类(CDC)
- 人机界面设备(HID):通用(输入和输出),键盘,鼠标,游戏手柄等...
- 大容量存储类(MSC):具有多个LUN
- 乐器数字接口(MIDI)
- 具有通用In&Out端点的特定于供应商的类支持。可以与兼容MS OS 2.0的描述符一起使用,以加载- - 不带INF文件的winUSB驱动程序。
- 具有供应商特定类的WebUSB

主机栈最活跃的开发是在设备堆栈上。主机堆栈正在返工,并且未经测试。
- 人机界面设备(HID):键盘,鼠标,通用
- 大容量存储类(MSC)
- 集线器目前仅支持1级集线器(由于我的懒惰)

操作系统抽象层通过将所有ISR事件推送到中央队列,然后在非ISR上下文任务功能中对其进行处理,TinyUSB是完全线程安全的。它还使用semphore / mutex访问共享资源,例如CDC FIFO。因此,堆栈需要使用OS的一些基本API。开箱即用地支持以下操作系统。
- 无操作系统:禁用USB IRQ用作提供互斥锁的方法
- FreeRTOS
- Mynewt由于有newt软件包构建系统,最好将Mynewt示例作为自己的仓库

编译器和IDE堆栈是使用GCC编译器开发的,应该可以与其他编译器一起编译。文件夹 examples 提供Makefile和Segger Embedded Studio构建支持。这是构建示例的说明。
收藏 ♥ 感谢
暂无回复

登录注册 后可回复。