RT-Thread V4.1.0 新特性介绍之TinyUSB

RT-ThreadTinyUSB挂载成U盘和文件系统,基于STM32F405RG RT-Thread将flash挂载到文件系统会挂载成U盘 阅读详情

95867754161f9eedef2b58cbf465ae55.png

TinyUSB 是一个用于嵌入式系统的开源跨平台 USB Host/Device 协议栈,其为了内存安全而设计,没有动态分配,同时也是线程安全的,所有中断事件都会被推迟,然后在非 ISR 任务函数中处理,支持多种 MCU。目前 TinyUSB 的源代码托管在 GitHub 上。

在社区成员谭丰伟的努力下,通过对 TinyUSB 上游仓库进行 移植,目前已成为 RT-Thread 软件包。

a420c148d68ba5ea5b9f8fd282b4708d.png

e3339b9a065558a44fcbfacb151dad5b.png

支持情况


目前软件包仅支持 USB Device 协议栈。同时希望能有更多的社区伙伴能参与到 MCU 的适配中。

设备类

  • CDC

  • MSC

  • HID

MCU

  • STM32: F0, F1, F2, F3, F4, F7, H7, L0, L1, L4

  • NRF52840

  • HPM6000 系列

开始使用

启用软件包

1、ENV

软件包在 ENV 包管理器中的路径为:

cf11668df0039be833823cc157e170ec.png

Keil MDK 中使用时,请选择 ARM Clang 编译器,或手动在编译选项中选中 GNU Extensions

5d00eea01884acb3635929590ccb7a93.png

2、RT-Thread Studio

在 RT-Thread Studio 中,搜索 TinyUSB 即可将软件包添加至工程。

3f2c5dcd6e38ffd6cfd5fb2c5d8a38e7.png

软件包配置

这里我们使用 CDC 虚拟串口,以及软件包提供的示例来进行演示。首先在配置中启用 USB 设备,然后依次选中 CDC 和 CDC 设备的示例,保存关闭设置界面,软件包便会自动下载添加到项目中。

11c37d7e133bd7d5a842a622d109f0ea.png

在编译完成后,将程序烧录至芯片中。将 USB OTG 口连接上电脑后,我们可以在设备管理器中看到对应的端口。

d26aa939b508387cd0f601718adbb711.png

dcfad8c92c2d40cdf35c1cdb96230e80.png

在 Putty 或 MobaXterm 中分别打开 FinSH 和 CDC 对应的端口,在控制台中输入 cdc_example ,即可在 CDC 的端口中输入任意字符(不超过 32 个字符),按下回车后,会显示刚刚输入的字符。

b9796cf3d6ae83aa234a7e606c82b440.png

用户手册

用户手册已经在 RT-Thread 文档中心上线(链接请复制至外部浏览器打开):

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/packages-manual/tinyusb-docs/introduction

问题反馈

Issue: RT-Thread-packages/tinyusb

往期连载情况:

RT-Thread 4.1.0 特性解析之内核

RT-Thread v4.1.0 特性解析之 FAL 探秘

RT-Thread 4.1.0 特性解析之LIBC与POSIX

...

50fef893fe7a9dc87780d7e5099d472a.png

关注我们

d924f8dfc49dd94debd4c672484a7bc8.png

57ad325d4b974e61543744cb5d5e0402.gif

爱我就给我点在看34206edd52ae78472f9614b0e68e96ca.gif

28380b3dd55fbf1fe615aacca92b1768.gif点击 阅读原文”进入官网

TinyUSB嵌入式USB协议栈原理与设备/主机双模开发指南 USB协议栈是嵌入式系统实现即插即用通信的核心基础,其本质是在资源受限MCU上完成USB 2.0协议的状态机解析、端点管理与类驱动调度。TinyUSB通过静态内存分配、事件队列驱动和线程安全设计,解决了传统栈在裸机/RTOS环境下中断延迟高、竞态风险大、内存不确定等工程痛点。其技术价值在于兼顾确定性实时性与跨平台可移植性,支持CDC、HID、MSC、UVC等主流设备类,同时原生兼容Host模式,实现MCU主从角色统一抽象。典型应用场景涵盖IoT传感器虚拟串口、边缘网关USB外设接入、DFU固件升级及WebU 阅读详情

