分页: 1 / 1

开源跨平台的TinyUSB

发表于 : 2019年 11月 17日 16:11
shaoziyang
图片

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


图片

议栈支持以下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构建支持。这是构建示例的说明
 

Re: 开源跨平台的TinyUSB

发表于 : 2019年 11月 17日 16:12
shaoziyang