【STM32F407】第3章 RL-USB协议栈介绍

论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710

第3章   RL-USB协议栈介绍

本章节介绍一下RL-USB协议栈,让大家对RL-USB有一个整体的了解。

目录

第3章   RL-USB协议栈介绍

3.1   初学者重要提示

3.2   RL-USB系统特色

3.3   USB Device资源需求

3.3.1      整体内存需求

3.3.2      系统栈需求

3.3.3      任务栈需求

3.3.4      RTX5定时器组

3.3.5      RTX5信号量

3.4   USB Host资源需求

3.4.1      整体内存需求

3.4.2      系统栈需求

3.4.3      任务栈需求

3.4.4      RTX5定时器组

3.4.5      RTX5信号量

3.4.6      RTX5互斥信号量

3.4.7      注意事项

3.5   RL-USB优势

3.6   总结


3.1   初学者重要提示

  1.   DAPLINK中的USB源码就是采用的RL-USB实现,如果需要源码,可以从DAPLINK中提取:https://github.com/ARMmbed/DAPLink 。

3.2   RL-USB系统特色

【STM32F407】第3章 RL-USB协议栈介绍_第1张图片

  •   RL-USB支持USB Host和USB Device。
  •   RL-USB可以同时管理芯片的多个USB外设。
  •   USB Host支持的类:HID,CDC,MSC,自定义类。
  •   USB Device支持的类:HID,CDC,MSC,ADC和自定义类。
  •   支持多线程和线程安全操作。
  •   通过MDK的RTE开发环境可以一键添加。
  •   使用MDK基于对话框的配置向导,可以很方便的完成MDK的配置。

3.3   USB Device资源需求

3.3.1      整体内存需求

USB Device整体内存需求如下:

【STM32F407】第3章 RL-USB协议栈介绍_第2张图片

3.3.2      系统栈需求

系统栈就是xxx.S启动文件里面定义的Stack大小,以F407为例就是:startup_stm32f407xx.s。在RTX5系统下,主要供中断服务程序的局部变量和中断嵌套使用。由于USB Device要用到USB中断服务程序,且需要最大512字节的RAM。所以大家配置的stack大小要大于512字节:

【STM32F407】第3章 RL-USB协议栈介绍_第3张图片

3.3.3      任务栈需求

RL-USB的Device内核要占用一个任务,然后每创建一个HID类,MSC类,CDC类,ADC类或者自定义类都需要单独占用一个任务。每种类的任务栈需求如下:

【STM32F407】第3章 RL-USB协议栈介绍_第4张图片

注:小写字母n范围1-15,表示例化的类个数,每个例化都要占用一个任务。

3.3.4      RTX5定时器组

使用RL-USB Device的HID类需要使能RTX5的定时器组。

3.3.5      RTX5信号量

每种类需要的信号量数如下:

 【STM32F407】第3章 RL-USB协议栈介绍_第5张图片

注:每个USB端点要用一个信号量。对于自定义类,如果用到了一个输入端点和一个输出端点,那么还需要额外占用两个信号量。

3.4   USB Host资源需求

3.4.1      整体内存需求

USB Host整体内存需求如下:

【STM32F407】第3章 RL-USB协议栈介绍_第6张图片

3.4.2      系统栈需求

系统栈就是xxx.S启动文件里面定义的Stack大小,以F429为了就是:startup_stm32f429xx.s。在RTX5系统下,主要供中断服务程序的局部变量和中断嵌套使用。由于USB Device要用到USB中断服务程序,且需要最大512字节的RAM。所以大家配置的stack大小要大于512字节:

【STM32F407】第3章 RL-USB协议栈介绍_第7张图片

3.4.3      任务栈需求

RL-USB的Host内核要占用一个任务,然后每创建一个HID类,MSC类,CDC类或者自定义类都需要单独占用一个任务。每种类的任务栈需求如下:

【STM32F407】第3章 RL-USB协议栈介绍_第8张图片

注:对于外挂MSC设备,如果同时使用了文件系统RL-FlashFS,那么应用任务最小需要1536字节。另外官方手册没给出MSC类任务的栈需求。

3.4.4      RTX5定时器组

USB Host需要用到RTX5的定时器组。

3.4.5      RTX5信号量

每个例化需要占用一个信号量。

3.4.6      RTX5互斥信号量

每个例化需要占用一个互斥信号量。

3.4.7      注意事项

  •   USB Host的阻塞API操作是通过RTX5的任务间事件标志实现,用到了bit0到bit12,用户的USB Host应用程序不可再使用这几个bit。
  •   如果使用自定义类组件,则用户必须确保同一pipe上的pipe操作不被中断。

3.5   RL-USB优势

RL-USB的最大优势就是简单易用,创建各种类和USB复合设备都可以通过MDK RTE环境一键添加:

 【STM32F407】第3章 RL-USB协议栈介绍_第9张图片

一键添加后,配置也十分方便:

【STM32F407】第3章 RL-USB协议栈介绍_第10张图片

3.6   总结

本章节就为大家讲解这么多,主要目的是想让大家对RL-USB有一个整体的认识,从下一章我们就开始正式的进入RL-USB的学习。

 

你可能感兴趣的:(USB教程,USB,RTX,DAPLINK,CMSIS,STM32)