相关推荐

避坑指南:W25Q64RT-Thread中的扇区大小设置与USB挂载失败排查

本文详细解析了W25Q64RT-Thread中的扇区大小设置与USB挂载失败的常见问题及解决方案。重点介绍了SPI Flash文件系统配置中的扇区大小设置、USB大容量存储设备的时钟配置要求,以及文件系统与USB模式的动态切换技巧,帮助开发者避免常见陷阱并实现稳定运行。

weixin_42620340的博客 191

tinyusb:用于嵌入式系统的开源跨平台USB堆栈

TinyUSB 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 ... ├─

2020年MCU技术趋势与开发实践全解析

微控制器(MCU)作为嵌入式系统的核心,其技术演进直接影响物联网和工业控制等领域的发展。从架构原理来看,RISC-V凭借开源特性正在挑战传统ARM架构的市场地位,而DMA等外设协处理技术能显著提升实时性表现。在工程实践中,STM32的DMA+DAC方案解决了波形生成的效率问题,ESP32开发环境优化则体现了生态适配的重要性。针对2020年行业热点,国产MCU如CH32V003的崛起和远程固件更新方案尤其值得关注,这些技术方向为成本敏感型项目提供了新选择。

weixin_29184371的博客 253

【亲测免费】 探索 TinyUSB:一个轻量级的开源 USB 驱动程序库

TinyUSB 是一个轻量级、高效的开源 USB 驱动程序库,可以轻松地为各种嵌入式系统添加 USB 功能。它是完全免费且易于使用的,并具有强大的社区支持。 ## 为什么选择 TinyUSB1. **易用性**:TinyUSB 提供了一个清晰简洁的 API,允许开发人员快速将 USB 功能集成到他们的项目中。 2. **跨平台兼容性**:TinyUSB 支持多种微控制器架构和实时操作系统 ...

gitblog_00076的博客 4632

RT-Thread 软件包-TinyUSB用户手册-介绍

TinyUSB 是一个开源的用于嵌入式系统的跨平台 USB Host/Device 协议栈,为了内存安全而设计,没有动态分配,同时也是线程安全的,所有中断事件都被推迟,然后在非 ISR 任务函数中处理,支持多种 MCU。目前 TinyUSB 的源代码托管在 GitHub 上。在社区成员的努力下,通过对 TinyUSB 上游仓库进行 移植,目前已成为 RT-Thread 软件包。

华为奋斗者精神 3261

RT-Thread】基于STM32F405RG的TinyUSB与文件系统动态切换实践

本文详细介绍了基于STM32F405RG和RT-Thread实现TinyUSB与文件系统动态切换的实践方法。通过硬件选型、开发环境搭建、SPI Flash驱动配置、文件系统实现及TinyUSB设备配置等步骤,实现了设备在U盘和独立文件系统模式间的无缝切换,适用于固件升级、参数配置等物联网应用场景。

weixin_30872157的博客 428

RT-Thread四轴飞控开发:从环境搭建到实时系统集成实战

实时操作系统(RTOS)是嵌入式开发中管理多任务、确保系统实时性的核心软件平台。其工作原理基于优先级调度、任务同步与通信机制,为资源受限的嵌入式设备提供了可靠的多任务执行环境。在物联网和智能硬件领域,RTOS的技术价值在于显著提升开发效率、增强系统稳定性,并简化复杂外设驱动与算法模块的集成。典型的应用场景包括无人机飞控、工业控制、智能穿戴等对实时性要求严苛的系统。本文聚焦于使用RT-Thread这一面向物联网RTOS进行四轴飞行器飞控开发,深入讲解如何利用其软件包生态和构建工具快速搭建开发环境,并针对飞控

weixin_30448603的博客 630

【亲测免费】 TinyUSB 安装和配置指南

### 项目基础介绍 TinyUSB 是一个开源的跨平台 USB 主机/设备栈,专为嵌入式系统设计。它旨在提供一个内存安全、无动态分配且线程安全的 USB 解决方案。TinyUSB 支持多种嵌入式处理器和操作系统,适用于各种 USB 设备和主机应用。 ### 主要编程语言 TinyUSB 主要使用 C 语言编写,确保其在嵌入式系统中的高效性和兼容性。 ## 2. 项目使用的关键技术和框架 #...

gitblog_09004的博客 1578

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

一个用于嵌入式系统的开源跨平台 USB 主机/设备堆栈 TinyUSB

qq_36075612的博客 6956

TinyUSB 基本使用记录下

If you have a special requirement, usbd_app_driver_get_cb() can be used to write your own class driver without modifying the stack. Here is how the RPi team added their reset interface.

sluyinhu的博客 1704

STM32适配开源TINYUSB

TinyUSB是一个轻量级的、开源的、跨平台的USB协议栈!

Dreamer_young的博客 2016

TinyUSB完全指南:嵌入式系统跨平台USB协议栈革命性解决方案

你还在为嵌入式项目中的USB兼容性问题头疼吗?还在为不同MCU架构重复开发USB驱动吗?TinyUSB——这款轻量级、跨平台的开源USB协议栈将彻底改变你的开发流程。本文将从架构设计到实战开发,全方位解析TinyUSB如何解决嵌入式USB开发的痛点,帮助你在2小时内掌握这个强大工具。 读完本文你将获得: - 嵌入式USB开发的核心挑战与解决方案 - TinyUSB架构设计与多协议支持能力解析 -...

gitblog_01100的博客 2529

4. ESP32S3 使用USB 加载SD_SDIO 当作 U盘使用

需要IDF-v4.4的环境,因为后面使用到的tinyusb依赖v4.4将拉取下来的库放到IDF的根目录下。

我的博客都是开放的,CSDN老是会将文章设置成VIP可见,如果有请提醒我关闭 1万+

TinyUSB msc使用

TinyUSB是一个开源的、专为资源受限的嵌入式设备设计的USB堆栈,它支持USB设备和USB主机功能。这个轻量级的堆栈能够跨多种微控制器平台工作,包括但不限于ARM Cortex-M和RISC-V架构。它支持多种USB类标准,如HID、音频、大容量存储等,允许设备扮演键盘、鼠标、音频设备等多种角色。TinyUSB的一个显著特点是将中断处理逻辑从中断服务例程(ISR)转移到非ISR的任务函数中,这不仅简化了中断处理流程,还提高了系统的实时响应能力和线程安全性。

u012936480的博客 1713

esp32s2 tinyusb vendor device小总结

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, bufsize) 写入fifo缓冲 >>maybe_tr..

pcj2007的专栏 3941

[STM32F1] 【每周分享】以stm32f103为例谈谈tinyusb的性能测试与优化

本文介绍了如何使用开源USB协议栈tinyusb在STM32F103C8T6开发板上实现USB CDC回环测试,并优化传输性能。文章首先说明了tinyusb的特点和测试方法,详细描述了基于双CDC端口示例修改为回环测试的实现过程。通过Python脚本测试发现初始性能较低(约64KB/s),作者通过三项优化措施:减少CDC端口数量、将编译优化选项从-Os改为-O2、增大缓冲区大小(从64字节提升到4096字节),最终使传输速率提升至接近理论值(1MB/s)。该案例展示了嵌入式USB性能调优的实用方法,为开发者

ic2121的博客 732

TinyUSB 基本使用

TinyUSB 基本使用

czy8787475的博客 1020

STM32 USB 设备中间件 tinyusb

步骤内容1CubeMX 生成基本工程2引入 TinyUSB 代码3添加 tusb_config.h4main.c中调用5编写描述符、回调函数6CMake 添加 TinyUSB 库很关键的问题!如果你使用中断函数(ISR)是必须配置的,否则 USB 无法正常通信。步骤内容说明中断函数名称中断函数实现调用HAL 中断是否保留?否(TinyUSB 自己处理)NVIC 中断优先级/使能必须启用,优先级可设为 0文件放在。

is0815的博客 1826
上一篇: RT-Thread 4.1.0 特性解析之LIBC与POSIX
下一篇: RT-Thread全球技术大会开放报名啦
RT-Thread物联网操作系统
博客等级 码龄6年 2万+粉丝 392原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值